KVC / KVO/ Delegate/ Notificat
2016-08-25 本文已影响31人
奕十八
ldajfnng
KVO
- 一对多,观察者模式,键值观察机制,它提供来观察某一属性变化的方法,极大的简化了代码。
KVC
- 键值编码,一个对象在调用setValue方法的时候,首先会检查有没有key多对应的set方法,存在就调用set方法。如果set方法不存在,就查找_key的成员属性是否存在,存在就直接赋值,如果找不到_key,就看有没有相同名称不带下划线的key,�有就赋值,如果没有就调用:setValue : forUndefinedKey
Delegate
- 通常发送者与接受者的关系是一对一的关系
- 代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获得那些类到指针
- 可以减少框架到复杂度。delegate机制使得接收者可以改变发送者的行为。
Notification
- 观察值模式,通常发送者和接收者是间接的多对多的关系,接受者并不能反过来影响发送者的的行为。
区别:
- delegate的效率高于NSNotification
- 如果两个模块之间联系不是很紧密,就用NSNotification传值,例如多线程之间传值就用通知
- delegate只是一种简单的回调机制,且主要在一个模块中。