#应用程序的构架
iOS应用程序都遵循MVC的构架,Model负责存储数据和处理业务逻辑,View负责显示数据和用户交互,Controller是两者的中介,协调Model和View相互合作。规则如下:
1.Controller能够访问Model和View,Model和View不能互相访问。
2.当View与用户交互产生事件时,使用target-action方式来处理
3.View需要处理一些特殊UI逻辑或获取数据源时,通过delegate或datasource方式交给Controller来处理
4.Model不能直接与Controller通信,当Model有数据更新时,可以通过Notification或KVO(key Value observing)来通知Controller更新View
#iOS应用程序有哪些关键对象以及他们的职责是什么?
1.UIApplication对象用户与iOS设备交互时产生的事件(Multitouch Events-多点触碰事件 Motion Events-运动事件 remote control events-远程控制事件)交由UIApplication对象来分发给control objects对应的target objects 来处理并且管理整个事件循环,而一些关于app运行时重要事件委托给app delegate来处理。
2.App delegate对象遵循UIApplicationDelegate协议,响应app运行时重要事件(app启动、app内存不足、app终止、切换到另一个app、切回app),主要用于app在启动时初始化一些重要的数据结构,例如,初始化UIWindow,设置一些属性,为window添加rootViewController
3.View Controller对象 View Controller有一个View属性,是View层次结构中的根View,你可以添加view来构建复杂的view,controller有一些viewDidLoad、ViewWillAppear等方法来管理view的生命周期,由于它继承UIResponder,还会影响和处理用户事件
4.Documents和data model对象 data model对象主要用来存储数据。可以用来记录历史搜索的地址,当app下次启动时,读取和显示搜索地址历史
Document对象继承(UIDocument)用来管理一些或所有的data model对象,document对象并不是必须的,但提供一种方便的方式来分组属于的那个文件或者多个文件的数据。
5.view、对象可以通过addSubview和removeFromSuperview等方法来管理view的层次结构,使用layoutIfNeeded和setNeedsLayout等方法布局view的层次结构,当你发现系统提供的view已经满足不了你的外观需求时,可以重写drawRect方法或者通过layer属性来构造复杂的图形外观和动画,UIview继承UIResponder,所以也能够处理用户事件。
control对象通常就是处理特定类型用户交互的view,常用的有button、switch、textField等。
除了使用view和control来构建view层次结构来影响app外观之外,还可以使用Core Animation框架的layer对象来渲染view外观和构建复杂的动画