Was ist die Datei Prefix.pch in Xcode?

100

So viele Entwickler fügen dem verschiedene verschiedene Komfortmakros hinzu Prefix.pch. Aber meine Frage ist, was ist diese Prefix.pchDatei.

  • Wenn ich diese Prefix.pchDatei von meiner entferne, Xcodewird meine Anwendung dann ausgeführt? Oder wird ein Fehler angezeigt? Oder wird es während des Builds abstürzen?

  • Wie kann ich meine Anwendung ohne Prefix.pchDatei ausführen ?

SR Nayak
quelle

Antworten:

117

Vorkompilierter Header.

Was ist es?

A Prefix.pchist ein vorkompilierter Header. Vorkompilierte Header wurden erfunden , um das Kompilieren zu beschleunigen . Anstatt immer wieder dieselben Header-Dateien zu analysieren, werden diese Dateien vorab einmal analysiert.

Xcode

In Xcode fügen Sie Importe der gewünschten Header-Dateien in einen „Präfix-Header“ ein und aktivieren Precompile Prefix Headerdiese, damit sie vorkompiliert werden. Die Idee hinter einem Präfix-Header unterscheidet sich jedoch von der Vorkompilierung.

Ein Präfix-Header ist implizit am Anfang jeder Quelldatei enthalten. Es ist, als würde jede Quelldatei hinzugefügt

#import "Prefix.pch"

am Anfang der Datei, vor allem anderen.

Entfernen Sie es.

Sie können den vorkompilierten Header entfernen. Diese Frage wurde bereits in dem Thread beantwortet, den ich unten verlinke. Es enthält alle Informationen, die Sie benötigen, sowie nützliche Kommentare.

Ist es in Ordnung, die Datei Prefix.pch aus dem Xcode-Projekt zu entfernen?

RaffAl
quelle
24

Was ist die Datei Prefix.pch?

Ein .pch ist ein vorkompilierter Header.

In den Programmiersprachen C und C ++ ist eine Header-Datei eine Datei, deren Text vom C-Präprozessor automatisch in eine andere Quelldatei aufgenommen werden kann. Dies wird normalerweise durch die Verwendung von Compiler-Anweisungen in der Quelldatei angegeben.

Präfix-Header werden kompiliert und in einem Cache gespeichert und dann während der Kompilierung automatisch in jede Datei aufgenommen. Dies kann die Kompilierung beschleunigen und Sie können eine Datei einfügen, ohne jeder Datei, die sie verwendet, eine Importanweisung hinzuzufügen. Sie sind nicht erforderlich und verlangsamen die Kompilierung, wenn Sie sie ändern.

Ja, Sie können das Projekt ohne .pch-Datei kompilieren und ausführen

Wechseln Sie in Xcode zu den Build-Einstellungen Ihres Ziels (Befehl-Option-E, Registerkarte Build) und deaktivieren Sie das Präkompilierungs-Präfix-Header (GCC_PRECOMPILE_PREFIX_HEADER). Sie können den Wert der Einstellung Präfix-Header auch entfernen, wenn Sie dies wünschen.

Beachten Sie auch, dass

Fügen Sie keine Makros in eine a.pch-Datei ein! Eine .pch-Datei ist per Definition ein projektspezifischer vorkompilierter Header. Es sollte wirklich nicht über den Kontext des Projekts hinaus verwendet werden und es sollte wirklich nichts anderes enthalten als #includes und #imports.

Wenn Sie einige Makros haben und solche, die Sie zwischen Headern teilen möchten, stecken Sie sie in eine eigene Header-Datei - Common.h oder was auch immer - und # schließen Sie diese am Anfang der .pch ein

Hemang
quelle
Bitte erwägen Sie, einen Kommentar hinzuzufügen, um den Grund für die Ablehnung dieser alten Quest anzugeben.
Hemang
7

Präfix-Header werden kompiliert und in einem Cache gespeichert und dann während der Kompilierung automatisch in jede Datei aufgenommen. Dies kann die Kompilierung beschleunigen und Sie können eine Datei einfügen, ohne jeder Datei, die sie verwendet, eine Importanweisung hinzuzufügen. Sie sind nicht erforderlich und verlangsamen die Kompilierung, wenn Sie sie ändern.

Im Allgemeinen .pchist die Bildung von DateinamenyourProjectName-Prefix.pch

iPatel
quelle
1

Geschichte:

#include => #import => .pch

#include vs #import

Vorkompilierte Header - prefix.pch

#includevs @importhat einen Nachteil - langsame Erstellungszeit, da ein Compiler so oft analysieren und kompilieren muss, wie viele .hDateien importiert wurden.

Precompiled header file - .pch- sammelt die gemeinsamen Header. Wenn diese Datei vorkompiliert ist, kann sie in Quelldateien verwendet werden, was die Erstellungszeit verkürzt.

Schauen wir uns das Prefix.pchBeispiel an:

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

Um eine .pchDatei hinzuzufügen , gehen Sie zu Build Settings:

Geben Sie hier die Bildbeschreibung ein

Entwickler müssen .pchDateien verwalten , die zusätzliche Kosten für die Unterstützung verursachen.

Der nächste Schritt ist @import[Über]

yoAlex5
quelle