答案 0 :(得分:60)
答案 1 :(得分:6)
如果您在viewWillDisappear:
或viewDidDisappear:
中实施删除观察者,则不应将观察者添加到viewDidLoad
。
而是将观察者添加到viewWillAppear:
中。您遇到的问题是因为当UIViewController
视图上显示任何视图时,您的观察者将被删除,并且由于您在viewDidLoad
中添加了只会发生一次的观察者,因此它将会丢失。
请记住,当您的主视图不在前面时,此方法适用于您不希望观察的对象。
另请注意,viewDidUnload
也已被折旧。
答案 2 :(得分:2)
将removeObserver:
放入dealloc
并没有错。事实上它没有被调用意味着view1在解雇后没有正确释放。看起来某些东西保存着指向view1的指针,检查保留周期。
另外,你不应该在super上调用dealloc。