美文网首页
iOS通知中心-NSNotificationCenter

iOS通知中心-NSNotificationCenter

作者: Lxin_ | 来源:发表于2016-11-22 10:47 被阅读179次

    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

          本文链接:https://www.haomeiwen.com/subject/eceppttx.html