2012-05-10 19 views
8

Estoy construyendo una biblioteca estática que se utilizará en múltiples aplicaciones de iOS. Paralelamente, estoy trabajando en una de esas aplicaciones que usan mi biblioteca.Objetivo - C Biblioteca estática y sus encabezados públicos: ¿cuál es el camino correcto?

Durante el desarrollo recibo al menos una vez al día un error molesto sobre los archivos de encabezado de la biblioteca que no se encuentran (en mi proyecto de aplicación). he aprendido que cuando la construcción de una biblioteca estática, encabezados pueden ser Public, Private o Project

que supongo que cada cabecera que quiero exponer en mi biblioteca debe ser Public.

Mi pregunta es, ¿cuál es la mejor manera de administrar estos encabezados públicos? ¿Debería crear un archivo de encabezado público principal con #import en todos mis encabezados públicos? ¿Puede Xcode generar ese archivo para mí?

Otra pregunta importante es ¿cuál es el valor recomendado para la configuración Public Header Folder Path?

Mi objetivo principal es que los futuros proyectos que van a usar esta biblioteca, podrán hacerlo con menos como configuraciones posibles (como banderas enlazador añadir, cambiar User Header Search Path etc.)

Muchas gracias.

Respuesta

-1

Sobre cabeceras públicas/privadas/proyectos, aquí es una respuesta anterior si acaso =>https://stackoverflow.com/a/8016333/1075192

mayoría de las veces, las bibliotecas y los marcos de C/C++/Obj-C tienen una cabecera principal, incluyendo toda la otros. Los marcos de cacao siguen este camino, por ejemplo.

Declarar un CAAnimation con el marco QuartzCore por ejemplo, usted podría hacer esto:

#import "QuartzCore/CAAnimation.h" 

o

#import "QuartzCore/Quartzcore.h" 

"QuartzCore.h" es en realidad sólo se compone de un guardia de cabecera e incluye todo los otros encabezados de la biblioteca.

En mi opinión, en realidad es mejor usar la primera ya que no incluye todas las declaraciones que no necesita. Pero la mayoría de las veces elegimos la solución perezosa de incluir todo a la vez.

No tengo idea de si puedes generar esto directamente con xCode, de todos modos es bastante fácil hacerlo por ti mismo, ya que es solo un montón de inclusiones o importaciones.

La ruta de la carpeta del encabezado público es generalmente "MyLibraryOrFramework/Headers" (simplemente mire dentro de cualquier marco de Cocoa, por ejemplo).

Y, por último, si quiere algo realmente reutilizable e ininterrumpido, le sugiero que utilice marcos en lugar de una biblioteca estática (que es casi similar).

Mira esta fina respuesta a entender por qué se adapta perfectamente lo que necesita: =>https://stackoverflow.com/a/6389802/1075192

Voilà, espero que esta respuesta ayudó un poco.

+6

Esta respuesta ignora todas las preguntas difíciles (por ejemplo, si los encabezados deben ser públicos/proyectos, etc., cuáles son las ubicaciones de salida correctas, cómo decirle a Xcode que haga esto) y responde las triviales que no importan de todos modos desde Xcode maneja eso casi automáticamente. – Adam

+2

@ Adam. Debo admitir que probablemente no entendí bien los puntos importantes de esta pregunta. Sería bueno si realmente pudieras dar una mejor respuesta. – nsarno

Cuestiones relacionadas