Pourquoi n'est-il pas ProjectName-Prefix.pch
créé automatiquement dans Xcode 6
?
L'en-tête de précompilation n'est-il plus nécessaire?
Où dois-je écrire le code qui était ProjectName-Prefix.pch
auparavant?
Je soupçonne à cause des modules, qui suppriment le besoin de #import <Cocoa/Cocoa.h>
.
Quant à savoir où mettre le code que vous mettriez dans un en-tête de préfixe, il n'y a pas de code que vous devez mettre dans un en-tête de préfixe. Mettez vos importations dans les fichiers qui en ont besoin. Mettez vos définitions dans leurs propres fichiers. Mettez vos macros ... nulle part. Arrêtez d'écrire des macros, sauf s'il n'y a pas d'autre moyen (comme lorsque vous en avez besoin __FILE__
). Si vous avez besoin de macros, mettez-les dans un en-tête et incluez-les.
L'en-tête du préfixe était nécessaire pour les choses qui sont énormes et utilisées par presque tout dans le système entier (comme Foundation.h
). Si vous avez quelque chose d'énorme et d'omniprésent, vous devriez repenser votre architecture. Les en-têtes de préfixe rendent la réutilisation du code difficile et introduisent des problèmes de construction subtils si l'un des fichiers répertoriés peut changer. Évitez-les jusqu'à ce que vous ayez un sérieux problème de temps de construction dont vous pouvez démontrer qu'il est considérablement amélioré avec un en-tête de préfixe.
Dans ce cas, vous pouvez en créer un et le passer en clang, mais il est incroyablement rare que ce soit une bonne idée.
EDIT: Pour votre question spécifique sur un HUD que vous utilisez dans tous vos contrôleurs de vue, oui, vous devez absolument l'importer dans chaque contrôleur de vue qui l'utilise réellement. Cela rend les dépendances claires. Lorsque vous réutilisez votre contrôleur de vue dans un nouveau projet (ce qui est courant si vous construisez bien vos contrôleurs), vous saurez immédiatement ce dont il a besoin. Ceci est particulièrement important pour les catégories, qui peuvent rendre le code très difficile à réutiliser si elles sont implicites.
Le fichier PCH n'est pas là pour se débarrasser des dépendances de listage. Vous devez toujours importer UIKit.h
ou Foundation.h
selon les besoins, comme le font les modèles Xcode. La raison pour laquelle le PCH est d'améliorer les temps de construction lorsqu'il s'agit d'en-têtes vraiment massifs (comme dans UIKit).
TWAPIManager.m
, par exemple, vers un autre projet, vous obtiendrez des erreurs quiTWALog()
ne sont pas définies, sans aucune indication sur l'endroit où le trouver. J'ai rencontré exactement ce problème sur plusieurs grands projets essayant de partager du code. Sa créationTWAPILog.h
et son importation résout ce problème avec un coût de développement insignifiant.Sans vous demander s'il est approprié ou non, vous pouvez ajouter manuellement un fichier PCH:
Ajoutez un nouveau fichier PCH au projet: Nouveau fichier> Autre> Fichier PCH .
À l' option Paramètres de construction de la cible , définissez la valeur de l'en- tête de préfixe sur le nom de votre fichier PCH, avec le nom du projet comme préfixe (c'est-à-dire pour le projet nommé
TestProject
et le fichier PCH nomméMyPrefixHeaderFile
, ajoutez la valeurTestProject/MyPrefixHeaderFile.pch
à la liste).CONSEIL: Vous pouvez utiliser des choses comme
$(SRCROOT)
ou$(PROJECT_DIR)
pour accéder au chemin où vous placez le.pch
dans le projet.Dans l' option Paramètres de construction de la cible , définissez la valeur de l'en- tête de préfixe de précompilation sur
YES
.la source
Vous devez créer votre propre fichier PCH
Ajouter
New file -> Other-> PCH file
Ajoutez ensuite le chemin de ce fichier PCH à votre build
setting->prefix header->path
la source
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Je vais vous montrer avec une photo!
Ajouter un nouveau fichier
Allez dans Project / Build Setting / APPl LLVM 6.0-Language
la source
Pour ajouter un fichier .pch-
1) Ajoutez un nouveau fichier .pch à votre projet-> Nouveau fichier-> autre-> Fichier PCH
2) Accédez au paramètre de construction de votre projet.
3) Recherchez "en-tête de préfixe". Vous pouvez le trouver sous Apple LLVM.
4) Collez ceci dans le champ
$(SRCROOT)/yourPrefixHeaderFileName.pch
5) Nettoyez et construisez le projet. C'est tout!!!
la source
Si vous décidez d'ajouter manuellement un fichier .pch et que vous souhaitez utiliser Objective-C comme avant xCode 6, vous devrez également importer les frameworks UIKit et Foundation dans le fichier .pch. Sinon, vous devrez importer ces frameworks manuellement dans chaque fichier d'en-tête. Vous pouvez quand même ajouter le code suivant pendant qu'il teste la langue utilisée:
la source
Utilisation :
la source
Pour ajouter un nouveau fichier PCH, suivez les étapes ci-dessous:
(1) Ajouter une nouvelle vue - Sélectionnez iOS - Autre et fichier PCH
(2) ajouter le chemin de ce fichier PCH à votre projet - BuildSetting - Apple LLVM 6.0 Language
Ajouter un chemin d'en-tête de préfixe défini YourApplicationName (root-path) /filename.pch
la source