Lors de l'utilisation d'un cadre externe, Xcode dispose désormais d'un fichiers binaires incorporés ainsi que d'un cadres liés section.
Lorsque vous téléchargez un framework externe et que le Finder-> faites-le glisser dans Xcode, il le placera dans la section Frameworks and Libraries .
Lorsque vous construisez une bibliothèque avec Carthage, il est recommandé de faire glisser dans la section Binaires incorporés .
Les deux semblent fonctionner en termes de liaison, car l’API devient disponible dans un sens ou l’autre, encore plus lors de l’ajout d’un framework à la section Binaires incorporés est automatiquement ajouté à la section Frameworks and Libraries .
Alors, qui a raison? Carthage ou le reste de l'internet? et pourquoi existe-t-il deux options pour inclure des ressources externes dans les projets Xcode?
Liaison - Nous devons lier un framework si nous utilisons une API définie dans celui-ci.
Incorporation - Ce processus garantira que la structure ajoutée sera intégrée au groupe d'applications, et aidera éventuellement au partage de code entre l'application et les ensembles d'extension. Nous intégrons uniquement les infrastructures tierces et non celles fournies par iOS car elles sont facilement disponibles sur le périphérique. 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, l'infrastructure intégrée est chargée en mémoire si nécessaire.
Si vous intégrez le binaire, il sera inclus dans votre produit. Si vous ne faites que lier une bibliothèque ou une structure sans l’intégrer, elle 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 différents programmes doit être "intégré" à chacun de ces programmes. Dans le cas où il a été installé sur le périphérique 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 précise.
Linking
plus à propos de Linker
qui fonctionne au moment de la compilation ou du chargement/exécution. Linker
copie un Library
dans un binaire cible. Puisque Framework
est autonome, le Linker
, dans ce cas, est chargé de rechercher et de lier le Dynamic Framework
dans le chemin du chargeur système ou pour rechercher un lien dans un bundle .
Embedding
est un processus de copie du binaire dans le binaire cible. En conséquence, il sera situé à l'intérieur.
Lire la suite ici