The Most Important Design Pattern: Model-View-Controller
理解model,view,controller之间的通讯方式
Delegation: Acting on Behalf of Another (Framework) Object 代理
被代理对象必须定义一个属性,用来保存对代理对象的引用(通常为weak)
同时应该定义一个代理对象要遵守的协议
Protocol: Enabling Communication Between Objects Not Related by Inheritance 协议
Notification Center: Notifying Interested Observers of an Event 通知中心
任何对象必须先向通知中心注册后,才能观察通知 。
注册的时候,必须用selector指定通知发送时调用的方法,该方法必须有一个变量,即通知对象
观察者也可以制定提交通知的对象。
通知中心与代理消息类似,都是在某事件发生时给任何对象发送消息。但是处理通知的方法与代理方法不同,不能返回值。
通知是异步而代理是同步
Target-Action: Encapsulating a Message to Be Sent When an Event Occurs
Key-Value Observing: Notifying an Observer When a Value Changes
KVO允许一个对象观察另外一个对象的属性,当属性变化时通知观察对象。
观察对象可以知道属性变化之前和之后的两个值,如果属性是一对多关系(数组对象),那么还可以获得其中发生变化的对象。
与通知中心不同的是,KVO通知发生在被观察对象和观察对象之间,而通知中心可能有多个潜在的观察者。
Other Framework Designs Based on Design Patterns
视图层次结构
响应链
The responder chain is a series of objects—mostly views, but also windows, view controllers, and the application object itself—along which an event or action message can be passed until one object in the chain handles the event.
It thus is a mechanism for cooperative event handling. The responder chain is closely related to the view hierarchy.