KVC和实例对象之间的反应性可可差异

时间:2015-02-20 17:11:15

标签: ios key-value-observing reactive-cocoa key-value-coding kvc

我使用此代码使用我的可变数组订阅事件:

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

我是RAC的新手,我不明白为什么,例如我是否使用:

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

[keyValueCodingArray addObject:@"string"];

一切正常,如果我向我的keyValueCodingArray添加一些东西marray,它会对事件作出反应,如果我从keyValueCodingArray中删除一些对象,它也会做出反应。

但是如果直接使用实例,RACObserve块将不起作用。我的意思是它似乎没有观察到数组的任何变化:

[self.marray removeObjectAtIndex:0];

有什么区别?

1 个答案:

答案 0 :(得分:1)

您可能正在寻找以下内容:

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

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

您的代码仅检查数组属性的更改,而不是调用它的值。