IOS NSNotification通知的用法

在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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容