Lors de l'utilisation d'un framework externe, Xcode a désormais une section Binaires incorporés ainsi qu'une section Frameworks liés .
Lorsque vous téléchargez un framework externe et que Finder-> faites-le glisser dans Xcode, il place le framework dans la section Frameworks et bibliothèques liés .
Lorsque vous créez une bibliothèque avec Carthage, il vous est recommandé de la faire glisser dans la section Binaires incorporés .
Les deux semblent fonctionner en termes de lien, car l'API devient disponible dans les deux cas, de plus lors de l'ajout d'un cadre dans la section Binaires incorporés , il est également automatiquement ajouté dans la section Frameworks et bibliothèques liés .
Alors, qui a raison? Carthage ou le reste d'Internet? et pourquoi existe-t-il 2 options pour inclure des ressources externes dans les projets Xcode?
Réponses:
Liaison - Nous devons lier un cadre si nous utilisons une API définie dans celui-ci.
Intégration - Ce processus garantira que le cadre ajouté sera intégré dans l'offre groupée d'applications et contribuera potentiellement au partage de code entre l'application et les ensembles d'extension. Nous n'intégrons que des frameworks tiers et non ceux fournis par iOS car ils sont facilement disponibles dans l'appareil. Si nous intégrons, cela signifie que nous devrons également créer un lien vers eux afin que Xcode puisse compiler et créer la construction. Lorsque l'application s'exécute sur l'appareil, le framework intégré est chargé en mémoire en cas de besoin.
la source
embed
et nonlink
? Et vice versa? Et pourquoi?Si vous intégrez le binaire, il sera inclus dans votre produit. Si vous liez uniquement une bibliothèque ou un framework sans l'incorporer, il ne fera pas partie de votre produit.
Cependant, dans iOS8, tous les frameworks tiers doivent être «intégrés». Même un cadre partagé entre divers programmes doit être «intégré» dans chacun de ces programmes. Dans le cas où il a été installé sur l'appareil dans un emplacement partagé, tout autre processus d'installation utilisant le même code «intégré» à partir de l'emplacement partagé peut réutiliser cette installation existante. Ceci est spécifique à iOS8, cela n'a pas été possible avant iOS8 et en dehors du monde iOS cette réponse ne serait pas exacte.
la source
Linking
en savoir plus surLinker
cela fonctionne au moment de la compilation ou au moment du chargement / de l'exécution.Linker
copiez aLibrary
dans un binaire cible. Comme ilFramework
est autonome, leLinker
, dans ce cas, est chargé de rechercher et de lier l'Dynamic Framework
intérieur du chemin du chargeur système ou de rechercher et de lier à l'intérieur d'un bundle .Embedding
est un processus de copie du binaire dans le binaire cible. En conséquence, il sera situé à l'intérieur.En savoir plus ici
la source
À ma connaissance, le binaire intégré comprend uniquement le cadre dynamique disponible sur iOS 8 et les versions ultérieures, sinon vous ne pouvez lier que le cadre qui est statique.
la source