Le plus grand avantage d'un framework par rapport aux bibliothèques statiques est qu'ils agissent comme un moyen efficace d'empaqueter le binaire de la bibliothèque compilée et tous les en-têtes associés. Ils peuvent être déposés dans votre projet (tout comme les frameworks intégrés du SDK tels que Foundation et UIKit) et ils devraient simplement fonctionner (la plupart du temps).
La plupart des frameworks contiennent des bibliothèques dynamiques; les frameworks créés dans Xcode à l'aide du modèle Mac Framework créeront une bibliothèque dynamique. L'iPhone ne prend pas en charge les frameworks dynamiques, c'est pourquoi il est devenu courant que les bibliothèques réutilisables de code iOS soient plutôt distribuées sous forme de bibliothèques statiques.
Les bibliothèques statiques sont bien, mais elles nécessitent un peu de travail supplémentaire de la part de l'utilisateur. Vous devez lier votre projet à la bibliothèque et vous devez copier les fichiers d'en-tête dans votre projet ou les référencer quelque part en définissant les chemins de recherche d'en-tête appropriés dans vos paramètres de construction.
Donc: en résumé, mon avis est que la meilleure façon de distribuer votre bibliothèque est en tant que framework. Pour créer un framework "statique" pour iOS, vous pouvez essentiellement prendre un framework normal et remplacer le binaire par votre bibliothèque statique compilée. C'est ainsi que je distribue l'une de mes bibliothèques, Resty et c'est ainsi que j'ai l'intention de distribuer mes bibliothèques à l'avenir.
Vous voudrez peut-être regarder le Rakefile fourni dans ce projet (au cas où vous ne le sauriez pas, Rake est l'équivalent Ruby de Make). J'ai une poignée de tâches pour compiler mon projet (en utilisant xcodebuild
) et les empaqueter en tant que cadre statique pour iOS. Vous devriez trouver cela utile.
Vous pouvez également utiliser ces modèles Xcode 4 pour créer un framework iOS.
Mise à jour du 9 décembre 2013 : c'est une réponse populaire, j'ai donc pensé modifier pour dire que mon premier choix pour la distribution de la bibliothèque a changé. Mon premier choix pour toute bibliothèque tierce en tant que consommateur ou producteur est CocoaPods. Je distribue mes bibliothèques à l'aide de CocoaPods et propose une bibliothèque statique précompilée avec des en-têtes comme option de secours.