0

次のコンテキストでKVOを使用したいと思います。

1)touchesBegan:withEvent:オブジェクトのインスタンスを割り当て/初期化し、KVOを介して監視します

私の意図は、オブジェクトの存続期間中のさまざまな動作を観察することです。

2)touchesEnded:withEvent:このインスタンスをNSMutableArrayに割り当て、NSMutableArrayが保持するようになったため、インスタンス参照を解放します。また、removeObserver:forKeyPathを介してインスタンスのoberverを削除する必要があります。

悪臭のある配列要素に観測値を再度追加しない限り、すべての観測値が失われるため、これは問題があります。

誰がオブジェクトを所有しているかに関係なく、オブザーバーをオブジェクトにアタッチしたままにする方法はありますか?

ありがとう、ダグ

4

1 に答える 1

1

Objective-Cでは、オブジェクトを「所有」するのではなく、単にそれを主張するだけです。NSMutableArrayがインスタンスを保持しているという理由だけでインスタンスを解放する必要はありません。どちらも、インスタンスを要求することができます。オブジェクトの処理が終了したら、オブザーバーとしての自分を削除し、オブジェクトを解放します。NSMutableArrayの使用が終了したら、それを解放します。このように、すべてがそれ自体を処理します。

于 2009-07-02T14:14:30.580 に答える