【问题标题】:Reactive Cocoa diferences between KVC and instance objectKVC和实例对象之间的Reactive Cocoa差异
【发布时间】:2015-02-20 17:11:15
【问题描述】:

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

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

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

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

[keyValueCodingArray addObject:@"string"];

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

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

[self.marray removeObjectAtIndex:0];

有什么区别?

【问题讨论】:

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 我的意思是问题在于理解,所以如果我使用[self mutableArrayValueForKey:@"marray"]; 它可以工作,但如果我使用直接self.marray 作为参考并尝试调用-addObject: 方法它不会工作我的意思是由于使用直接引用,我们从未接到过电话[RACObserve(self, marray) subscribeNext:^
  • 我没有测试你的代码,但是为什么当我们使用实例时我们没有收到任何更新?
  • 我认为是因为 keyvaluecodingarray 是您尝试观察的不同实例。使用 racobserve 您正在观察特定实例
猜你喜欢
  • 2016-09-04
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 2017-09-13
  • 1970-01-01
  • 2017-03-08
相关资源
最近更新 更多