1、KVO(Key-value-Observing):观察者模式,键值观察机制,提供观察某一对象属性的方法,一对多。
第一步:添加观察者
addObserver:
forKeyPath:
options:
context:nil]
这里需要穿入四个参数,第一个就是当前观察者,第二个就是被观察者的属性,第三个是个枚举,NSKeyValueObservingOptionNew回收到最新的值也就是更新后,NSKeyValueObservingOptionOld回收到更新前的值,NSKeyValueObservingOptionInitial新旧值都没收到,NSKeyValueObservingOptionPrior值改变会调用两次,第四个参数是可以传递参数。
第二步:实现观察方法,在这里面处理想要处理的事情
observeValueForKeyPath:
ofObject:
change:
context:
第三步:移除removeObserver: forKeyPath:
2、KVC(Key-Value-Coding),键值编码,一个对象在调用setValue的时候会分四步:检查是否存在相应key的set方法,存在就调用set方法;不存在就查找_key的成员变量是否存在,存在就赋值;如果_key没找到就查找相同名称的key,找到就赋值;如果没有就调用ValueForUndefineKey和setValue:forUndefineKey。
3、Delegate,代理只能一对一,实现主要有定义,委托,实现,调用。
4、Notification,通知中心,通常发送者和接受者是间接的多对多关系,消息的发送者只会告诉接收者将要发送消息或者已经发消息,相当于是单向的(接收者不能反过来影响发送者行为),完成通知需要四步:
第一:注册一个通知addObserver: selector: name: object:
第二:发送通知postNotificationName: object: userInfo:
第三:实现selector方法,完成想要做的是
第四:移除removeObserver: name: object:
网友评论