1. ホーム
  2. ios

[解決済み] KVOとARCによるObserverの削除方法

2023-05-28 16:29:50

質問

以下のオブジェクトからオブザーバを削除するにはどうすればよいのでしょうか? アーク ? オブザーバを追加するだけで、削除することは忘れてしまうのでしょうか?もし、手動でメモリを管理しなくなったら、どこで観測をやめるのでしょうか?

例えば、ビューコントローラ上です。

[self.view addObserver:self
            forKeyPath:@"self.frame"
               options:NSKeyValueObservingOptionNew 
               context:nil];

以前は、私は removeObserver: をビューコントローラの dealloc メソッドで指定します。

どのように解決するのですか?

まだ -dealloc をARCの下で実装することができます。これは、キー値の観測を取り除くのに適切な場所であるように見えます。 ただ [super dealloc] を呼び出さないだけです。

もしあなたが -release をオーバーライドしていたのなら、それは間違った方法だったのです。