Realmente no estoy en desacuerdo con DarkDust's answer, pero si se me permite canalizar mi interior Bill Clinton, it depends on what the meaning of supported is :)
Apple no quiere que haciendo esto para aplicaciones de la App Store, pero el sistema operativo ciertamente lo permite. Las aplicaciones de Jailbreak usan esta técnica todo el tiempo. Básicamente, utiliza una técnica estándar de UNIX para abrir dinámicamente un marco/biblioteca, y luego usar cosas en él. El dlopen function le permite abrir la biblioteca pasando the path to that framework o dylib. De alguna docs for building jailbreak apps, he aquí un ejemplo de llamar a una función init()
implementado dentro de su propia, dylib separada:
#include <dlfcn.h>
initWrapper() {
char *dylibPath = "/Applications/myapp.app/mydylib2.dylib";
void *libHandle = dlopen(dylibPath, RTLD_NOW);
if (libHandle != NULL) {
// This assumes your dylib’s init function is called init,
// if not change the name in "".
void (*init)() = dlsym(libHandle, "init");
if (init != NULL) {
init();
}
dlclose(libHandle);
}
}
Por otra parte, la restricción por defecto contra lo que le permite acumulación un proyecto de biblioteca dinámica para iOS es algo en XCode que usted tiene la capacidad de anular mediante la edición de algunos archivos xml: XCode
Build and use dylib on iOS
una vez hecho esto, se puede construir un iOS normales .dylib biblioteca, y úsala según el código de muestra anterior. (Sí, probablemente tendrá que desbloquear esta capacidad cada vez que instale una nueva versión de XCode).
Por lo tanto, no es una limitación técnica, sino una limitación de la política de la tienda de aplicaciones. Si no estás limitado a la App Store, entonces puedes hacerlo. Tenga en cuenta que esta técnica no requiere jailbreaking, aunque si la aplicación está en espacio aislado, puede limitar donde se pueden cargar los dylibs.
Editar: con el fin de asegurarse de que esta información no se pierde en el futuro la podredumbre enlace, aquí es el contenido del enlace que he proporcionado sobre cómo activar iOS dylibs en Xcode. (Nota: este proceso aún funciona en Xcode 4, pero vea los comentarios a continuación para actualizaciones de rutas, etc.) Fuente es el iOS Place blog:
Xcode no permite que usted construya dylib para iOS. La aplicación será rechazada si no es un solo binario. Pero tengo una aplicación que tiene una arquitectura de complemento para cargar módulos opcionales. Solo quiero un prototipo rápido para probar el concepto antes de portarlo por completo a iOS. Es más rápido si dylib simplemente funcionara. Por lo tanto, esta publicación muestra cómo construir y usar dylib, pero tenga en cuenta que no se aprobará en App Store. (Probado con Xcode 3.2.4, 10.6.4)
1. abrir estos archivos en el editor de listas de Propiedad: /Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Tipos de productos .xcspec y /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/iPhone Simulador ProductTypes.xcspec
2. localizar el elemento en el “MacOSX Producto Types.xcspec” que tiene el tipo de producto com.apple.product-type.library.dynamic
y arrástrelo al "iPhone Simulator ProductTypes.xcspec ".
3. abierto “MacOSX paquete Types.xcspec” y “simulador de iPhone PackageTypes.xcspec” que se encuentra en los mismos lugares.
4. localizar el elemento en el “MacOSX Producto Types.xcspec” que tiene el paquete de tipo com.apple.package-type.mach-o-dylib
y arrastrarlo a la “simulador de iPhone PackageTypes.xcspec”.
5. Repita los pasos para el “iPhoneOS.platform” y relanzar Xcode si se estaba ejecutando.
Ahora, vamos a construir un dylib. Comience con la "Biblioteca Estática Cocoa Touch" Templete. Eso debería incluir el marco de la Fundación en el proyecto. Estos son los cambios que hice en la parte superior de la Templete para construir dylib.
1. Abrir el archivo project.pbxproj (que se encuentra en el interior del archivo de paquete de proyecto de Xcode) en un editor de texto. Busque la cadena "producttype", cambie su valor a com.apple.product-type.library.dynamic
;
Ahora, abra el proyecto con Xcode, ir a Proyecto-> Editar configuración del proyecto
2. “Directorio de instalación” ajustado a @executable_path/
porque tengo la intención de poner el dylib en el mismo directorio como el ejecutable de la aplicación.
3. “Mach-O Tipo” conjunto de Dynamic Library
4. “ejecutable de extensión” ajustado a dylib
5. “Ejecutable Prefijo” set vaciar
6. Agregue uno o dos métodos simples a la biblioteca y compárelo.
Ahora, crea una aplicación para probarlo. Esta vez, elijo Aplicación basada en la vista. Conecte un UIButton y un UILable para llamar a la lib y mostrar el mensaje de devolución. Puedes download the complete project TestApp y jugar con él.
No, pero usted [puede construir y vincular una biblioteca estática] (http://stackoverflow.com/questions/6124523/linking-a-static-library-to-an-ios-project-in-xcode-4) – bobobobo
iOS8 + admite marcos basados en biblioteca compartida. – Eonil
@Eonil, ¿pueden dar más detalles sobre eso? Me gustaría obtener más información al respecto, un artículo o un enlace a alguna información sería muy apreciado. –