ios通知中心用得不是很多,可能是效率不及代理,所以在相对于代理机制而言,通知中心确实用的比较少。当然其也有代理不可比拟的优势:代码的耦合度非常好,可避免代理之间的层层迭代。
通知中心的原理是当事件发生时,检查内部的消息转发表,将消息发送给注册者。所以,谁想要获得消息,只需要向通知中心注册即可,注册方法:
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject
参数说明:
observer:需要获得通知消息的对象
selector:获得通知中心发出的消息后,注册者执行的动作
name:注册者感兴趣的事件
object 注册者感兴趣的事件的发出对象(如果指定nil则监听任何对象发送的通知)
总而言之就是告诉中心中心:谁向监听某个对象(全部对象)的某个消息,当符合条件的消息发生时,执行其某个动作,比如说,我想在app进入后台的时候做一些处理:那就可以这样子:
[[NSNotificationCenter
defaultCenter]
addObserver:self
selector:@selector(applicationWillResignAct
UIApplicationWillResignA
-(void)applicationWillResignAct ive{
//你想执行的动作
}
当然你也可以定义自己的消息如下面的@"notify,并通过postNotificationName将消息发送出去:
[[NSNotificationCenter defaultCenter] postNotificationName:@"notify"
object:nil];
(此时,绑定方法为:
[[NSNotificationCenter
defaultCenter] addObserver:self
selector:@selector(applicationWillResignAct ive:name:@"notify"object:nil];)