以下のように複数のsetterからvalueプロパティに値を代入できる場合。
@interface PropertyViewModel : NSObject @property(nonatomic, strong) NSString *key; @property(nonatomic, strong) NSString *value; - (NSInteger)integerValue; - (void)setIntegerValue:(NSInteger)value; @end @implementation PropertyViewModel - (NSInteger)integerValue { return self.value.integerValue; } - (void)setIntegerValue:(NSInteger)value { [self willChangeValueForKey:@"integerValue"]; self.value = @(value).stringValue; [self didChangeValueForKey:@"integerValue"]; } @end
以下のようにintegerValueの変更を監視するとsetIntegerValueを経由せず変更した場合に変更が通知されない。
[[RACAbleWithStart(property, integerValue) distinctUntilChanged] subscribeNext:^(id x) { .... }]; property.value = @"test";
必ず大元のvalueプロパティを監視すること。
そうすると[self willChangeValueForKey:@"integerValue"];とかもいらないな。。
[[RACAbleWithStart(property, value) distinctUntilChanged] subscribeNext:^(id x) { .... }]; property.value = @"test";