2014-02-13 39 views
1

而是在我的視圖控制器寫這個的:將屬性直接綁定到相當於訂閱該信號的信號,然後設置屬性?

@weakify(self); 
[[self.view.emailAddressField.rac_textSignal distinctUntilChanged] subscribeNext:^(NSString *emailAddress) { 
    @strongify(self); 
    self.viewModel.emailAddress = emailAddress; 
}]; 

什麼後果和使用的影響,而不是在下面?

RAC(self.viewModel, emailAddress) = [self.view.emailAddressField.rac_textSignal distinctUntilChanged]; 

回答

3

他們是等價的,假設self.viewModel已經被它被調用的時候設置。

3

只需閱讀源代碼。

RAC(target, keyPath, nilValue) = signal; 

是一樣的東西:

[signal setkeyPath:keyPath onObject:target nilValue:niValue]; 

setKeyPath:onObject:nilValue:是實現爲:

RACDisposable *subscriptionDisposable = [self subscribeNext:^(id x) { 
    NSObject *object = (__bridge id)objectPtr; 
    [object setValue:x ?: nilValue forKeyPath:keyPath]; 
} error:^(NSError *error) { 
    ... 
} completed:^{ 
    ... 
}];