Pourquoi n'est-ce pas ProjectName-Préfixe.pch créée automatiquement dans Xcode 6?
Pourquoi n'est-ce pas ProjectName-Prefix.pch
créé automatiquement dans Xcode 6
?
Est le précompiler en-tête n'est plus nécessaire ?
Où dois-je écrire le code qui était dans ProjectName-Prefix.pch
avant ?
Vous devez vous connecter pour publier un commentaire.
Je soupçonne en raison de modules, ce qui élimine la nécessité pour le
#import <Cocoa/Cocoa.h>
.Où mettre le code que vous mettez dans un préfixe en-tête, il n'y a pas de code, vous devrez entrer un préfixe en-tête. Mettez votre importations dans les fichiers qui en ont besoin. Mettez vos définitions dans leurs propres fichiers. Mettez vos macros...nulle part. Arrêter d'écrire des macros à moins qu'il n'y a pas d'autre moyen (comme quand vous en avez besoin
__FILE__
). Si vous avez besoin de macros, les mettre dans un en-tête et de l'inclure.Le préfixe en-tête a été nécessaire pour les choses qui sont énormes et utilisé par presque tout dans l'ensemble du système (comme
Foundation.h
). Si vous avez quelque chose d'énorme et omniprésents, vous devez repenser votre architecture. Préfixe en-têtes de rendre la réutilisation du code dur, et d'introduire de subtils problèmes de compilation si l'un des fichiers ci peut changer. Les éviter jusqu'à ce que vous avez un sérieux moment de la construction du problème que vous pouvez démontrer est nettement améliorée avec un préfixe en-tête.Dans ce cas, vous pouvez en créer un et la passer dans clang, mais c'est très rare, que c'est une bonne idée.
EDIT: À votre question précise sur un HUD vous utiliser dans toutes vos contrôleurs de vue, oui, vous devez absolument l'importer dans chaque vue-contrôleur qui en fait l'utilise. Cela rend les dépendances clair. Lorsque vous réutilisez votre point de vue contrôleur dans un nouveau projet (qui est commun, si vous construisez votre contrôleurs de), vous saurez immédiatement ce que cela implique. C'est surtout important pour les catégories, ce qui peut rendre le code très difficile à réutiliser si elles sont implicites.
De la PCH fichier n'est pas là pour se débarrasser de la liste des dépendances. Vous devriez toujours importer
UIKit.h
ouFoundation.h
en tant que de besoin, que la Xcode modèles. La raison de la PCH est d'améliorer les temps de construire lorsqu'ils traitent avec vraiment massive des en-têtes (comme dans UIKit)..pch
fichier propre, mais je suis confus, dans certaines situations, par exemple, j'utiliseSVProgressHUD
, presque tous lesViewController
besoin de l'appeler, donc dois-je importerSVProgressHUD.h
dans tous lesViewController
? ou créer unBaseViewController
et l'importationSVProgressHUD.h
?Category
s ont la même situation. Pourriez-vous me donner une suggestion?TWAPIManager.m
, par exemple, pour un autre projet, vous obtiendrez des erreurs queTWALog()
n'est pas défini, avec aucun indice sur l'endroit où le trouver. J'ai rencontré exactement ce problème sur plusieurs projets d'envergure en essayant de partager du code. La création deTWAPILog.h
et de l'importer résout ce avec trivial dev coût.UIKit
, cependant, que si vous vouliez créer une classe qui implémente l'UITableViewDelegate
protocole? Souhaitez-vous@import UIKit
pour juste que la classe, ou serait-ce un cas nécessaire pour une PCH? Votre réponse, "au besoin", n'est pas vraiment clair.NewRelic
appels dans chaque fichier? Qui semble très étrange. En regardant leurs docs, je ne vois qu'un appel nécessaire à leur bibliothèque (qui est ce que je m'attends). Avez-vous essayé sans passer par la pch?Sans la question de savoir si il est bon ou non, vous pouvez ajouter de la PCH fichier manuellement:
Ajouter de nouveaux PCH fichier au projet: Nouveau fichier > Autres > PCH fichier.
À la Cible Paramètres de construction de la option, définissez la valeur de Préfixe en-Tête à votre PCH nom de fichier, le nom du projet en tant que préfixe (c'est à dire pour un projet nommé
TestProject
et PCH fichier nomméMyPrefixHeaderFile
, ajouter de la valeurTestProject/MyPrefixHeaderFile.pch
à la plist).ASTUCE: Vous pouvez utiliser des choses comme
$(SRCROOT)
ou$(PROJECT_DIR)
pour obtenir le chemin d'accès de l'endroit où vous mettez le.pch
dans le projet.À la Cible Paramètres de construction de la option, définissez la valeur de Précompiler Préfixe en-Tête à
YES
.Vous avez besoin pour créer vos propres PCH fichier
Ajouter
New file -> Other-> PCH file
Puis ajoutez le chemin d'accès de ce fichier PCH de votre construction
setting->prefix header->path
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Je vais vous montrer avec un pic!!!
Ajouter un nouveau Fichier
Aller à Projet/Paramètre de construction/APPl LLVM 6.0 Langue
À ajouter .pch fichier-
1) Ajouter une nouvelle .pch fichier à votre projet->Nouveau fichier->autre->fichier PCH
2) Goto votre projet de construction de réglage.
3) la Recherche "préfixe en-tête". Vous pouvez trouver qu'en vertu de l'Apple LLVM.
4) Collez le dans le champ
$(SRCROOT)/yourPrefixHeaderFileName.pch
5) Nettoyer et de construire le projet.
Ça y est!!!
Si vous décidez d'ajouter un .pch fichier manuellement et que vous voulez utiliser Objective-C, juste avant de xCode 6, vous aurez également à l'importation UIKit et de la Fondation de cadres de dans le .pch fichier. Sinon, vous devrez importer ces cadres manuellement dans chaque fichier d'en-tête. Vous pouvez ajouter le code suivant de toute façon comme il teste la langue utilisée:
Utilisation :
Pour ajouter un nouveau fichier PCH suivre soufflet suit :
(1) Ajouter une Nouvelle fiew - Sélectionnez iOS - Autres et PCH Fichier
(2) ajouter le chemin d'accès de ce fichier PCH à votre Projet - BuildSetting - Apple LLVM 6.0 Langue
Ajouter Définir le Préfixe en-Tête de Chemin Nom_application(root-path)/nom de fichier.pch