Risposte:
Ho il sospetto a causa dei moduli, che rimuovono la necessità di #import <Cocoa/Cocoa.h>
.
Per quanto riguarda dove inserire il codice da inserire in un'intestazione prefisso, non è necessario inserire un codice in un'intestazione prefisso. Inserisci le tue importazioni nei file che ne hanno bisogno. Inserisci le tue definizioni nei loro file. Metti le tue macro ... da nessuna parte. Smetti di scrivere macro se non c'è altro modo (come quando ne hai bisogno __FILE__
). Se hai bisogno di macro, inseriscile in un'intestazione e includila.
L'intestazione del prefisso era necessaria per cose enormi e usate da quasi tutto in tutto il sistema (come Foundation.h
). Se hai qualcosa di così enorme e onnipresente, dovresti ripensare la tua architettura. Le intestazioni dei prefissi rendono difficile il riutilizzo del codice e introducono sottili problemi di build se uno qualsiasi dei file elencati può cambiare. Evitali fino a quando non hai un grave problema di tempo di costruzione che puoi dimostrare è stato notevolmente migliorato con un'intestazione prefisso.
In quel caso puoi crearne uno e passarlo in clang, ma è incredibilmente raro che sia una buona idea.
EDIT: Alla tua domanda specifica su un HUD che usi in tutti i tuoi controller di visualizzazione, sì, dovresti assolutamente importarlo in ogni controller di visualizzazione che lo utilizza effettivamente. Questo rende chiare le dipendenze. Quando riutilizzi il tuo controller di visualizzazione in un nuovo progetto (cosa comune se costruisci bene i tuoi controller), saprai immediatamente cosa richiede. Ciò è particolarmente importante per le categorie, che possono rendere il codice molto difficile da riutilizzare se sono implicite.
Il file PCH non è lì per sbarazzarsi delle dipendenze degli elenchi. Dovresti comunque importare UIKit.h
o Foundation.h
secondo necessità, come fanno i modelli Xcode. La ragione del PCH è di migliorare i tempi di costruzione quando si ha a che fare con intestazioni davvero enormi (come in UIKit).
TWAPIManager.m
, ad esempio, in un altro progetto, si ottengono errori TWALog()
non definiti, senza alcun suggerimento su dove trovarlo. Ho riscontrato esattamente quel problema su diversi progetti di grandi dimensioni che cercavano di condividere il codice. La creazione TWAPILog.h
e l'importazione risolve questo con un costo di sviluppo insignificante.
Senza la domanda se è corretto o meno, è possibile aggiungere manualmente il file PCH:
Aggiungi un nuovo file PCH al progetto: Nuovo file> Altro> File PCH .
All'opzione Impostazioni di costruzione del bersaglio , imposta il valore di prefisso sul nome del tuo file PCH, con il nome del progetto come prefisso (ovvero per il nome del progetto TestProject
e il file PCH denominato MyPrefixHeaderFile
, aggiungi il valore TestProject/MyPrefixHeaderFile.pch
al plist).
MANCIA: puoi usare cose come $(SRCROOT)
o $(PROJECT_DIR)
per arrivare al percorso in cui hai inserito .pch
il progetto.
Nell'opzione Impostazioni di costruzione del bersaglio , imposta il valore di Precompila prefisso intestazione su YES
.
È necessario creare il proprio file PCH
AggiungiNew file -> Other-> PCH file
Quindi aggiungi il percorso di questo file PCH alla tua build setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Per aggiungere il file .pch-
1) Aggiungi il nuovo file .pch al tuo progetto-> Nuovo file-> altro-> file PCH
2) Vai all'impostazione di costruzione del tuo progetto.
3) Cerca "intestazione prefisso". Lo puoi trovare su Apple LLVM.
4) Incollalo nel campo $(SRCROOT)/yourPrefixHeaderFileName.pch
5) Pulisci e costruisci il progetto. Questo è tutto!!!
Se decidi di aggiungere manualmente un file .pch e desideri utilizzare Objective-C come prima di xCode 6, dovrai anche importare i framework UIKit e Foundation nel file .pch. Altrimenti dovrai importare questi framework manualmente in ogni file di intestazione. Puoi comunque aggiungere il seguente codice mentre verifica la lingua utilizzata:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Uso :
$ (PROJECT_DIR) / Nome progetto / PrefixHeader.pch
Per aggiungere un nuovo file PCH, seguire i seguenti passaggi:
(1) Aggiungi nuova vista - Seleziona iOS - Altro e File PCH
(2) aggiungi il percorso di questo file PCH al tuo progetto - BuildSetting - Apple LLVM 6.0 Language
Aggiungi Imposta prefisso Percorso intestazione YourApplicationName (root-path) /filename.pch