2012-04-21 18 views
5

Estoy trabajando en un proyecto a gran escala en iOS, y quiero separar módulos independientes en varios paquetes cargables. Sin embargo, el documento oficial indica que el paquete cargable no es compatible con iOS. Además, planeo usar distribución interna, así que la aprobación de la tienda de aplicaciones no es un problema.paquete cargable en iOS, ¿hay alguna forma de lograr esto?

Ahora mi pregunta es: llamo [_bundle principalClass] en el código para acceder a la clase de entrada del paquete cargable. Funciona bien en dispositivos iOS con jailbreak. Para dispositivos desbloqueados, cuando uso el modo de depuración con Xcode, también funciona bien. Pero cuando lo ejecuto de forma independiente, desde el trampolín, se bloquea al fondo.

que realmente quiero saber:

1) ¿Por qué es tan diferente de paquete cargable que se ejecuta en el dispositivo con jailbreak/unjailbroken?
2) ¿Diferencias principales entre el modo de depuración de XCode y el modo de ejecución normal para la aplicación?

¿Hay alguna otra forma complicada de usar la biblioteca dinámica en dispositivos iOS no depurados?

Respuesta

1

iOS no permite la carga dinámica de código ejecutable que no forme parte del sistema; esto incluye Framework, dylibs, páginas de memoria ejecutables usando mmap, etc. Afortunadamente algún día permitirán paquetes dinámicos, pero por el momento necesitarás construir tus módulos como bibliotecas estáticas y enlazarlos en tiempo de compilación. No hay forma conocida de superar esta limitación.

Mucha gente ha escrito sobre cómo hacerlo (p. Ej., http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/) o si desea utilizar un proyecto existente como ejemplo. Una que me gusta es la API Objc de GData, que tiene objetivos tanto para un marco dinámico cuando se construye para OS X, como para una biblioteca estática cuando se compila para iOS: http://code.google.com/p/gdata-objectivec-client/

Cuestiones relacionadas