如果我多次添加观察者而没有删除它,会发生什么?
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()。
发布于 2016-09-04 18:33:04
每次调用addObserver:selector:notificationName:object:都会向NSNotificationCenter的调度表中添加一个新的条目。这意味着,即使使用相同的参数列表进行多次调用,也会向该表中添加多个条目。因此,为了回答您的问题,是的,多次注册相同的通知将导致多次调用您的处理程序方法。
如果您想确保您的注册不超过一次,您将需要在补充的拆卸方法中注销您的观察者,请参阅下图,以了解您应该在哪里注销,基于您注册的位置(我还建议阅读Apple documentation中的附属指南):

发布于 2016-09-04 17:48:41
根据您的代码,选择器不仅会为每个通知触发多次,而且在您的应用程序的整个生命周期中,它将继续消耗处理速度和电池寿命,直到您删除它。如果您希望观察者能够通过多个操作添加,请检查这样的观察者是否已经存在,如果不存在,则只添加它。
https://stackoverflow.com/questions/39315399
复制相似问题