删除 UIViewController 中的 NSNotification

Removing NSNotification in a UIViewController

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

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

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

NotificationCenter 未保留 VC。您从哪里得到这种印象?

您应该将代码放在 UIViewController

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

如果你使用Swift那么你可以把它放在UIViewController

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