Je suis assez nouveau sur xcode et objective-c. Je veux poser une question très fondamentale.
J'ai vu que lors de la "liaison du binaire aux bibliothèques" dans les paramètres du projet, il existe des différences sur le cadre et les bibliothèques, importées d'autres projets dans l'espace de travail.
Première question, pourquoi y a-t-il un cadre? Et pourquoi y a-t-il une bibliothèque? Ma bibliothèque ne peut-elle pas être un framework?
Et puis, à partir d'un fichier .h , comment puis-je appeler des classes depuis ma bibliothèque statique importée?
Je suppose qu'il doit y avoir un préfixe, mais je ne l'ai pas trouvé. Ni "ProjName / Myclass.h" ne fonctionnent.
Veuillez être aussi précis que possible.
Merci
objective-c
xcode4
static-libraries
Léonard
la source
la source
Réponses:
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.
la source
fondamentalement, les frameworks SONT des bibliothèques et fournissent un mécanisme pratique pour travailler avec eux. Si vous regardez "à l'intérieur" d'un framework, c'est juste un répertoire contenant une bibliothèque statique et des fichiers d'en-tête (dans une structure de dossiers avec des métadonnées).
Si vous voulez créer votre propre framework, vous devez créer une "bibliothèque statique" et la conditionner d'une manière spécifique. voir cette question
En général, les framworks sur les plates-formes sont utilisés pour un comportement réutilisable où vous ajoutez votre propre code "dans un cadre existant". si vous souhaitez avoir des fonctionnalités spécifiques, vous pouvez utiliser une bibliothèque (par exemple, three20) et la mettre dans votre application distribuable
la source