Je souhaite créer un cadre général dans le SDK iOS. Mes exigences sont:
J'ai un framework appelé "Framework A", je veux créer un autre framework appelé "Framework B". Je veux ajouter "Framework A" dans "Framework B" en tant que sous-framework et les utilisateurs n'ont qu'à importer "Framework B" dans leur projet pour utiliser à la fois "Framework A" et "Framework B". En d'autres termes, "Framework B" fonctionnera comme un wrapper pour "Framework A". J'ai lu à partir de Apple via le lien suivant concernant les créations de framework:
mais cela n'expose pas la façon de créer un cadre général.
Veuillez suggérer une méthode étape par étape pour créer un cadre général.
Nous savons tous que la création d'un cadre général est fortement déconseillée par Apple. Mais Apple dit également que c'est possible via Xcode. https://developer.Apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html# // Apple_ref/doc/uid/20002254-BAJHGGGA
J'ai réussi à créer un cadre général via cette approche simple sur Xcode 5.1. Nous avons juste besoin de prendre soin d'une configuration spéciale pour relier le sous-cadre au cadre général. Voici mon approche: -
1) Installez le vrai Static iOS Framework
sur Xcode 5.1 à partir de la méthode décrite ici: - https://github.com/kstenerud/iOS-Universal-Framework .
Désormais, le "Framework iOS statique" peut être créé à l'aide de la nouvelle option de Xcode.
2) Créez un Static iOS Framework
et modifiez le Target-> Build Settings-> Architectures-> Architectures
paramètres aux architectures standard. Cela créera le cadre avec toutes les architectures standard.
3) Ajustez les fichiers d'en-tête public dans Target-> Build Phase-> Copy Headers
. Nous pouvons définir la visibilité du fichier d'en-tête ici.
4) Liez SubFramework à UmbrellaFramework dans Target->Build Phase -> Link Binary With Libraries
. Nous pouvons également avoir besoin de lier d'autres cadres standard en fonction de notre utilisation.
5) Il se peut que nous devions également ajouter des ressources groupées dans Target-> Build Phase-> Copy Bundle Resources
si nous en avons besoin.
6) Il se peut que nous devions également ajouter -ObjC
à Target-> Build Settings->Linking-> Other Linker Flag
, car nous pouvons avoir besoin de charger un grand sous-cadre où il y a de nombreuses catégories à charger ou nous devons également charger des frameworks supplémentaires.
7) Ajoutez Copy File
en utilisant Target-> Build Phases-> +-> New Copy File Build Phase
.
8) Modifiez sa destination en Frameworks
et ajoutez-y SubFramework.framework. Cela copiera SubFramework dans Umbrella Framework.
9) Pour la démo, j'ai ajouté deux méthodes de démonstration dans la classe UmbrellaFramework. Un pour la démonstration de l'appel de la méthode du cadre général et un pour l'appel de la méthode subFramework.
10) Sélectionnez iOS Device
et archiver le projet UmbrellaFramework à partir de Menu->Product->Archive
. Cela créera notre cadre général et c'est tout.
11) Il est maintenant temps de créer un nouveau projet de démonstration et de le lier à UmbrellaFramework.
12) Importez simplement l'en-tête UmbrellaFramework et appelez les deux méthodes. Il affichera la fenêtre Hello messages in log.
Pour créer un Swift qui contient un sous-framework, vous pouvez suivre le guide étape par étape écrit ici: Framework de parapluie