0

我的UIViewController. 是否有意义?

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

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

或者也许dealloc代码就足够了?

4

4 回答 4

1

将它放在里面dealloc就足够了,因为将对象作为观察者添加到通知不会增加其参考帐户。只要没有持有其他引用,视图控制器就会在dealloc从其父视图控制器中删除时被编辑。

事实上viewDidUnload绝对是放地方了。这个方法很少被调用,并且从 iOS6 开始它已经被弃用并且从来没有被调用过!

于 2013-08-01T20:41:46.880 回答
1

你应该只removeObserverdealloc. viewDidUnload根本不保证会被调用(实际上在 iOS6 中已被弃用)。 dealloc一旦对您的视图控制器的所有引用都消失了,最终将被调用。

于 2013-08-01T20:41:54.453 回答
1

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

于 2013-08-01T20:42:02.553 回答
1

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

于 2013-08-01T20:42:52.677 回答