我将观察者添加到UITableView
属性。
[tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
众所周知,当UIViewController
被弹出时,-[UIViewController dealloc]
方法会被调用,而-[UIViewController viewWillUnload]
会收到内存警告。
我应该在两个地方删除观察者(好吧,无论如何我必须)?这是最好的代码重复。或者我可以在-[UIViewController viewWillUnload]
中调用-[UIViewController dealloc]
(如Three20框架中所述)?这种做法好吗?
答案 0 :(得分:1)
你应该只删除dealloc中的观察者。如果你也在viewWillUnload中执行它,你可能会删除观察者两次,这会使你的应用程序崩溃。但是,添加观察者两次不是问题。即使你在viewDidUnload中没有tableView,观察者也可以继续存在,它只是不会做任何事情。