2010-12-08 41 views
1

J'ai un projet A. Cela produit un produit qui fonctionne et qui a déjà été soumis à l'App Store, etc. Maintenant, j'aimerais créer un nouveau projet, nous allons appelez le projet B, et je veux que B soit basé sur A. Évidemment, B ajoutera plus d'interface utilisateur et de comportement à A.Création d'un nouveau projet basé sur un projet existant (Réutilisation de projet)

Après quelques recherches, la seule option semble être d'utiliser le référencement inter-projets, car J'aimerais réutiliser les XIB, les images, etc. du Projet A dans le Projet B. Ai-je raison de supposer que le référencement inter-projets devrait fonctionner dans ce scénario?

Eh bien, j'ai de sérieux problèmes pour faire fonctionner cette machine. J'aimerais atteindre la réutilisation au niveau du projet. En Java ou en .NET cela ne serait même pas une considération, la technologie le permet. Parce que l'iPhone ne supporte pas les frameworks, je pense que les développeurs sont poussés vers des approches plus primitives comme la duplication de code.

Alors, comment puis-je résoudre ce problème. Comment puis-je créer mon projet B, basé sur le projet A (y compris les XIB, les images, etc.)?

Merci,

Répondre

1

Si A et B sont similaires, vous pourriez peut-être simplement créer une nouvelle cible de construction; Cela vous donnerait un seul projet avec la cible A et la cible B. Les deux cibles auraient accès à n'importe laquelle des ressources du projet.

Si vous avez un peu de code partagé, vous pouvez créer une bibliothèque statique; iOS ne prend pas en charge la liaison dynamique aux bibliothèques générées par les utilisateurs, mais il prend très bien en charge la liaison statique. Cela rendrait les dépendances entre projets utiles, car vous pourriez avoir la bibliothèque de référence B du projet A et la construire comme une dépendance.

+0

iOS supporte certainement la liaison dynamique! Vous devriez reformuler. –

+0

Merci Adam. Mon principal problème avec les bibliothèques statiques est qu'elles ne permettent pas le partage de ressources comme les XIB. – Ushox

+0

@Shaggy Frog: Désolé, iOS prend en charge la liaison dynamique, mais uniquement pour les bibliothèques fournies par le système. Je parlais dans le contexte de la liaison avec une bibliothèque générée par l'utilisateur à des fins de réutilisation. Fixé. –

0

je l'ai fait la même chose à un moment donné:

Je copié et collé l'application entière et avait deux applications distinctes que je pouvais travailler individuellement.

+0

Mais je ne veux pas copier et coller le projet A dans le projet B car ils auront des cycles de vie différents. S'il y a un bug dans le code commun, je ne veux pas le réparer dans les deux projets. – Ushox

+0

@Ushox: Ah, bon point. – Linuxmint

0

Contrairement à l'opinion populaire, il est possible de create iOS frameworks.

+1

Oui, mais les applications utilisant des frameworks privés seront rejetées. –

+0

Je ne suis pas sûr de la véracité de cette déclaration. Lien? –

+0

Vous ne pouvez pas créer de lien dynamique avec des bibliothèques non-système au moment de l'exécution. Les frameworks privés utilisent des bibliothèques dynamiques. Ergo, vous ne pouvez pas soumettre des builds qui pointent vers des frameworks privés. –

0

Peut-être que vous pourriez utiliser un outil comme Git ou scm piston (http://piston.rubyforge.org) et 'clone' du code. Faites quelque chose comme:

#add original project to git 
cd /your/base/project/code 
git init 
git add . #Stages all files to check-in index 
git commit -m 'Your commit message here' 

Puis

#clone the original project into a new one 
cd /your/new/project/directory 
git clone /your/base/project/code 
git checkout -b aNewWorkingBranchName #create a new working branch to modify 
#modify code to your <3's content, use git pull/push/merge/rebase/diff as required to track/update original project 

Cela devrait vous permettre de développer le « nouveau » projet de façon indépendante, tout en vous permettant de tirer des changements au besoin. Piston permet la 'dérivation du fournisseur' contre les dépôts Git ou Subversion, liant votre nouveau code à une révision à distance particulière. Jetez un oeil à sa documentation.

+0

Merci! Je vais jeter un coup d'oeil à cette option. – Ushox