NSNotification (一对多)
优点:
1.简洁,代码量少;
缺点:
1.通知发送者不关心接受者有任何反馈;
2.乱用会导致过程难以追踪,特别是多个通知嵌套使用的情况;
3.NotificatonName使用NSString描述,编译器不会对内容进行检查,容易造成重复或写错;
delegate (一对一)
优点:
1.调用过程清晰,便于追踪;
2.编译器可检测没有实现代理的必须实现的方法;
缺点:
1.实现比较繁琐,代码不够简洁;
KVO (一对多)
优点:
1.简洁,代码量少;
2.不用改变被观察对象内部就可以实现对象间的通讯;(SDK)
3.可以观察到对象的最新值和先前值;
4.可以观察嵌套对象;(使用keyPath)
缺点:
1.属性改变导致观察代码重写;
2.ketPath使用string描述,编译器不会对内容进行检查,容易造成写错;
NSNotification侧重于"广播",delegate侧重于"解耦",KVO侧重于"值的变化"
网友评论