Estou me perguntando o que decide se você tem permissão para usar <Header.h>
ou "Header.h"
quando você está importando arquivos em Objective-C. Até agora, minha observação foi que você usa aspas ""
para arquivos em seu projeto para os quais você obteve a fonte de implementação e colchetes <>
quando está fazendo referência a uma biblioteca ou estrutura.
Mas como, exatamente, é que isso funciona? O que eu teria que fazer para que minhas próprias classes usassem os colchetes? No momento, o Xcode não me permite fazer isso com meus próprios cabeçalhos.
Além disso, olhando em alguns cabeçalhos de frameworks, vejo que os cabeçalhos fazem referência uns aos outros com <frameworkname/file.h>
. Como isso funciona? Parece muito com pacotes em Java, mas até onde eu sei, não existe um pacote em Objective-C.
fonte
Em C, a convenção é que os arquivos de cabeçalho entre
<>
colchetes são pesquisados nos diretórios do 'sistema' e""
nos diretórios do usuário ou locais.A definição de sistema e local é um pouco vaga, eu acho. Acredito que ele procure nos diretórios do sistema em incluir caminho ou em CPPFLAGS por <header.h>, e o diretório local ou o diretório especificado com -I para o compilador são pesquisados por arquivos "header.h".
Presumo que funcione de forma semelhante para Objective-C.
fonte
Para importar suas próprias classes usando "<>" você deve colocar os arquivos de cabeçalho (* .h) na pasta lib do compilador ou definir um ponto de SYSTEM VARIABLES para sua pasta lib.
fonte
Ou defina
Always Search User Path
comoYES
para que você possa usar colchetes angulares.fonte
Com colchetes angulares, por exemplo,
<Foundation/Foundation.h>
você importa arquivos de sistema.Use aspas duplas
"Person.h"
para importar arquivos locais (arquivos que você criou) e para dizer ao compilador onde procurá-los.fonte
<Name.h>
-Angle brackets
diz ao pré-processador para pesquisar nos diretórios de um sistema pré-designado especial . Por exemplo, você importa cabeçalhos de sistemas como<UIKit/UIKit.h>
ou estruturas adicionadas"Name.h"
-Quotation marks
diz ao pré-processador para pesquisar em um diretório atual . Se um cabeçalho não for encontrado, o pré-processador tenta usá-lo<Name.h>
. Normalmente você deve usá-lo com os arquivos do seu projetofonte
Acabei de topar com o mesmo problema, existem 2 tipos de caminhos de pesquisa no Xcode:
Se você adicionar suas próprias pastas de inclusão em Caminhos de pesquisa de cabeçalho, poderá usar colchetes angulares sem nenhum problema.
fonte
O QUE É HEADER FILE? Os arquivos de cabeçalho contêm definições de funções e variáveis que podem ser incorporadas a qualquer programa C usando a instrução #include do pré-processador. Arquivos de cabeçalho padrão são fornecidos com cada compilador e cobrem uma variedade de áreas, manuseio de strings, matemática, conversão de dados, impressão e leitura de variáveis. Ex- #include contém as informações sobre entrada como scanf () e saída como função printf () e etc em um compilador.
INCLUIR
1) #INCLUDE: - É um pré-processador que processa antes do processo da função principal. O principal trabalho do pré-processador é inicializar o ambiente do programa, isto é, o programa com o arquivo de cabeçalho. 2) .h: - (Arquivo de cabeçalho) Um arquivo de cabeçalho é um arquivo com extensão .h que contém declarações de funções C e definições de macro e deve ser compartilhado entre vários arquivos de origem. Q) Existem dois tipos de arquivos de cabeçalho: os arquivos que o programador grava e os arquivos que vêm com o seu compilador? A) Em colchetes angulares A forma de colchetes angulares é para inclusões "globais" - aquelas encontradas em algum lugar no caminho de inclusão passado para o compilador (por exemplo, #include). É usado para usar a função de biblioteca que está pronta para ser definida no compilador. Em C, a convenção é que os arquivos de cabeçalho entre <> colchetes são pesquisados em 'sistema' diretórios B) Aspas: - a forma de aspas “header.h” é para inclusões "locais" de arquivos (você precisa especificar o caminho relativo do arquivo atual, por exemplo, #include "headers / my_header.h") Em C, a convenção é que os arquivos de cabeçalho em "" são pesquisados nos diretórios do usuário ou locais. Nele um arquivo para ser incluído em outro. (INCLUSÃO DE ARQUIVOS). Pode ser usado em dois casos: Caso 1: se tivermos um programa muito grande, o código será melhor dividido em vários arquivos diferentes, cada um contendo um conjunto de funções relacionadas. Caso 2: Existem algumas funções e definições de micros que precisamos no máximo em todos os programas que escrevemos. Ex ) Em C, a convenção é que os arquivos de cabeçalho em "" são pesquisados nos diretórios do usuário ou locais. Nele um arquivo para ser incluído em outro. (INCLUSÃO DE ARQUIVOS). Pode ser usado em dois casos: Caso 1: se tivermos um programa muito grande, o código será melhor dividido em vários arquivos diferentes, cada um contendo um conjunto de funções relacionadas. Caso 2: Existem algumas funções e definições de micros que precisamos no máximo em todos os programas que escrevemos. Ex ) Em C, a convenção é que os arquivos de cabeçalho em "" são pesquisados nos diretórios do usuário ou locais. Nele um arquivo para ser incluído em outro. (INCLUSÃO DE ARQUIVOS). Pode ser usado em dois casos: Caso 1: se tivermos um programa muito grande, o código será melhor dividido em vários arquivos diferentes, cada um contendo um conjunto de funções relacionadas. Caso 2: Existem algumas funções e definições de micros que precisamos no máximo em todos os programas que escrevemos. Ex
fonte