Je me demande ce qui décide si vous êtes autorisé à utiliser <Header.h>
ou "Header.h"
lorsque vous importez des fichiers dans Objective-C. Jusqu'à présent, mon observation a été que vous utilisez les guillemets ""
pour les fichiers de votre projet sur lesquels vous avez la source d'implémentation et les crochets <>
lorsque vous faites référence à une bibliothèque ou à un framework.
Mais comment cela fonctionne-t-il exactement? Que dois-je faire pour que mes propres classes utilisent les parenthèses? Pour le moment, Xcode ne me permettra pas de faire cela pour mes propres en-têtes.
De plus, en regardant dans certains en-têtes de frameworks, je vois que les en-têtes se référencent entre eux <frameworkname/file.h>
. Comment ça marche? Cela ressemble beaucoup à des packages en Java, mais pour autant que je sache, il n'existe pas de package en Objective-C.
la source
En C, la convention est que les fichiers d'en-tête entre
<>
crochets sont recherchés dans les répertoires «système» et""
dans les répertoires utilisateur ou locaux.La définition du système et du local est un peu vague, je suppose. Je crois qu'il regarde dans les répertoires système dans include path ou dans CPPFLAGS pour <header.h>, et le répertoire local ou le répertoire spécifié avec -I au compilateur sont recherchés pour les fichiers "header.h".
Je suppose que cela fonctionne de la même manière pour Objective-C.
la source
Pour importer vos propres classes en utilisant "<>", vous devez placer les fichiers d'en-tête (* .h) dans le dossier lib du compilateur ou définir un pontage VARIABLES SYSTÈME vers votre dossier lib.
la source
Ou définissez-le
Always Search User Path
surYES
pour pouvoir utiliser des crochets angulaires.la source
Avec des chevrons, par exemple,
<Foundation/Foundation.h>
vous importez des fichiers système.Vous utilisez des guillemets doubles
"Person.h"
pour importer des fichiers locaux (fichiers que vous avez créés) et pour indiquer au compilateur où les rechercher.la source
<Name.h>
-Angle brackets
dit au préprocesseur de rechercher dans les répertoires spéciaux d' un système pré-désigné. Par exemple, vous importez des en-têtes de systèmes comme<UIKit/UIKit.h>
ou des frameworks ajoutés"Name.h"
-Quotation marks
dit au préprocesseur de rechercher dans un répertoire courant . Si un en-tête n'a pas été trouvé, le préprocesseur essaie de l'utiliser<Name.h>
. Vous devez généralement l'utiliser avec les fichiers de votre projetla source
Je viens de tomber sur le même problème, il existe 2 types de chemins de recherche est Xcode:
Si vous ajoutez vos propres dossiers d'inclusion dans les chemins de recherche d'en-tête, vous pouvez utiliser des crochets inclinés sans aucun problème.
la source
QU'EST-CE QUE LE FICHIER EN-TÊTE? Les fichiers d'en-tête contiennent des définitions de fonctions et de variables qui peuvent être incorporées dans n'importe quel programme C à l'aide de l'instruction #include du pré-processeur. Les fichiers d'en-tête standard sont fournis avec chaque compilateur et couvrent une gamme de domaines, la gestion des chaînes, les mathématiques, la conversion de données, l'impression et la lecture de variables. Ex- #include, il contient les informations sur l'entrée comme scanf (), et out mis comme la fonction printf () et etc. dans un compilateur.
COMPRENDRE
1) #INCLUDE: - C'est un pré-processeur qui traite avant le processus de la fonction principale. Le travail principal du pré-processeur est d'initialiser l'environnement du programme c'est-à-dire le programme avec le fichier d'en-tête. 2) .h: - (Fichier d'en-tête) Un fichier d'en-tête est un fichier avec l'extension .h qui contient des déclarations de fonction C et des définitions de macro et à partager entre plusieurs fichiers source. Q) Il existe deux types de fichiers d'en-tête: les fichiers que le programmeur écrit et les fichiers fournis avec votre compilateur? A) Dans les crochets angulaires La forme des crochets angulaires est pour les inclusions "globales" - celles trouvées quelque part sur le chemin d'inclusion passé au compilateur (par exemple #include). Elle est utilisée pour l'utilisation de la fonction de bibliothèque qui est prête à être définie dans le compilateur. En C, la convention est que les fichiers d'en-tête entre crochets <> sont recherchés dans 'système' répertoires B) guillemets: - La forme entre guillemets «header.h» est pour les inclusions «locales» de fichiers (vous devez spécifier le chemin relatif du fichier courant, par exemple #include "headers / my_header.h") En C la convention est que les fichiers d'en-tête de "" sont recherchés dans les répertoires utilisateur ou locaux. Dans celui-ci un fichier à inclure dans un autre (INCLUSION DE FICHIERS). Il peut être utilisé dans deux cas: Cas 1: Si nous avons un programme très volumineux, le code est mieux divisé en plusieurs fichiers différents, chacun contenant un ensemble de fonctions associées. Cas 2: Il y a certaines fonctions et définitions de micros dont nous avons tout au plus besoin dans tous les programmes que nous écrivons. Ex ) En C, la convention est que les fichiers d'en-tête de "" sont recherchés dans les répertoires utilisateur ou local. Dans celui-ci un fichier à inclure dans un autre (INCLUSION DE FICHIERS). Il peut être utilisé dans deux cas: Cas 1: Si nous avons un programme très volumineux, le code est mieux divisé en plusieurs fichiers différents, chacun contenant un ensemble de fonctions associées. Cas 2: Il y a certaines fonctions et définitions de micros dont nous avons tout au plus besoin dans tous les programmes que nous écrivons. Ex ) En C, la convention est que les fichiers d'en-tête de "" sont recherchés dans les répertoires utilisateur ou local. Dans celui-ci un fichier à inclure dans un autre (INCLUSION DE FICHIERS). Il peut être utilisé dans deux cas: Cas 1: Si nous avons un programme très volumineux, le code est mieux divisé en plusieurs fichiers différents, chacun contenant un ensemble de fonctions associées. Cas 2: Il y a certaines fonctions et définitions de micros dont nous avons tout au plus besoin dans tous les programmes que nous écrivons. Ex
la source