Respuestas:
Sospecho que debido a los módulos, que eliminan la necesidad de #import <Cocoa/Cocoa.h>
.
En cuanto a dónde colocar el código que colocaría en un encabezado de prefijo, no hay código que deba colocar en un encabezado de prefijo. Coloque sus importaciones en los archivos que las necesitan. Pon tus definiciones en sus propios archivos. Pon tus macros ... en ninguna parte. Deje de escribir macros a menos que no haya otra manera (como cuando lo necesita __FILE__
). Si necesita macros, colóquelas en un encabezado e inclúyalas.
El encabezado del prefijo era necesario para cosas enormes y utilizadas por casi todo en todo el sistema (como Foundation.h
). Si tiene algo tan grande y omnipresente, debe repensar su arquitectura. Los encabezados de prefijo dificultan la reutilización del código e introducen problemas sutiles de compilación si alguno de los archivos enumerados puede cambiar. Evítelos hasta que tenga un problema serio de tiempo de compilación que pueda demostrar que mejora dramáticamente con un encabezado de prefijo.
En ese caso, puede crear uno y pasarlo al sonido metálico, pero es increíblemente raro que sea una buena idea.
EDITAR: a su pregunta específica sobre un HUD que usa en todos sus controladores de vista, sí, debe importarlo absolutamente a cada controlador de vista que realmente lo use. Esto aclara las dependencias. Cuando reutilice su controlador de vista en un nuevo proyecto (lo cual es común si construye bien sus controladores), sabrá de inmediato lo que requiere. Esto es especialmente importante para las categorías, que pueden hacer que el código sea muy difícil de reutilizar si están implícitas.
El archivo PCH no está allí para deshacerse de las dependencias de la lista. Aún debe importar UIKit.h
o Foundation.h
según sea necesario, como lo hacen las plantillas de Xcode. La razón de la PCH es mejorar los tiempos de compilación cuando se trata de encabezados realmente masivos (como en UIKit).
TWAPIManager.m
, por ejemplo, a otro proyecto, obtendrá errores que TWALog()
no están definidos, sin ninguna pista sobre dónde encontrarlo. He encontrado exactamente ese problema en varios proyectos grandes que intentan compartir código. Crearlo TWAPILog.h
e importarlo resuelve esto con un costo de desarrollo trivial.
Sin la pregunta de si es correcto o no, puede agregar el archivo PCH manualmente:
Agregue un nuevo archivo PCH al proyecto: Nuevo archivo> Otro> Archivo PCH .
En la opción Configuración de compilación del objetivo , establezca el valor de Encabezado de prefijo en el nombre de su archivo PCH, con el nombre del proyecto como prefijo (es decir, para el nombre del proyecto TestProject
y el nombre del archivo PCH MyPrefixHeaderFile
, agregue el valor TestProject/MyPrefixHeaderFile.pch
al plist).
CONSEJO: Puedes usar cosas como $(SRCROOT)
o $(PROJECT_DIR)
para llegar a la ruta de donde pones .pch
el proyecto.
En la opción Configuración de compilación del objetivo , establezca el valor de Precompile Prefix Header en YES
.
Necesita crear su propio archivo PCH
AgregarNew file -> Other-> PCH file
Luego agregue la ruta de este archivo PCH a su compilación setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Para agregar un archivo .pch
1) Agregue un nuevo archivo .pch a su proyecto-> Nuevo archivo-> otro-> archivo PCH
2) Pase a la configuración de compilación de su proyecto.
3) Buscar "encabezado de prefijo". Puede encontrar eso en Apple LLVM.
4) Pega esto en el campo $(SRCROOT)/yourPrefixHeaderFileName.pch
5) Limpiar y construir el proyecto. ¡¡¡Eso es!!!
Si decide agregar un archivo .pch manualmente y desea usar Objective-C como antes de xCode 6, también deberá importar los marcos UIKit y Foundation en el archivo .pch. De lo contrario, deberá importar estos marcos manualmente en cada archivo de encabezado. Puede agregar el siguiente código de todos modos, ya que prueba el idioma utilizado:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Utilizar :
$ (PROJECT_DIR) / Nombre del proyecto / PrefixHeader.pch
Para agregar un nuevo archivo PCH, siga los siguientes pasos:
(1) Agregar nueva vista - Seleccionar iOS - Otro y archivo PCH
(2) agregue la ruta de este archivo PCH a su proyecto - BuildSetting - Apple LLVM 6.0 Language
Agregue la ruta del encabezado del prefijo establecido YourApplicationName (root-path) /filename.pch