您的位置:首页 > 运维架构 > 网站架构

IOS应用开发架构

2014-05-15 16:30 162 查看
转发别人的博客: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、任何事件都有两面性,设计模式不可滥用。拿单例来说,优点嘛,方便,只有一个对象,所以很多示例代码用它来传值;由于申明头文件后就可以直接使用,这就破坏了软件的整体框架,提高了各模块间的耦合度。所以如果是开发第三方库,以单例的形式给开发者提供功能是个不错的选择;但如果是直接开发产品,建议不要设计单例,除非你的项目很小很小,或者作工具类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: