2011-10-11 40 views
0

我有两个项目共享相当一部分逻辑,本地化,属性甚至视图(Logindialog,Popovers等)。我现在想把相交集合放入一个新的项目中,这个项目应该用作某种通用库。如何使用项目作为公共代码库

我想保持共同的项目作为一个git子模块在我的其他项目:

Project A 
- Classes 
- Resources 
- CommonLibrary (git submodule) 

Project B 
- Classes 
- Resources 
- SomeBSpecificFolder 
- CommonLibrary (git submodule) 

的CommonLibrary现在大概也有它自己的Xcode项目。我不知道现在应该如何解决这个问题。我知道以下选项:

  1. 使用库(。一个文件和.h文件)

    TestFlight例如是否这样。我非常喜欢这样一个事实,即我可以针对二进制文件进行编译,而不会“看到”源代码。所以只需要一个干净的API来处理事情。

  2. 包括整个项目(项目依赖性)

    Three20不会像这样,我觉得很讨厌有一些6个子项目在我的项目。但在我的情况下,它只会是一个项目,所以这也可能是一个选项。

  3. 只需在CommonLibrary文件夹内有松散的源文件,并将其手动添加到两个项目中。然后该项目将编译源和任何项目特定的源。这看起来很像我的一个解决方法,我想我宁愿以某种方式捆绑常见的来源。此外,如果有新文件,我总是必须将它们添加到其他项目。

你们可以给我一些建议,并告诉我,如果有另一种选择,或者你认为这些方法的优点和缺点?

非常感谢您的帮助!

回答

3

从清晰的非应用程序特定的角度来看,您应该期待创建一个库/框架。这提供了:

  • 的可重用性,你想
  • 没有延长建立相关的项目的时候,
  • 同时保持代码库(可维护性)的一致性,
  • 保持你的API一致的跨使用项目和
  • 管理层之间的依赖关系

就Xcode而言,如果我从我的Ope中正确地记得nStep的日子,你应该看到创建一个新的框架项目,将提供该类型的项目相关的生成文件。生产的粗略冲浪:

http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

和稍微友好:

http://atastypixel.com/blog/creating-applications-in-xcode-using-frameworks/

此外,你可能真的要叠加的框架,以进一步提高可重用性。也就是说,不要只创建一个框架,每层创建一个框架:将框架中的通用代码放入框架,基于UI/AppKit的类中,等等。这样,您的框架与任何现场使用您的课程和项目。例如,如果您在某个基础类上有一个类别,请将其放入一个公共/基础框架中,该框架可以由您构建的任何其他常见/基础类和项目重用。如果要将它放入具有UI库和依赖项的UI层框架中,那么它不能被基础级项目重用(因为它们不能具有UI级别的依赖项)。

希望这有助于...

+0

好东西谢谢! – Besi

+0

嗯......我想要纠正,但是如果你制作自己的框架(即私人框架),不要期望苹果批准你的应用程序在应用程序商店出售,至于我所知,私人框架仍然是过时的。即,如果它不是您的应用程序中的源代码或Apple提供的框架,则无法在您的应用程序中使用它。 – unsynchronized

0

我发现了一个在github上称为RestKit项目,这似乎是一个第三方的框架,它可以包含在现有项目中一个很好的例子。

自述文件和wiki describe nicely需要完成哪些步骤才能包含该项目。我想这对于想自己创建框架的人来说是一个很好的起点。

相关问题