wake-up-neo.net

Warum wird ProjectName-Prefix.pch in Xcode 6 nicht automatisch erstellt?

Warum ist nicht ProjectName-Prefix.pch automatisch erstellt in Xcode 6?

Wird der Vorkompilierungsheader nicht mehr benötigt?

Wo soll ich den Code schreiben, der in ProjectName-Prefix.pch Vor ?

261
Wei

Ich vermute wegen Modulen, die den #import <Cocoa/Cocoa.h> Überflüssig machen.

In Bezug auf die Position des Codes, den Sie in einen Präfix-Header einfügen würden, sollte kein Code in einen Präfix-Header eingefügt werden. Legen Sie Ihre Importe in die Dateien, die sie benötigen. Fügen Sie Ihre Definitionen in ihre eigenen Dateien ein. Legen Sie Ihre Makros ... nirgendwo hin. Hören Sie auf, Makros zu schreiben, es sei denn, es gibt keine andere Möglichkeit (z. B. wenn Sie __FILE__ Benötigen). Wenn Sie Makros benötigen, fügen Sie diese in eine Kopfzeile ein und fügen Sie sie ein.

Der Präfix-Header wurde für Dinge benötigt, die riesig sind und von fast allen im gesamten System verwendet werden (wie Foundation.h). Wenn Sie etwas haben, das so groß und allgegenwärtig ist, sollten Sie Ihre Architektur überdenken. Präfix-Header erschweren die Wiederverwendung von Code und führen zu geringfügigen Build-Problemen, wenn sich eine der aufgelisteten Dateien ändern kann. Vermeiden Sie sie, bis Sie ein ernstes Problem mit der Erstellungszeit haben, das sich durch einen Präfix-Header dramatisch verbessert.

In diesem Fall können Sie eine erstellen und diese an Clang übergeben, aber es ist unglaublich selten, dass dies eine gute Idee ist.


BEARBEITEN: Auf Ihre spezifische Frage zu einem HUD, das Sie in all Ihren View Controllern verwenden, sollten Sie es unbedingt in jeden View Controller importieren, der es tatsächlich verwendet. Dies macht die Abhängigkeiten deutlich. Wenn Sie Ihren View Controller in einem neuen Projekt wiederverwenden (was häufig der Fall ist, wenn Sie Ihre Controller gut erstellen), wissen Sie sofort, was erforderlich ist. Dies ist besonders wichtig für Kategorien, die die Wiederverwendung von Code erschweren können, wenn sie implizit sind.

Die PCH-Datei ist nicht dazu da, Listenabhängigkeiten zu beseitigen. Sie sollten nach Bedarf weiterhin UIKit.h Oder Foundation.h Importieren, wie dies bei den Xcode-Vorlagen der Fall ist. Der Grund für den PCH ist die Verbesserung der Erstellungszeiten bei sehr umfangreichen Headern (wie in UIKit).

135
Rob Napier

Ohne die Frage, ob es richtig ist oder nicht, können Sie die PCH-Datei manuell hinzufügen:

  1. Fügen Sie dem Projekt eine neue PCH-Datei hinzu: Neue Datei> Andere> PCH-Datei.

  2. Setzen Sie bei der Option Build Settings des Ziels den Wert Prefix Header auf Ihren PCH-Dateinamen, wobei der Projektname als Präfix verwendet wird (dh für das Projekt mit dem Namen TestProject und PCH-Datei mit dem Namen MyPrefixHeaderFile, fügen Sie den Wert TestProject/MyPrefixHeaderFile.pch zur Liste hinzu).

    TIPP: Sie können Dinge wie $(SRCROOT) oder $(PROJECT_DIR) verwenden, um zu dem Pfad zu gelangen, in dem Sie den .pch Im Projekt abgelegt haben.

  3. Setzen Sie bei der Option Build Settings des Ziels den Wert Precompile Prefix Header auf YES.

425
Yedidya Reiss

Sie müssen eine eigene PCH-Datei erstellen
Addiere New file -> Other-> PCH file

Fügen Sie dann den Pfad dieser PCH-Datei zu Ihrem Build hinzu setting->prefix header->path

($ (SRCROOT) /Dateiname.pch)

enter image description here

126
Prakash Raj

Ich zeige es dir mit einem Bild!

  1. Neue Datei hinzufügen Add a new File

  2. Wechseln Sie zu Projekt/Build-Einstellung/APPl LLVM 6.0-Sprache Add a new File

51
Slemon

So fügen Sie eine .pch-Datei hinzu:

1) Fügen Sie Ihrem Projekt eine neue .pch-Datei hinzu-> Neue Datei-> Andere-> PCH-Datei

2) Wechseln Sie zur Build-Einstellung Ihres Projekts.

3) Suchen Sie nach "Präfix-Header". Sie finden das unter Apple LLVM.

4) Fügen Sie dies in das Feld $(SRCROOT)/yourPrefixHeaderFileName.pch ein

5) Bereinigen und erstellen Sie das Projekt. Das ist es!!!

enter image description here

23
Subham93

Wenn Sie eine .pch-Datei manuell hinzufügen und Objective-C genau wie vor xCode 6 verwenden möchten, müssen Sie auch UIKit- und Foundation-Frameworks in die .pch-Datei importieren. Andernfalls müssen Sie diese Frameworks manuell in jede Header-Datei importieren. Sie können den folgenden Code trotzdem hinzufügen, während die verwendete Sprache getestet wird:

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

Verwenden :

$ (PROJECT_DIR)/Projektname/PrefixHeader.pch

7

Um eine neue PCH-Datei hinzuzufügen, gehen Sie wie folgt vor:

(1) Neue Ansicht hinzufügen - Wählen Sie iOS - Andere und PCH-Datei

(2) Fügen Sie den Pfad dieser PCH-Datei zu Ihrem Projekt hinzu - BuildSetting - Apple LLVM 6.0 Language

Fügen Sie Set Prefix Header Path hinzu YourApplicationName (root-path) /filename.pch

7
Hitesh Vaghela