2012-08-25 46 views
2

我在programmers.stackexchange.com上阅读了几个问题,以确定这个问题在这里是否更好。我认为这个问题属于SO,但我不完全确定。有关设计模块化iOS项目的建议?

我有Objective-C和UIKit的基本知识。几年前,我已经阅读了Aaron Hillegass编写的OS X(第二版)的大多数;这是我的大部分知识所在。其余来自各种网站,SO问题,SDK文档和小型个人项目(包括OS X和iOS)。

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

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

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

这样的项目的一些最佳实践,我已经描述了什么?

回答

5

我认为你是在正确的轨道上。 UIViewControllers是解决这个问题的好方法。

当你有很多选项的时候,UITabBarControllers通常很笨拙;带有可能性表格视图的欢迎屏幕可能更具可扩展性。例如,请参阅Facebook的左侧面板或内置的设置应用程序。

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

关于好的,可重用的iOS设计的主题,你可能会发现Matt Gemmell's post about API design有帮助,如果不是你正在寻找的。

+0

对于tableView推荐+1。如果有> = 5个视图,TabViews真的很好。 – sosborn

+0

我使用Grails作为服务器端框架(更好或更糟糕)。我目前的计划与选项卡视图是有一个“更多”按钮,导致不太重要的(?)模块的表视图。我想做一个跳板类型的界面,但是现在从头开始编写一个界面,我还没有找到我喜欢的第三方组件(并且我听说iOS6中可能有一个组件)。 –

+0

只需阅读您的编辑。我喜欢设置应用界面的建议。 –

2
  • 建立编码风格和资源位置的约定。
  • 开发静态库。
  • 如果你的静态库需要他们自己的资源(这可能是一个必要的痛苦),你可能想要为你的资源使用bundle来减少资源冲突。
  • 集中您的构建配置文件,而不是试图定义每个项目中的每个设置(使用xcconfigs)。

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

一个重要的注意事项:由于ObjC符号(以及它们引用的内容)不能被​​去除,所以在这些情况下我经常会碰到C和C++符号(如果适用)。这可以减少很多未使用的“二元脂肪”。因此,主要处理其他库(例如系统库)中声明的符号的“核心”库和库可能使用C和C++,而您的更高级抽象和派生类型可能使用ObjC。