¿Por qué ProjectName-Prefix.pch no se crea automáticamente en Xcode 6?

Resuelto Wei asked hace 54 años • 8 respuestas

¿Por qué no se ProjectName-Prefix.pchcrea automáticamente en Xcode 6?

¿Ya no es necesario el encabezado de precompilación?

¿Dónde debería escribir el código que había ProjectName-Prefix.pchantes?

Wei avatar Jan 01 '70 08:01 Wei
Aceptado

Sin preguntar si es correcto o no, puedes agregar el archivo PCH manualmente:

  1. Agregue un nuevo archivo PCH al proyecto: Nuevo archivo > Otro > Archivo PCH .

  2. En la opción Configuración de compilación de Target , 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 proyecto con nombre TestProjecty el archivo PCH con nombre MyPrefixHeaderFile, agregue el valor TestProject/MyPrefixHeaderFile.pchal plist).

    SUGERENCIA: Puedes usar cosas como $(SRCROOT)o $(PROJECT_DIR)para llegar a la ruta donde colocaste el .pchproyecto.

  3. En la opción Configuración de compilación de Target , establezca el valor de Encabezado de prefijo de precompilación en YES.

Yedidya Reiss avatar Jun 17 '2014 07:06 Yedidya Reiss

Sospecho que debido a los módulos, que eliminan la necesidad del archivo #import <Cocoa/Cocoa.h>.

En cuanto a dónde colocar el código que colocaría en un encabezado de prefijo, no hay ningún código que deba colocar en un encabezado de prefijo. Coloque sus importaciones en los archivos que las necesitan. Coloque sus 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 necesite __FILE__). Si necesita macros, colóquelas en un encabezado e inclúyalas.

El encabezado del prefijo era necesario para cosas que son enormes y utilizadas por casi todo en todo el sistema (como Foundation.h). Si tienes algo tan grande y ubicuo, deberías repensar tu arquitectura. Los encabezados de prefijo dificultan la reutilización del código e introducen problemas de compilación sutiles si alguno de los archivos enumerados puede cambiar. Evítelos hasta que tenga un problema grave de tiempo de compilación que pueda demostrar que mejora drásticamente con un encabezado de prefijo.

En ese caso, puedes crear uno y pasarlo a clang, 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 en cada controlador de vista que realmente lo use. Esto deja claras las dependencias. Cuando reutilice su controlador de vista en un nuevo proyecto (lo cual es común si construye bien sus controladores), sabrá inmediatamente 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ícitos.

El archivo PCH no está ahí para eliminar las dependencias del listado. Aún debes importar UIKit.ho Foundation.hsegún sea necesario, como lo hacen las plantillas de Xcode. El motivo del PCH es mejorar los tiempos de compilación cuando se trata de encabezados realmente masivos (como en UIKit).

Rob Napier avatar Jun 12 '2014 22:06 Rob Napier

Necesita crear su propio archivo PCH
. AgregarNew file -> Other-> PCH file

Luego agregue la ruta de este archivo PCH a su compilaciónsetting->prefix header->path

($(SRCROOT)/nombredearchivo.pch)

ingrese la descripción de la imagen aquí

Prakash Raj avatar Jul 02 '2014 06:07 Prakash Raj