La mayor ventaja que tiene un marco sobre las bibliotecas estáticas es que actúan como una forma ordenada de empaquetar el binario compilado de la biblioteca y cualquier encabezado relacionado. Pueden incluirse en su proyecto (al igual que los marcos integrados del SDK como Foundation y UIKit) y deberían funcionar (la mayoría de las veces).
La mayoría de los marcos contienen bibliotecas dinámicas; Los frameworks creados en Xcode usando la plantilla Mac Framework crearán una biblioteca dinámica. El iPhone no admite marcos dinámicos, por lo que se ha vuelto común que las bibliotecas reutilizables de código iOS se distribuyan como bibliotecas estáticas.
Las bibliotecas estáticas están bien, pero requieren un poco de trabajo extra por parte del usuario. Debe vincular su proyecto a la biblioteca y debe copiar los archivos de encabezado en su proyecto o referencia a ellos en algún lugar configurando las rutas de búsqueda de encabezado adecuadas en la configuración de compilación.
Entonces: en resumen, mi opinión es que la mejor manera de distribuir su biblioteca es como un marco. Para crear un marco "estático" para iOS, esencialmente puede tomar un marco normal y reemplazar el binario con su biblioteca estática compilada. Así es como distribuyo una de mis bibliotecas, Resty y así es como pretendo distribuir mis bibliotecas en el futuro.
Es posible que desee ver el Rakefile suministrado en ese proyecto (en caso de que no lo sepa, Rake es el equivalente de Ruby a Make). Tengo un puñado de tareas para compilar mi proyecto (usar xcodebuild
) y empaquetarlas como un marco estático para iOS. Deberías encontrar esto útil.
Alternativamente, es posible que desee utilizar estas plantillas Xcode 4 para crear un marco iOS.
Actualización 9 de diciembre de 2013 : esta es una respuesta popular, así que pensé en editar para decir que mi primera opción para la distribución de la biblioteca ha cambiado. Mi primera opción para cualquier biblioteca de terceros como consumidor o productor es CocoaPods. Distribuyo mis bibliotecas usando CocoaPods y ofrezco una biblioteca estática precompilada con encabezados como opción alternativa.