KVC / KVO/ Delegate/ NotificationCenter

ldajfnng

KVO

  • 一对多,观察者模式,键值观察机制,它提供来观察某一属性变化的方法,极大的简化了代码。

KVC

  • 键值编码,一个对象在调用setValue方法的时候,首先会检查有没有key多对应的set方法,存在就调用set方法。如果set方法不存在,就查找_key的成员属性是否存在,存在就直接赋值,如果找不到_key,就看有没有相同名称不带下划线的key,�有就赋值,如果没有就调用:setValue : forUndefinedKey

Delegate

  • 通常发送者与接受者的关系是一对一的关系
  • 代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获得那些类到指针
  • 可以减少框架到复杂度。delegate机制使得接收者可以改变发送者的行为。

Notification

  • 观察值模式,通常发送者和接收者是间接的多对多的关系,接受者并不能反过来影响发送者的的行为。

区别:

  • delegate的效率高于NSNotification
  • 如果两个模块之间联系不是很紧密,就用NSNotification传值,例如多线程之间传值就用通知
  • delegate只是一种简单的回调机制,且主要在一个模块中。

你可能感兴趣的:(KVC / KVO/ Delegate/ NotificationCenter)