如何使用项目作为通用代码库

时间:2011-10-11 15:45:25

标签: objective-c xcode git xcode4

我有两个项目,它们共享相当一部分逻辑,本地化,属性甚至视图(Logindialog,Popovers等)。我现在想将交叉集合放入一个新项目中,该项目应该用作某种公共库。

我想在我的其他项目中将公共项目保留为git子模块:

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

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

CommonLibrary现在可能也是它自己的Xcode项目。我现在不确定应该如何解决这个问题。我知道以下选项:

  1. 使用库(.a文件和.h文件)

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

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

    Three20是这样的,我发现在我的项目中有6个子项目非常烦人。但是在我的情况下,它只是一个项目,所以这也可能是一个选项。

  3. 只是在CommonLibrary文件夹中没有项目的松散源文件,并手动将它们添加到两个项目中。然后,该项目将编制源以及任何项目特定的源。这对我来说看起来很像一种解决方法,我想我更愿意以某种方式捆绑共同的来源。此外,如果有新文件,我总是要将它们添加到其他项目中。

  4. 你们可以给我一些建议并告诉我是否有其他选择或你认为这些方法的优点和缺点是什么?

    非常感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

从一个干净的,非特定于应用程序的角度来看,您应该寻找创建库/框架。这提供了:

  • 您想要的可重用性
  • 不延长依赖项目的构建时间,
  • 同时保持代码库的一致性(可维护性),
  • 使用项目和
  • 保持API一致
  • 管理图层之间的依赖关系

就Xcode而言,如果我在OpenStep时代正确记得,您应该创建一个新的Framework项目,该项目将为该类型的项目提供相关的makefile。粗略的冲浪产生了:

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

而且稍微友好一点:

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

此外,您可能实际上想要对框架进行分层以进一步提高可重用性。也就是说,不要只创建一个框架,每层创建一个:将公共代码放在 Foundation 框架中,将基于UI / AppKit的类放在 UI 框架中等等这样,您的框架与您使用的类和项目所处的任何层相关。

例如,如果您在某个基础类上有一个类别,请将其放在一个公共/基础框架中,该框架可以由您构建的任何其他公共/基础类和项目重用。如果您将它放在具有UI库和依赖项的UI层框架中,那么它就无法被基础级项目重用(因为它们不具有UI级依赖项)。

希望这会有所帮助......

答案 1 :(得分:0)

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

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