美文网首页
IOS NSNotification通知的用法

IOS NSNotification通知的用法

作者: tino又想吃肉了 | 来源:发表于2020-07-28 20:29 被阅读0次

    在ios开发中,我们会经常遇到需要在页面A和页面B之间通信的需求,这一需求我们可以用Block、协议、通知等方法实现。今天谈谈通知的用法。

    有人会问,既然以上几种方式都可以实现这一需求,那么为什么要用通知呢?
    这就要谈到NSNotification的特点

    • 可以实现一对多,NSNotification 的实际是一种观察者模式。

    每一个ios程序都有着唯一的一个通知中心,我们使用时通过[NSNotificationCenter defaultCenter]获取。而它的运行其实相当于一个广播站。
    在使用中,我们只需要两步。

    • 发通知
    • 收通知

    其中,我们需要在要接通知的类中注册观察者

    NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
        //添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知
        [center addObserver:self selector:@selector(yourMethod) name:@"yourName" object:nil];
    

    其中@selector(yourMethod)为接收到通知所会执行的方法,name为通知的名称,设置后此通知中心只会接收通知名为'name'的通知,同理object
    object为通知所带参数对象的类

    此后,在需要发送通知的地方,我们只需要创建一个NSNotification实例,并将通知发送出去即可。

    NSNotification * notice = [NSNotification notificationWithName:@"name of notification" object:nil userInfo:@{@"1":@"123"}];
        //发送消息
           [[NSNotificationCenter defaultCenter]postNotification:notice];
    

    我们可以在object和userInfo中添加自己所需要传递的参数,若不用,则设为nil。其中,我们在接收通知的方法中,通过(NSNotification*)text; text.object的方法来获取到传递的object对象的内容。

    至此,通知的基础使用就说完了。需要记住的是,一个通知中心可以通过name和object参数来控制自己所能接到的通知,若都为nil,则可以接收到所有通知。所以,我们在使用过程中要注意控制通知的接收者。


    Tino Wu

    相关文章

      网友评论

          本文标题:IOS NSNotification通知的用法

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