首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >听NSNotifications的正确方法

听NSNotifications的正确方法
EN

Stack Overflow用户
提问于 2015-09-25 08:15:42
回答 1查看 177关注 0票数 0

如果在视图控制器上有两个通知,那么有两个这样的观察者合适吗:

代码语言:javascript
复制
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotifications:) name:@"note1" object:nil];
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotifications:) name:@"note2" object:nil];

或者,我只是通过向名称传入nil,然后检查在handleNotification函数中发送的通知来判断哪个通知是运行的:

代码语言:javascript
复制
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotifications:) name:nil object:nil];

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 08:19:02

实际上,如果您将nil作为一个名称传递,那么您将接收所有通知,而不管它们的名称(而不仅仅是您想要的两个通知)。最好是分别订阅每一个,命名它们。

摘录自苹果文档:

如果传递为零,通知中心将不使用通知的名称来决定是否将其传递给观察者。

(起初,我并不清楚这一点,我误以为你不会收到任何通知)。

您可以对两者使用相同的回调/侦听器,并根据收到的通知来决定该做什么。

您可以在NSNotificationCenter上创建一个类别来处理多个名称的注册,这就是创建类别的目的!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32777742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档