0

プロパティにオブザーバーを追加しUITableViewます。

[tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];

ご存知のように、UIViewControllerポップされた-[UIViewController dealloc]メソッドが呼び出され-[UIViewController viewWillUnload]たときと、メモリ警告を受け取ったときです。

2 つの場所でオブザーバーを削除する必要があります (わかりました、とにかく私はしなければなりません)。これは最高の状態でのコードの複製です。または-[UIViewController viewWillUnload]-[UIViewController dealloc](Three20 フレームワークで記述されているように) 呼び出すことができますか? このアプローチは良いですか?

4

1 に答える 1

1

dealloc ではオブザーバーのみを削除する必要があります。これを viewWillUnload でも行うと、オブザーバーを 2 回削除する可能性があり、アプリがクラッシュする可能性があります。ただし、オブザーバーを 2 回追加しても問題ありません。viewDidUnloadでtableViewをnilにしても、オブザーバーは存在し続けることができますが、何もしません。

于 2012-10-10T15:48:29.777 に答える