web-dev-qa-db-fra.com

Quelle est la différence entre les fichiers binaires incorporés et les cadres liés

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.

enter image description here

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?

75
Maxim Veksler
  1. Liaison - Nous devons lier un framework si nous utilisons une API définie dans celui-ci.

  2. 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.

55
Shripada

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.

14
Basti

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

0
yoAlex5