Реактивные различия Какао между KVC и объектом экземпляра
Я использую этот код для подписки на события с моим изменяемым массивом:
[RACObserve(self, marray) subscribeNext:^....
Я новичок в RAC, и я не понимаю почему, например, если я использую:
NSMutableArray *keyValueCodingArray = [self mutableArrayValueForKey:@"marray"];
[keyValueCodingArray addObject:@"string"];
все работает нормально, и если я добавлю что-то в мой keyValueCodingArray
который мой marray
он реагирует на события, и если я удаляю какой-либо объект из keyValueCodingArray, он также реагирует.
Но если использовать экземпляр напрямую, блок RACObserve работать не будет. Я имею в виду, кажется, что он не наблюдает никаких изменений с массивом:
[self.marray removeObjectAtIndex:0];
В чем различия?
1 ответ
Решение
Вероятно, вы ищете следующее:
[[keyValueCodingArray rac_signalForSelector:@selector(addObject:)] subscribeNext:^(id x) {
<#code#>
}];
а также
[[keyValueCodingArray rac_signalForSelector:@selector(removeObject:)] subscribeNext:^(id x) {
<#code#>
}];
Ваш код только проверяет изменения свойства массива, но не вызывает его значение.