通知中心 NSNotificationCenter
2015-03-20 16:02 l4y 阅读(331) 评论(0) 编辑 收藏 举报NSNotificationCenter
通知中心提供了一种在程序内广播信息的途径,一个NSNotificationCenter对象本质上是一个通知分发表(notification dispatch table)。
每一个运行中的Cocoa程序有一个默认的通知中心,一般不用自己创建。一个NSNotificationCenter对象仅仅可以在一个单独的程序中传送通知,如果想要在不同进程中发送、接受通知,使用NSDistributedNotificationCenter的实例。
- (void)addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *)notificationName object:(id)notificationSender
向接收者的分发表添加一条记录,后边两个参数可选。
notificationObserver 作为观察者,不能为nil;
notificationSelector sorry,翻译不清了。当接收者post通知时,观察者会执行这个参数指定的消息。
notificationName 用于注册观察者的通知的名字,也就是说,只有用这个名字的通知被投递给这个观察者。如果传入nil,通知中心不用通知的名字决定是否把它投递给观察者。
notificationSender 通俗的说,就是观察者愿意接收谁的通知。如果传入nil,通知中心不用通知的sender决定是否投递给观察者(shit,真绕,其实就是接收所有sender发送的通知,第三个参数也一样)。
注意:务必保证在观察者dealloc前,调用removeObserver:name:object:来移除观察者。
- (void)postNotification:(NSNotification *)notification
给接收者post一个给定的通知。参数notification不能为nil。
- (void)postNotificationName:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo
notificationSender post通知的对象;
userInfo 关于通知的信息,可以使nil。
NSNotification
NSNotification对象封装信息以便于NSNotificationCenter对象把它广播给其他对象。一个通知包含一个名字、一个对象和一个可选的字典。名字是用来识别通知的一个标识。这个对象是通知的poster想要发送给这个通知观察者的对象(一般,是这个对象post这个通知)。这个字典存储任何关联的对象。通知中心对象是不可变的。
本文来自博客园,作者:l4y,转载请注明原文链接:https://www.cnblogs.com/xjshi/p/4353888.html