Delegate 代理的实现方法为制订协议,声明代理方法,另一个类实现代理方法,返回值.
NSNotification 建立通知中心 NSNotificationCenter ,被观察者在某方法中,建立通知中心,写一个通知的识别名,每次执行该方法时,进行一次通知,而观察者通过对应的方法监听,该方法被执行,则执行相对应操作,较为灵活,范围广;
KVO 建立观察者对象,观测所要接收的参数.在另一个类,添加观测方法,传递参数,如果该类中参数发生变化,观察者对象做出反应.前面理解是错误的.实际上,被观察者添加观察者addObserver:forKeyPath:options:context: 添加该方法,观察者类中添加对应的方法,当被观察者发生变化时,会自动调用观察者方法observeValueForKeyPath:ofObject:change:context:,从而执行进一步操作.使得观察者与被观察者完全解耦,但是缺点是只能监听类的属性值,并且只能用NSString来接收属性值.
代理为一对一,但重点在于返回值,做出的进一步操作是根据返回值来进行,例如UITableView的代理方法,都是根据返回值来进一步执行操作;
而通知中心和观察者模式则是一对多,通知中心发出通知,观察者观察变化,发出方不会在意接收方的变化,我只是发出通知就完成了.