ios - RACSignal : Why use rac_textSignal a "defer" to return a RACSignal to self?

标签 ios reactive-cocoa

rac_textSignal-Implementation使用“defer”在“self”上返回 RACSignal。 这是什么原因?

这是实现:

- (RACSignal *)rac_textSignal {
    @weakify(self);
    return [[[[[RACSignal
        defer:^{
            @strongify(self);
            return [RACSignal return:self];
        }]
        concat:[self rac_signalForControlEvents:UIControlEventEditingChanged]]
        map:^(UITextField *x) {
            return x.text;
        }]
        takeUntil:self.rac_willDeallocSignal]
        setNameWithFormat:@"%@ -rac_textSignal", [self rac_description]];
}

最佳答案

延迟信号和连接信号都发送 UITextField(实际上是 self)。

延迟信号使返回信号发送当前存储的订阅文本,因为 [self rac_signalForControlEvents:UIControlEventEditingChanged] 仅发送更改。

关于ios - RACSignal : Why use rac_textSignal a "defer" to return a RACSignal to self?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559997/

相关文章:

jquery - 元素在 iOS 版 Safari 上损坏

objective-c - 将像素点转换为经纬度

ios - 如何将属性与在多个 RACObserve 中的任何一个中发现的更改绑定(bind)

ios - ReactiveCocoa和NSThread运动场

swift - ReactiveCocoa-如何避免在 collectionView 的单元格中多次订阅信号

ios - 如何多投一个正在进行的 Action 的结果或开始一个新 Action

ios - 如何用 ReactiveCocoa 完成这个

android - 有什么方法可以使用 googleapi 从 google+ 中的用户名获取用户 ID?

iphone - 在 iOS 网络调用中缓存?

ios - 使用 Interface Builder 关闭 UITextField 上的键盘