首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在未移除的情况下多次添加同一观察者

在未移除的情况下多次添加同一观察者
EN

Stack Overflow用户
提问于 2016-09-04 17:19:49
回答 2查看 4K关注 0票数 9

如果我多次添加观察者而没有删除它,会发生什么?

代码语言:javascript
复制
func registerForNotifications()
{   
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(foregroundNotification(_:)), name: UIApplicationWillEnterForegroundNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(backgroundNotification(_:)), name: UIApplicationWillResignActiveNotification, object: nil)
}

将在viewWillApppear中调用registerForNotifications()

EN

回答 2

Stack Overflow用户

发布于 2016-09-04 18:33:04

每次调用addObserver:selector:notificationName:object:都会向NSNotificationCenter的调度表中添加一个新的条目。这意味着,即使使用相同的参数列表进行多次调用,也会向该表中添加多个条目。因此,为了回答您的问题,是的,多次注册相同的通知将导致多次调用您的处理程序方法。

如果您想确保您的注册不超过一次,您将需要在补充的拆卸方法中注销您的观察者,请参阅下图,以了解您应该在哪里注销,基于您注册的位置(我还建议阅读Apple documentation中的附属指南):

票数 16
EN

Stack Overflow用户

发布于 2016-09-04 17:48:41

根据您的代码,选择器不仅会为每个通知触发多次,而且在您的应用程序的整个生命周期中,它将继续消耗处理速度和电池寿命,直到您删除它。如果您希望观察者能够通过多个操作添加,请检查这样的观察者是否已经存在,如果不存在,则只添加它。

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

https://stackoverflow.com/questions/39315399

复制
相关文章

相似问题

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