转发别人的博客:http://blog.csdn.net/yjh4866/article/details/7831875
做IOS开发将近两年了,写过不少代码,做过不少项目。分享一下我设计IOS应用的架构。
本文为个人观点,如有争议望留言
我的IOS应用开发结构图
整体结构很清晰,是一个树状结构。所以只做几点约定说明:
1、关于ViewController
(1)各ViewController之间是独立的,任意一个ViewController的实现中不得实例化另外一个ViewController,除非像UIImagePickerController似的独立功能的封装。
(2)ViewController通过接口或DataSource协议加载数据;通过Delegate协议触发数据存储、网络及自身的退场和其他ViewController的入场。
(3)ViewController的DataSource协议与Delegate协议由UIEngine实现。各ViewController的实例化及数据的加载、事件的触发由UIEngine完成,即UIEngine管理着所有ViewController。
2、关于View
(1)View的整体框架也是一个树状结构。子View之间的数据交互只能由父View来完成,即子View触发事件时调用自己的Delegate协议,各View的协议由父View实现。
(2)各子View之间不得交叉实例化或调用,不得设定自己的位置(子View不知道自己的位置是否会遮挡住兄弟View,但大小可以自己设定)。
3、关于CoreEngine
服务器端返回的数据到达Net层,Net层通过Delegate协议传回到CoreEngine,即CoreEngine实现Net层的Delegate协议。
4、关于Notification
服务器端的数据在Net层通过Delegate协议到达CoreEngine后触发Notification,ViewController注册相关的Notification即可收到网络数据。通常情况下约定,只有ViewController可注册消息。
5、图片等资源的命名,一定要有规律,比如Login_OK.png是登录页面的OK按钮图片。
6、任何事件都有两面性,设计模式不可滥用。拿单例来说,优点嘛,方便,只有一个对象,所以很多示例代码用它来传值;由于申明头文件后就可以直接使用,这就破坏了软件的整体框架,提高了各模块间的耦合度。所以如果是开发第三方库,以单例的形式给开发者提供功能是个不错的选择;但如果是直接开发产品,建议不要设计单例,除非你的项目很小很小,或者作工具类。