KVC 和实例对象之间的 Reactive Cocoa 差异

Reactive Cocoa diferences between KVC and instance object

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

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

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

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

[keyValueCodingArray addObject:@"string"];

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

但是如果直接使用实例,RACObserve 块将无法工作。我的意思是它似乎没有观察到 array:

的任何变化
[self.marray removeObjectAtIndex:0];

有什么区别?

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

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

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

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