Qu'est-ce que le fichier Prefix.pch dans Xcode?

100

Tant de développeurs ajoutent diverses macros pratiques au Prefix.pch. Mais ma question est de savoir quel est ce Prefix.pchfichier.

  • Si je supprime ce Prefix.pchfichier de mon Xcode, mon application s'exécutera-t-elle? Ou montrera-t-il une erreur? Ou va-t-il planter pendant la construction?

  • Comment puis-je exécuter mon application sans Prefix.pchfichier

SR Nayak
la source

Réponses:

117

En-tête précompilé.

Qu'Est-ce que c'est?

A Prefix.pchest un en-tête précompilé. Les en-têtes précompilés ont été inventés pour accélérer la compilation . Plutôt que d'analyser les mêmes fichiers d'en-tête encore et encore, ces fichiers sont analysés une fois, à l'avance.

Xcode

Dans Xcode, vous ajoutez les importations des fichiers d'en-tête que vous souhaitez dans un «en-tête de préfixe», et en les activant Precompile Prefix Headerpour qu'ils soient précompilés. Mais l'idée derrière un en-tête de préfixe est différente de la précompilation.

Un en-tête de préfixe est implicitement inclus au début de chaque fichier source. C'est comme si chaque fichier source ajoute

#import "Prefix.pch"

en haut du fichier, avant toute autre chose.

Enlevez-le.

Vous pouvez supprimer l'en-tête précompilé. Cette question a déjà reçu une réponse dans le fil de discussion que je lie ci-dessous. Il contient toutes les informations dont vous avez besoin ainsi que des commentaires utiles.

Est-il possible de supprimer le fichier Prefix.pch du projet Xcode?

RaffAl
la source
24

Qu'est-ce que le fichier Prefix.pch?

Un .pch est un en-tête pré-compilé.

Dans les langages de programmation C et C ++, un fichier d'en-tête est un fichier dont le texte peut être automatiquement inclus dans un autre fichier source par le préprocesseur C, généralement spécifié par l'utilisation des directives du compilateur dans le fichier source.

Les en-têtes de préfixe sont compilés et stockés dans un cache, puis automatiquement inclus dans chaque fichier lors de la compilation. Cela peut accélérer la compilation et vous permet d'inclure un fichier sans ajouter une instruction d'importation à chaque fichier qui l'utilise. Ils ne sont pas obligatoires et ralentissent la compilation chaque fois que vous les modifiez.

Oui, vous pouvez compiler et exécuter le projet sans fichier .pch

Dans Xcode, accédez aux paramètres de construction de votre cible (Commande-Option-E, onglet de construction) et décochez Precompile Prefix Header (GCC_PRECOMPILE_PREFIX_HEADER). Vous pouvez également supprimer la valeur du paramètre En-tête de préfixe si vous le souhaitez.

Notez également que,

Ne mettez pas de macros dans un fichier.pch! Un fichier .pch est, par définition, un en-tête précompilé spécifique au projet. Il ne devrait vraiment pas être utilisé au-delà du contexte du projet et il ne devrait vraiment contenir rien d'autre que #includes et #imports.

Si vous avez des macros et que vous souhaitez partager entre les en-têtes, alors collez-les dans un fichier d'en-tête qui leur est propre - Common.h ou autre - et #incluez cela au début du .pch

Hemang
la source
Pensez à ajouter un commentaire pour indiquer la raison du vote négatif pour cette ancienne quête.
Hemang
7

Les en-têtes de préfixe sont compilés et stockés dans un cache, puis automatiquement inclus dans chaque fichier lors de la compilation. Cela peut accélérer la compilation et vous permet d'inclure un fichier sans ajouter une instruction d'importation à chaque fichier qui l'utilise. Ils ne sont pas obligatoires et ralentissent la compilation chaque fois que vous les modifiez.

Généralement .pch, la formation des noms de fichiers estyourProjectName-Prefix.pch

iPatel
la source
1

L'histoire:

#include => #import => .pch

#include vs #import

En-têtes précompilés - prefix.pch

#includevs @importa un inconvénient - un temps de construction lent car un compilateur doit analyser et compiler autant de fois que de .hfichiers importés.

Precompiled header file - .pch- rassemble les en-têtes communs. Lorsque ce fichier est précompilé, il peut être utilisé dans les fichiers source, ce qui accélère le temps de construction.

Jetons un coup d'œil à l' Prefix.pchexemple:

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif

Pour ajouter un .pchfichier, accédez à Build Settings:

entrez la description de l'image ici

Le développeur doit gérer le .pchfichier qui impose des coûts supplémentaires pour le prendre en charge.

La prochaine étape est @import[À propos]

yoAlex5
la source