ios ios8 ios-frameworks ios-app-extension

¿IOS 8 soporta enlaces dinámicos?



ios8 ios-frameworks (3)

Hasta iOS7, Apple no admitía la vinculación dinámica debido a problemas de seguridad. La reutilización de código entre desarrolladores usualmente se basaba en bibliotecas estáticas, que se crearon como parte del ejecutable de la aplicación.

La introducción de extensiones en iOS8 parece cambiar esto un poco, porque las extensiones son ejecutables por separado. Compartir código entre una extensión y su aplicación contenida se realiza a través de un marco. Apple está diciendo esto en sus notas de lanzamiento:

Frameworks para iOS. Los desarrolladores de iOS ahora pueden crear marcos dinámicos . Los marcos son una colección de código y recursos para encapsular la funcionalidad que es valiosa en múltiples proyectos. Los marcos funcionan perfectamente con las extensiones, compartiendo la lógica que puede ser utilizada tanto por la aplicación principal como por las extensiones integradas.

El énfasis es mío.

Fuente: https://developer.apple.com/library/content/documentation/Xcode/Conceptual/WhatsNewXcode-Archive/Articles/xcode_6_0.html#//apple_ref/doc/uid/TP40014509-SW14

Además, en la guía de desarrollo de extensiones, explican que puede compartir código entre una extensión y la aplicación que lo contiene a través de un "marco incrustado".

Fuente: https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1

Mi pregunta es: ¿qué es un marco incorporado, en qué se diferencia de un marco dinámico, y veremos realmente la vinculación dinámica adecuada en iOS8? Toda la documentación que he leído parece ambigua sobre esto.


Los marcos "integrados" y "dinámicos" no se refieren al mismo aspecto de los marcos. No son lo opuesto entre sí. Primero, definamos qué es un marco: en la jerga de Apple, un marco se refiere a algún código compilado + los encabezados públicos de dicho código.

  • Ahora, un marco dinámico es un marco cuyo código se creó como una biblioteca dinámica. Es lo opuesto a un marco "estático", donde el código se construiría como una biblioteca estática. En caso de que se lo pregunte, Wikipedia tiene una muy buena explicación de cuál es la diferencia entre una biblioteca estática y una dinámica.

  • Y, finalmente, un marco integrado es un marco que se empaqueta dentro de una aplicación, en lugar de instalarse en todo el sistema, por ejemplo, en "/ System / Library / Frameworks".


Un marco integrado es simplemente uno que se incluye en el paquete de la aplicación, en lugar de un marco global que se instala en el directorio del sistema.


Frameworks dinámicos no significa framework enlazado dinámicamente . Las aplicaciones aún funcionan en un entorno de caja de arena. No es que tus marcos personalizados se vayan a instalar con iOS. Cada una de sus aplicaciones que utiliza el marco común que ha desarrollado se copiará dentro del paquete de cada aplicación.

Puedes ver esto por ti mismo. Vaya al directorio de Datos Derivados de su Xcode y, dentro de los datos de la aplicación, encontrará todos los marcos incrustados copiados.

Lo único nuevo con la creación de Frameworks con iOS 8 en comparación con las bibliotecas estáticas es que los archivos y activos públicos del encabezado se incluyen en Framework. Si ha estado haciendo este tipo de cosas con versiones anteriores de Xcode, recordará la dificultad de proporcionar encabezados públicos y luego agregar la ruta de búsqueda dentro de la configuración de Xcode y los activos que tuvimos que pasar en un paquete separado.

El único inconveniente de usar Frameworks que veo es que ahora no podemos simplemente usar lipo para generar una biblioteca estática para todo tipo de arquitecturas.

IMO Apple está usando la palabra "dinámico" para sugerir "independiente".

Mire WWDC2014 - Construyendo marcos modernos para más detalles.