iOS通知中心-NSNotificationCenter

NSNotification是iOS中一个调度消息通知的类,使用极为方便,但是劝各位还是慎用,当你日后修改工程的时候,看到密密麻麻的NSNotificationCenter,你就能体会到有多么痛苦。

基本用法

  • 添加观察者

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;

  • 发送通知消息的方法
- (void)postNotification:(NSNotification *)notification;

- (void)postNotificationName:(NSString *)aName object:(id)anObject;

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
  • 移除观察者
- (void)removeObserver:(id)observer;

- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

使用流程

  1. 首先,我们在需要接收通知的地方注册观察者
//获取通知中心单例对象
NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
//添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知
[center addObserver:self selector:@selector(notice:) name:@"123" object:nil];
  1. 之后,在我们需要时发送通知消息
 //创建一个消息对象
NSNotification * notice = [NSNotification notificationWithName:@"123" object:nil userInfo:@{@"1":@"123"}];
//发送消息
[[NSNotificationCenter defaultCenter]postNotification:notice];
  1. 我们可以在回调的函数中取到userInfo内容
//回调方法
- (void)notice:(id)sender {
    NSLog(@"%@",sender);
}

使用注意

  • 添加和移除成组存在,即有添加,就要有移除,一般添加写在ViewDidLoad,移除写在dealloc,或者添加写在ViewWillAppear,移除写在ViewWillDisappear。这里是考虑到左滑且没有退出的情况,我更倾向于前者。

你可能感兴趣的:(iOS通知中心-NSNotificationCenter)