Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios RACSignal:为什么使用rac_textSignal a";“推迟”;向自身返回RAC信号?_Ios_Reactive Cocoa - Fatal编程技术网

Ios RACSignal:为什么使用rac_textSignal a";“推迟”;向自身返回RAC信号?

Ios RACSignal:为什么使用rac_textSignal a";“推迟”;向自身返回RAC信号?,ios,reactive-cocoa,Ios,Reactive Cocoa,使用“延迟”返回“self”上的RAC信号。 原因是什么 这就是实现: - (RACSignal *)rac_textSignal { @weakify(self); return [[[[[RACSignal defer:^{ @strongify(self); return [RACSignal return:self]; }] concat:[self rac_signalFor

使用“延迟”返回“self”上的RAC信号。 原因是什么

这就是实现:

- (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
s(实际上是
self


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

如果省略延迟并像以下那样实现它:

- (RACSignal *)rac_textSignal {
    @weakify(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]];
 }

我仍然不能完全理解
RAC
内存管理,但是,在上述实现中,您的信号将强烈引用
self
,永远不会完成,你最终会变成僵尸
UITextField

我认为延迟只是为了防止保留周期

为什么延迟是必要的?可能适合弱/强舞蹈。编辑:看起来Jakub得出了相同的结论。