0

Я использую этот код, чтобы подписаться событиями с моим изменяемым массивом:Реактивное какао diferences между КВЦ и объект экземпляра

[RACObserve(self, marray) subscribeNext:^.... 

Я новичок в RAC, и я не понимаю, почему, например, если я использую:

NSMutableArray *keyValueCodingArray = [self mutableArrayValueForKey:@"marray"]; 

[keyValueCodingArray addObject:@"string"]; 

все работает нормально, и если я что-то добавить к моему keyValueCodingArray, который мой marray он реагирует на события, и если я удалить какой-либо объект из keyValueCodingArray также среагировать.

Но если использовать экземпляр напрямую, то блок RACObserve не будет работать. Я имею в виду, что он не замечает изменений в массиве:

[self.marray removeObjectAtIndex:0]; 

В чем разница?

+0

oh Я просто распечатываю массив, у него есть NSKeyValueNotifyingMutableArray, кажется, мне нужно читать глубже в KVC =) –

+0

NS [Mutable] Array не реализует [методы доступа для многих свойств] (https: //developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/AccessorConventions.html#//apple_ref/doc/uid/20002174-178830-BAJEDEFB). –

ответ

1

То, что вы, вероятно, ищет следующий:

[[keyValueCodingArray rac_signalForSelector:@selector(addObject:)] subscribeNext:^(id x) { 
    <#code#> 
}]; 

и

[[keyValueCodingArray rac_signalForSelector:@selector(removeObject:)] subscribeNext:^(id x) { 
    <#code#> 
}]; 

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

+0

Я имел в виду, что проблема была в понимании, поэтому, если я использую '[self mutableArrayValueForKey: @" marray "];' он работает, но если я использую прямой 'self.marray' в качестве ссылки и пытаюсь вызвать' -addObject: ' метод он не работает, я имею в виду, что мы никогда не получаем вызов '[RACObserve (self, marray) subscribeNext: ^', из-за использования прямой ссылки. –

+0

Я понимаю, что вы имеете в виду, ответ обновляется. – Menno

+0

Я не тестировал ваш код, но почему, когда мы используем экземпляр, мы не получаем никаких обновлений? –