关于重复接收NSNotificationCenter发送的通知的问题

今天遇到一个问题,会重复的收到同一个通知多次,如在controller中注册了[[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(onClicked)  name:@"buttonClicked"],

发现会多次执行onCliked函数,并且随着controller打开关闭次数增加,onClicked函数被执行的次数也在增加,如第一次打开controller,执行了一次onClicked函数,关闭,再打开controller,onClicked执行了2次。。。。

首先确定只有一个地方发送了这个“buttonClicked”的通知,并且通知也的确只发送了一次。

并且是在init中注册NSNotification消息,(viewload viewAppear 中注册可能会引起重入)

后来查询了一下发现在其他地方controller 被retain了,没有释放,controller被retain一次,消息就多注册了一次,且没有被remove,所以会重复的被激活。

原文地址:https://www.cnblogs.com/wilma/p/2938939.html