web-dev-qa-db-fra.com

Que fait le paramètre de construction «Contenu incorporé contient Swift Code» dans Xcode 6?

Il s'agit d'un nouveau paramètre sous "Options de construction". Qu'est ce que ça fait? Je n'arrive pas à trouver de documentation à ce sujet. Ma conjecture est la suivante: Doit-il être défini sur YES dans une application mixte Objective-C/Swift pour dire à Xcode de se lier au Swift Runtime?

34

Il n'a pas besoin d'être Oui pour la liaison. Ce paramètre s'applique uniquement lorsque vous avez une cible Objective-C pure qui dépend d'une source mixte ou pure Swift target.

La description:

Activez ce paramètre pour indiquer que le contenu incorporé dans le produit d'une cible contient Swift, afin que les bibliothèques standard Swift puissent être incluses dans le produit).

Également dans la note de version de la bêta 7:

L'étape de construction qui incorpore les bibliothèques standard Swift dans un bundle ne s'exécute désormais que pour les types de produits d'application, et uniquement si l'application elle-même, indépendamment de tout contenu incorporé, contient Swift fichiers source. Lors de la construction d'une application qui ne contient pas Swift fichiers source, mais incorpore d'autres contenus tels que des frameworks, des services XPC, des extensions d'application, etc. qui contiennent Swift code, vous devez définir le paramètre de construction "Embedded Content Contains Swift Code" (EMBEDDED_CONTENT_CONTAINS_Swift). De cette façon, les bibliothèques Swift seront inclus dans la demande.

Cordialement

24
vladof81

Selon Intégrer le contenu avec Swift dans Objective-C

Les bibliothèques standard Swift sont copiées dans un ensemble si et seulement si vous créez une application et que cette application contient des fichiers source Swift par lui-même

Si vous créez une application qui n'utilise pas Swift mais intègre un contenu tel qu'un framework qui le fait, Xcode n'inclura pas ces bibliothèques dans votre application. Par conséquent, votre application se bloquera au lancement

Pour contourner ce problème, définissez le paramètre de génération Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_Swift) sur YES. Ce paramètre de génération, qui spécifie si le produit d'une cible a incorporé du contenu avec Swift code, indique à Xcode d'intégrer Swift bibliothèques standard dans votre application lorsqu'il est défini sur OUI

3
onmyway133

Je ne pense pas qu'il soit nécessaire d'avoir une interopérabilité générale entre Swift et Objective-C. C'est aussi simple que d'ajouter Swift code et de modifier l'en-tête de pontage).

Si vous voyez une partie de la documentation sur les extensions pour iOS, le jargon mentionne un peu "incorporé": contenu incorporé, frameworks incorporés, etc. Parce que les extensions sont organisées, construites et exécutées assez différemment des applications normales, je ne serais pas surpris qu'il y ait un paramètre de construction comme celui-ci qui les concerne.

2
Isaac Drachman