所以我有一个VC,我在viewDidAppear中注册了一个通知:即使VC不是主要焦点,就像我在堆栈上推送另一个VC一样,我仍然希望VC接收通知。但是在不再需要VC之后,即它从堆栈中弹出,我想将其作为该通知的观察者删除。
我在哪里这样做? viewDid / WillUnload:没有了,我尝试了dealloc,但它永远不会被调用。所以这似乎意味着NotificaitonCenter将保留VC,当它从堆栈中弹出时它永远不会被释放。
答案 0 :(得分:1)
在dealloc
方法中。这就是现在的既定惯例。
NotificationCenter未保留VC。你在哪里得到这种印象?
答案 1 :(得分:0)
您应该将代码放在dealloc
UIViewController
方法中
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
如果您使用的是Swift,那么可以将其放在deinit
UIViewController
方法中
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}