我正試圖在keypaths上實現安全的key值觀察。假設我有一個名爲person
的數據模型對象,它具有workplace
屬性。反過來workplace
有一個address
屬性,我希望看到,所以我設置鍵值通過以下調用觀察:安全密鑰值觀察keypaths
[person addObserver:theObserver
forKeyPath:@"workplace.address"
options:NSKeyValueObservingOptionNew
context:NULL];
這工作得很好,直到該人不改變工作環境。一旦發生這種情況:
person.workplace = newWorkplace;
的KVC系統崩潰正確地說,「oldAddress被釋放,而鍵值觀察家仍用它註冊」的申請。 (舊地址是以前工作地點的地址)。
不幸的是,我不能調整'人'對象類的實現來通知觀察者,工作場所將要消失。有沒有什麼模式可以避免這種崩潰?也許可以得到一些其他的通知?在KVC的情況下如何遍歷keypath,並且您是否有權訪問此鏈?