在UIViewController中删除NSNotification

时间:2015-03-03 21:35:08

标签: ios uiviewcontroller nsnotificationcenter

所以我有一个VC,我在viewDidAppear中注册了一个通知:即使VC不是主要焦点,就像我在堆栈上推送另一个VC一样,我仍然希望VC接收通知。但是在不再需要VC之后,即它从堆栈中弹出,我想将其作为该通知的观察者删除。

我在哪里这样做? viewDid / WillUnload:没有了,我尝试了dealloc,但它永远不会被调用。所以这似乎意味着NotificaitonCenter将保留VC,当它从堆栈中弹出时它永远不会被释放。

2 个答案:

答案 0 :(得分:1)

dealloc方法中。这就是现在的既定惯例。

NotificationCenter未保留VC。你在哪里得到这种印象?

答案 1 :(得分:0)

您应该将代码放在dealloc

UIViewController方法中
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

如果您使用的是Swift,那么可以将其放在deinit

UIViewController方法中
deinit {
    NSNotificationCenter.defaultCenter().removeObserver(self)
}