7
votes

Comment partager / distribuer le code de l'objectif Compilé (comme un pot en Java)?

Je voudrais écrire un code objectif-C pour la distribution. Quelle est la meilleure façon de coller la sortie. En Java, vous pouvez coller votre code dans un fichier JAR et la distribuer. Quel serait l'équivalent dans l'objectif-c?

Le lien suivant est proche, mais semble aborder davantage de problèmes d'espace de noms que je ne suis pas préoccupé. Je suis principalement préoccupé par la définition du code pour une distribution facile.

équivalent d'objectifs-C de packages Java?


0 commentaires

5 Réponses :


5
votes

Vous voulez créer un cadre. Il existe un point de départ de Xcode pour un nouveau projet pour en créer un. Il y a quelques mises en garde et gotchas, mais dans l'ensemble, le processus est simple.

Edit: Pour plus de précision: Si vous envisagez de le distribuer comme FOSS; l'emballer dans un cadre pourrait être surchargé; Il suffit de distribuer le code source pourrait être une option plus sensible et plus simple. Mais si vous souhaitez garder la source à vous-même ou le distribuer avec une collection de ressources pertinentes, un cadre pourrait certainement être une bonne idée.

Reedit: Pour une introduction, voir http://developer.apple.com / Documentation / MacOSX / Conceptual / BPFrameworks /


0 commentaires

1
votes

Vous n'avez pas dit si c'était pour iPhone ou non. Sur l'iPhone, il doit être une .sa (bibliothèque statiquement liée) - mais je pense que la distribution normale serait par un .dylib ou .so


2 commentaires

Il serait tout à fait un .framework; qui est un .dylib emballé dans une hiérarchie de dossiers avec des fichiers d'en-tête pertinents et des ressources.


Principalement iPhone - mais je souhaite peut-être que cela soit assez générique pour travailler sur le Mac aussi.



-1
votes

Les programmes Java sont exécutés dans le contexte d'une machine virtuelle. JAR contient des bytecodes abstraites qui doivent être converties en code machine native par le VM.

Objective-C, comme C, est compilé dans un code de machine natif, tel qu'un fichier gagnant .exe, directement exécutable par le système d'exploitation.

La plupart des programmes de toute complexité consistent en plusieurs fichiers et incluent des DLL, des fichiers d'icônes, etc. La configuration de vos fichiers à distribuer serait généralement traitée par un utilitaire de configuration.


2 commentaires

La dernière partie de cela semble totalement non liée à l'objectif-c. Il n'y a pas d'utilitaire de configuration, et heureusement, aucune DLL n'est dans le même sens que Windows. Les bibliothèques dynamiques sur OS X peuvent réellement contenir plusieurs versions. Les clients peuvent donc être un lien spécifiquement contre une version donnée et ne pas casser si la bibliothèque doit violer la compatibilité à l'envers. Les cadres sont la voie à suivre.


Objective-C n'est pas exclusif au système d'exploitation X.



7
votes

Un cadre est presque certainement la voie à suivre. L'une des choses vraiment belles sur les cadres sur OS X est qu'ils peuvent regrouper le code exécutable, les en-têtes, les métadonnées, les images, les icônes, etc. dans un seul paquet. En outre, des cadres peuvent être inclus dans * / bibliothèque / frameworks / ou même dans votre ensemble d'applications pour découper complètement de toute autre dépendance de l'application sur une version donnée du cadre.

Apple's Guide de programmation-cadre est le meilleur endroit pour commencer avec des cadres.

Créer un cadre est simple. Fondamentalement, dans Xcode, vous choisissez fichier> nouveau projet ... et sélectionnez Cadre, puis COCOA Cadre. Cela mettra en place un nouveau projet avec une cible de cadre et tout emballera automatiquement pour vous lorsque vous construisez.

N'oubliez pas que la documentation et les tests d'unités sont une bonne chose ™, en particulier pour les cadres, qui sont intrinsèquement plus susceptibles d'être utilisés par plusieurs clients que la plupart des indicateurs d'utilisateurs finaux. Vous pouvez ajouter plus d'objectifs à votre projet Cadre Xcode pour le documenter et le tester.

Depuis que vous recherchez des exemples, consultez CHDATRACUCTURS.FRAREWORK (un projet qui Je me développe) et PSMTABBARCONTROL.Framework (qui inclut beaucoup de ressources supplémentaires dans le cadre). Les deux sont open-source et doivent fournir des exemples adéquats pour rouler le vôtre.

Un mot de conseils pour vous enregistrer un peu à la tête-grattage: vos fichiers d'en-tête ne seront pas copiés dans le cadre bâti, à moins que vous cliquiez sur la cible-cadre et modifier le rôle au "public" (ou "Private").


1 commentaires

J'ai baissé cela parce que les liens fournis sont, plus ou moins, cassés. CHDATAXtructures.Framework Websvn ne contient rien et psmTabbarcontrol.framework Résultat en 404.



0
votes

Vous pouvez le compiler comme un cadre ou une bibliothèque statique (.so je crois).


0 commentaires