Ios 在viewDidUnload之后是否调用dealloc

Ios 在viewDidUnload之后是否调用dealloc,ios,Ios,我的UIViewController中有以下代码。这有意义吗 - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)viewDidUnload { [super viewDidUnload]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } 或者可能dealloc代码就足够

我的
UIViewController
中有以下代码。这有意义吗

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

- (void)viewDidUnload {
    [super viewDidUnload];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

或者可能dealloc代码就足够了?

将其放在
dealloc
中就足够了,因为将对象作为观察者添加到通知中并不会增加其引用帐户。只要不保留其他引用,视图控制器将在从其父视图控制器中删除时解除锁定


事实上,
viewDidUnload
绝对是放置它的错误的地方。这个方法很少被调用,而且由于iOS6,它已被弃用,而且从未被调用过

将它放在
dealloc
中就足够了,因为将对象作为观察者添加到通知中并不会增加其引用帐户。只要不保留其他引用,视图控制器将在从其父视图控制器中删除时解除锁定


事实上,
viewDidUnload
绝对是放置它的错误的地方。这个方法很少被调用,而且由于iOS6,它已被弃用,而且从未被调用过

您应该只让
removeObserver
调用
dealloc
viewDidUnload
根本不能保证被调用(事实上在iOS6中已被弃用)<代码>解除锁定最终将在对viewcontroller的所有引用消失后被调用。

您应该只调用
removeObserver
调用
解除锁定
viewDidUnload
根本不能保证被调用(事实上在iOS6中已被弃用)<代码>解除锁定最终将在对viewcontroller的所有引用消失后被调用。

解除锁定
中移除观察者是一个安全网,您应该有一个安全网
viewDidUnload
在iOS6中已被弃用,因此无论如何,它只会在旧版本的iOS中使用。一般来说,您应该确保以相应的方法将自己作为观察者移除到添加自己作为观察者的位置(如视图出现和消失)。

dealloc
中移除观察者是一个安全网,您应该有一个安全网
viewDidUnload
在iOS6中已被弃用,因此无论如何,它只会在旧版本的iOS中使用。通常,您应该确保在添加自己作为观察者的相应方法中删除自己作为观察者(如视图出现和消失)。

viewDidUnload已被弃用。iOS在内存紧张的情况下调用viewDidUnload。您不必在ARC下使用此方法

viewDidUnload已被弃用。iOS在内存紧张的情况下调用viewDidUnload。您不必在ARC下使用此方法,因此问题是,对于viewcontroller,注册通知处理程序的好方法是什么?有很多地方,并不是所有地方都有“相应的方法”来移除它们。例如,从NIB或viewDidLoad中唤醒。如果你想接收VIEW控制器的生命周期的通知,那么DEOLLC是撤销注册表的地方,我不认为它是一个“安全网”@ ToSwitter,没错,对于一个终身注册来说,它不是一个安全网,它是正确的。因此,对于VIEW控制器来说,问题变成了。注册通知处理程序的好方法是什么?有很多地方,并不是所有地方都有“相应的方法”来移除它们。例如,从NIB或viewDidLoad中唤醒。如果您想接收VIEW控制器的生命周期的通知,那么DEOLLC是撤销注册表的地方,我不认为它是“安全网”@ TWSWIFT,是真的,对于终身注册来说,它不是一个安全网,它是正确的。