我正在使用KVC/KVO爲大學項目創建自定義綁定實現(它需要自定義,因爲我想要做的事情超出了綁定可以做的事情,包括運行iOS版)。爲單個KVC更改接收2個KVO通知
我有一個'綁定控制器',它註冊一個對象上的多個鍵上的KVO通知(使用addObserver:forKeyPath:options:context :),我確實收到通知。不過,每次更改都會收到兩個通知。我有一個解決方法的想法,但我寧願工作爲什麼這是發生和糾正它!
有沒有人有任何想法,爲什麼這可能會發生?我確定我一次只能註冊每個通知,而註銷一次會導致兩個通知都停止。
感謝。
編輯:
我有一些代碼的請求,所以我把一些在這是一個有點粗糙的那一刻,它本質上還是一個概念證明,如此忍受我。
這是我觀察的屬性(我知道這是一個有點陌生,但這個類基本上是公開的NSManagedObject的某些屬性的本身屬性)之一:
- (void)setName:(NSString *)name
{
[self willChangeValueForKey:@"name"];
[contact setFirstName:name];
[self didChangeValueForKey:@"name"];
}
這是我使用的代碼觀察到財產(確認只運行一次,並且只在一個地方):
[viewModel addObserver:self
forKeyPath:@"name"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial)
context:viewController];
之後,任何調用,改變屬性,如:
viewModel.name = @"Joe";
[viewModel setName: @"Joe"];
[viewModel setValue: @"Joe" forKey: @"name"];
將導致方法:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
被調用兩次,每次用相同的參數。
安置自己的(相關)的代碼。 – 2010-12-15 16:34:25