协议:
1、协议是一个方法列表,并且里面的方法多少是相关的
2、协议中的方法默认是必须要实现的,即@required
代理:
1、代理又叫委托,是一种设计模式
2、代理是对象与对象之间的通信交互
3、代理是通过协议来实现的
4、代理的属性要用assign修饰,以防止循环引用
NSNotification、Block、Delegate、KVO的区别:
1、NSNOtification通知是一对多的关系,一个对象向所有观察者提供变更通知;
2、Block是一对一的回调机制,更加简洁;但是当通信事件比较多时,建议使用代理;
3、Delegate也是一对一的回调机制,需要协议方法。代理对象实现协议方法,并且需要建立代理关系才能进行通信;
4、KVO观察者模式,是当被观察者对象的属性发生改变时,会向观察者发送一条改变的通知的设计模式。