Antworten:
Ich vermute wegen Modulen, die die Notwendigkeit für die beseitigen #import <Cocoa/Cocoa.h>
.
In Bezug darauf, wo Code eingefügt werden soll, den Sie in einen Präfix-Header einfügen würden, gibt es keinen Code, den Sie in einen Präfix-Header einfügen sollten. Fügen Sie Ihre Importe in die Dateien ein, die sie benötigen. Fügen Sie Ihre Definitionen in ihre eigenen Dateien ein. Platziere deine Makros ... nirgendwo. Hören Sie auf, Makros zu schreiben, es sei denn, es gibt keinen anderen Weg (z. B. bei Bedarf)__FILE__
). Wenn Sie Makros benötigen, fügen Sie diese in eine Kopfzeile ein und fügen Sie sie ein.
Der Präfix-Header war für Dinge erforderlich, die riesig sind und von fast allem im gesamten System verwendet werden (z 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 subtilen Build-Problemen, wenn sich eine der aufgelisteten Dateien ändern kann. Vermeiden Sie sie, bis Sie ein ernstes Problem mit der Erstellungszeit haben, von dem Sie nachweisen können, dass es durch einen Präfix-Header erheblich verbessert wird.
In diesem Fall können Sie eine erstellen und in Clang übergeben, aber es ist unglaublich selten, dass dies eine gute Idee ist.
BEARBEITEN: Auf Ihre spezielle 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 klar. 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 sehr schwierig machen können, wenn sie implizit sind.
Die PCH-Datei ist nicht dazu da, Abhängigkeiten aufzulisten. Sie sollten weiterhin importieren UIKit.h
oder Foundation.h
nach Bedarf, wie es die Xcode-Vorlagen tun. Der Grund für den PCH ist die Verbesserung der Build-Zeiten beim Umgang mit wirklich massiven Headern (wie in UIKit).
TWAPIManager.m
, in ein anderes Projekt zu kopieren , werden Fehler angezeigt, TWALog()
die nicht definiert sind und keinen Hinweis darauf enthalten, wo sie zu finden sind. Ich habe genau dieses Problem bei mehreren großen Projekten festgestellt, die versucht haben, Code gemeinsam zu nutzen. Das Erstellen TWAPILog.h
und Importieren löst dies mit geringfügigen Entwicklungskosten.
Ohne die Frage, ob es richtig ist oder nicht, können Sie die PCH-Datei manuell hinzufügen:
Fügen Sie dem Projekt eine neue PCH-Datei hinzu: Neue Datei> Andere> PCH-Datei .
Zu dem wichtigsten Ziel Build - Einstellungen Option, den Wert der Präfix - Header auf Ihren PCH Dateinamen, mit dem Projektnamen als Präfix (dh für Projekt mit dem Namen TestProject
und PCH Datei mit dem Namen MyPrefixHeaderFile
, fügen Sie den Wert TestProject/MyPrefixHeaderFile.pch
in die plist).
TIPP: Sie können Dinge wie $(SRCROOT)
oder verwenden $(PROJECT_DIR)
, um zu dem Pfad zu gelangen, in den Sie .pch
das Projekt eingefügt haben.
Zu dem wichtigsten Ziel Build - Einstellungen Option, den Wert von Precompile Präfix - Header zu YES
.
Sie müssen eine eigene PCH-Datei
hinzufügenNew file -> Other-> PCH file
Fügen Sie dann den Pfad dieser PCH-Datei zu Ihrem Build hinzu setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
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 ein $(SRCROOT)/yourPrefixHeaderFileName.pch
5) Reinigen und bauen Sie das Projekt. Das ist es!!!
Wenn Sie eine .pch-Datei manuell hinzufügen möchten und Objective-C 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, wenn er die verwendete Sprache testet:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Verwenden :
$ (PROJECT_DIR) / Projektname / PrefixHeader.pch
Führen Sie die folgenden Schritte aus, um eine neue PCH-Datei hinzuzufügen:
(1) Neue Ansicht hinzufügen - Wählen Sie iOS - Andere und PCH-Datei
(2) Fügen Sie den Pfad dieser PCH-Datei zu Ihrer Project - BuildSetting - Apple LLVM 6.0-Sprache hinzu
Add Set Prefix Header Path YourApplicationName (Root-Pfad) /filename.pch