私はキーパスを観察して安全なキー値を実装しようとしています。 workplace
プロパティを持つperson
という名前のデータモデルオブジェクトがあるとしましょう。人は職場を変更しないまで安全なキー値キーパスの観察
[person addObserver:theObserver
forKeyPath:@"workplace.address"
options:NSKeyValueObservingOptionNew
context:NULL];
これは正常に動作します:順番にworkplace
は私が、私は次の呼び出しで観察し、キー値を設定観察したいaddress
性質を持っています。すぐにこれが起こるように:
person.workplace = newWorkplace;
KVCシステムが正しく「キーと値のオブザーバーはまだそれに登録している間oldAddressが割り当て解除された」というアプリケーションがクラッシュします。 (oldAddressは直前の職場の住所です)。
残念ながら、職場が離れていくことをオブザーバーに通知するための '人物'オブジェクトのクラスの実装を調整することはできません。このようなクラッシュを避けるためのパターンはありますか?他の通知を受け取ることができるかもしれませんか? KVCの場合、キーパスはどのように横断されており、このチェーンにアクセスできますか?