设计模块化iOS项目的建议?

时间:2012-08-25 00:23:44

标签: ios ios5 uikit

我在programmers.stackexchange.com上阅读了几个问题,以确定这个问题是否更好。我认为这个问题属于SO,但我不完全确定。

我对Objective-C和UIKit有基本的了解。几年前,我读过Aaron Hillegass的 OS X Xocoa编程(第2版);这是我的大部分知识源于此的地方。其余的来自各种网站,SO问题,SDK文档和小型个人项目(OS X和iOS)。

我正在为我工​​作的大学开设一个iOS(特别是iPhone)项目。此应用程序将具有不同的功能部分。 “部分”的一些示例将是:虚拟学生ID卡,当前学期的课程表(针对用户),校园地图等。我希望能够在将来的应用程序版本中轻松添加新的部分。因此,我想设计一个项目,使得一个部分是一个独立的,从主项目,一组代码(尽可能多)。

除了能够通过创建新模块添加新功能之外,我希望该项目可供更多自己的开发人员使用。也就是说,我希望我的团队中的其他开发人员能够通过遵循“最佳实践”为应用程序开发新模块。

目前,我的项目基于UITabBarController,我的“模块”是新的UIViewController和NIB。我觉得这可能不是建立我的项目的最佳方式。因此我的问题是:

我所描述的这样一个项目的最佳实践是什么?

2 个答案:

答案 0 :(得分:5)

我认为你走在正确的轨道上。 UIViewControllers是打破这种局面的好方法。

当你有很多选择时,UITabBarControllers通常很尴尬;一个带有可能性表格视图的欢迎屏幕可能更具扩展性。例如,请参阅Facebook的左侧面板或内置的“设置”应用。

我通常发现iOS项目中重用的难点不是视图控制器(通常是隔离的),而是底层基础架构,例如网络请求,数据存储,帐户管理等。您可能希望从现有的框架开始(例如,Parse或RestKit),或者至少看看它们是如何分解的。

关于良好,可重复使用的iOS设计的主题,您可能会发现Matt Gemmell's post about API design有用,如果不是您正在寻找的话。{/ p>

答案 1 :(得分:2)

  • 建立编码样式和资源位置的约定。
  • 开发静态库。
  • 如果您的静态库需要自己的资源(这可能是一种必要的痛苦),您可能希望使用资源包来最小化资源冲突。
  • 集中构建配置文件,而不是尝试定义每个项目中的每个设置(使用xcconfigs)。

然后您可以将这些库配置为应用项目中的依赖项,并进行适当的构建,链接和复制。

一个重要的注意事项:在这些情况下(在适用的情况下)我经常会错误地使用C和C ++符号,因为无法剥离ObjC符号(以及它们引用的内容)。这可以减少很多未使用的“二元脂肪”。因此,主要处理在其他库(例如系统库)中声明的符号的“核心”库和库可能使用C和C ++,而更高级别的抽象和派生类型可能位于ObjC中。