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

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


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

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

[keyValueCodingArray addObject:@"string"];


一切正常,如果我将keyValueCodingArray添加到marray中,则会对事件做出反应,如果我从keyValueCodingArray中删除某些对象,它也会做出反应。

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

[self.marray removeObjectAtIndex:0];


有什么区别?

最佳答案

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

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




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


您的代码仅检查array属性上的更改,而不检查其值。

08-15 23:21