今天遇到一个问题,会重复的收到同一个通知多次,如在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,所以会重复的被激活。