¿Puedes hacer referencia a archivos Xib desde bibliotecas estáticas en el iPhone?

En mi aplicación, actualmente tengo todo mi código separado en una biblioteca estática, para facilitar la configuración de los objectives del proyecto xcode para la aplicación real y para las pruebas unitarias de mi código. El problema con esto es que quiero poner también la mayoría de mis archivos xib en la biblioteca estática, pero parece que cuando ejecuto mi aplicación e bash hacer referencia al xib, no puedo encontrarlo a menos que esté incluido en el archivo real. objective de la aplicación en lugar del objective de la biblioteca estática. ¿Es posible tener archivos xib y otros recursos incluidos en las bibliotecas estáticas a los que se puede hacer referencia mediante código en esa misma biblioteca y, de ser así, cómo?

No, no es posible, porque una biblioteca estática no es lo mismo que un “paquete”.

Un paquete es un directorio que puede contener todo tipo de archivos, incluidos los archivos de recursos (xib), archivos ejecutables y bibliotecas estáticas. Existe en el sistema de archivos como un grupo de archivos individuales.

Una biblioteca estática es un único archivo que contiene clases, códigos y variables que fueron vinculados entre sí por el creador de la biblioteca. No “contiene” otros archivos, es esencialmente una base de datos de código comstackdo.

Aunque sería posible poner los datos para los xibs allí, Xcode no tendría forma de saber que estaba ahí, ya que los busca como archivos individuales en el sistema de archivos.

En Mac OS, puede crear un “Framework” que es esencialmente un paquete de código, recursos, configuraciones, etc. que pueden ser reutilizados por múltiples proyectos. Sin embargo, Apple no parece ser compatible con la creación de marcos personalizados para iPhone OS.

Bundles https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

Bibliotecas estáticas http://en.wikipedia.org/wiki/Static_library

Responder para comentar (no cabe en el cuadro de comentarios)

No se preocupe, he estado tratando de hacer casi lo mismo que usted durante la última semana. Me gustaría enviar un “marco” de xibs, incluir archivos y .a libs a un cliente sin darles toda la fuente código. No pude encontrar una buena manera de hacer esto con los paquetes tampoco.

Por alguna razón, Apple está siendo especialmente obtuso con respecto a esto; no veo razón para que lo sean en el caso de las bibliotecas estáticas (las bibliotecas dinámicas son lo suficientemente justas).

Mi solución por ahora es crear manualmente una carpeta de paquete “Foo” que contenga las siguientes subcarpetas:

  1. “incluir” -> poner archivos .h aquí
  2. “res” -> poner archivos .xib aquí
  3. “lib” -> contiene subcarpetas “iphoneos” e “iphonesimulator” cada una con libFoo.a

Luego comprime esto y envíalo al cliente. El cliente entonces:

  1. Descomprime el paquete donde lo desee.
  2. Agrega la carpeta “res” debajo del grupo de recursos.
  3. Cambia las siguientes configuraciones de objectives:
    Otros indicadores de enlazador = -Objc -lfoo
    Rutas de búsqueda de encabezado = / include
    Rutas de búsqueda de bibliotecas = / lib / $ (PLATFORM_NAME)

Probablemente pueda automatizar la creación del paquete con algunos pasos de comstackción al final, pero el cliente tiene cuatro pasos poco complicados para configurarlo.

Encontré una solución perfecta para esto que hace todo lo anterior automáticamente y más https://github.com/kstenerud/iOS-Universal-Framework Es un complemento de xCode

Me funcionó como un encanto. Funciona solo para XCode 4 y superior