Delegate 是协议的一种,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法。
Example:
NSNotification: 这是一个观察者模式, 一方添加观察者,一方发出通知。
首先在你需要监听的类中加入观察者:
[[NSNotificationCenter defaultCenter] addObserver:self selector:(SEL)aSelector name:aName object:(id)anObject];
- (void)method: (NSNotification:)sender { NSDictionary *dict = [sender userInfo]; }
也就是说监听到了anObject发出消息,消息的名字是aName,此时observer就调用aSelector方法,把notification的userInfo拷贝到本地。
发送通知:
[[NSNotificationCenter defaultCenter] postNotificationName:aName object:self];
通知中心将会区分它们对象对这些通知感兴趣并且通知他们。如果除了关心观察者的通知名称和观察的对象,还关心其他之外的对象,那么就把之外的对象放在通知的可选字典中,或者用方法
postNotificationName:object:userInfo:移除通知:removeObserver:和removeObserver:name:object:
[[NSNotificationCenter defaultCenter] removeObserver:observer name:nil object:self];
1. 当一个界面需要回调子界面的方法,并且与其他任何界面没有关联,可以考虑使用block。
2. 当很多界面都使用到相同的实现方法,可以考虑使用代理。
3. 两个界面看起来没有任何关联,但有一方需要随时监听外来的消息,可以考虑使用通知。
原文地址:http://blog.csdn.net/sinat_27706697/article/details/45476533