通知中心实际上是iOS程序内部之间的一种消息广播机制,主要为了解决应用程序内部不同对象之间解耦而设计。它是基于观察者模式设计的,不能跨应用程序进程通信,当通知中心接收到消息之后会根据内部的消息转发表,将消息发送给订阅者。下面是一个简单的流程示意图:
了解通知中心需要熟悉NSNotificationCenter和NSNotification两个类:
NSNotificationCenter:是通知系统的中心,用于注册和发送通知,下表列出常用的方法。
| 方法 | 说明 |
| - (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject |
添加监听,参数: observer:监听者 selector:监听方法(监听者监听到通知后执行的方法) name:监听的通知名称 object:通知的发送者(如果指定nil则监听任何对象发送的通知) |
| - (id <NSObject>)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block |
添加监听,参数: name:监听的通知名称 object:通知的发送者(如果指定nil则监听任何对象发送的通知) queue:操作队列,如果制定非主队线程队列则可以异步执行block block:监听到通知后执行的操作 |
| - (void)postNotification:(NSNotification *)notification |
发送通知,参数: notification:通知对象 |
| - (void)postNotificationName:(NSString *)aName object:(id)anObject |
发送通知,参数: aName:通知名称 anObject:通知发送者 |
| - (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo |
发送通知,参数: aName:通知名称 anObject:通知发送者 aUserInfo:通知参数 |
| - (void)removeObserver:(id)observer |
移除监听,参数: observer:监听对象 |
| - (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject |
移除监听,参数: observer:监听对象 aName:通知名称 anObject:通知发送者 |










