Реактивные различия Какао между 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#>
}];

Ваш код только проверяет изменения свойства массива, но не вызывает его значение.

Другие вопросы по тегам