协议和代理以及NSNotification、Block、Delegate、KVO的区别

协议:

1、协议是一个方法列表,并且里面的方法多少是相关的

2、协议中的方法默认是必须要实现的,即@required

代理:

1、代理又叫委托,是一种设计模式

2、代理是对象与对象之间的通信交互

3、代理是通过协议来实现的

4、代理的属性要用assign修饰,以防止循环引用

NSNotification、Block、Delegate、KVO的区别:

1、NSNOtification通知是一对多的关系,一个对象向所有观察者提供变更通知;

2、Block是一对一的回调机制,更加简洁;但是当通信事件比较多时,建议使用代理;

3、Delegate也是一对一的回调机制,需要协议方法。代理对象实现协议方法,并且需要建立代理关系才能进行通信;

4、KVO观察者模式,是当被观察者对象的属性发生改变时,会向观察者发送一条改变的通知的设计模式。

你可能感兴趣的:(协议和代理以及NSNotification、Block、Delegate、KVO的区别)