Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Objective c 信号中的信号?活性可可粉_Objective C_Reactive Programming_Reactive Cocoa - Fatal编程技术网

Objective c 信号中的信号?活性可可粉

Objective c 信号中的信号?活性可可粉,objective-c,reactive-programming,reactive-cocoa,Objective C,Reactive Programming,Reactive Cocoa,我试图理解这段代码,以及它返回信号的原因 [[[self.signInButton rac_signalForControlEvents:UIControlEventTouchUpInside] map:^id(id x) { return [self signInSignal]; }] subscribeNext:^(id x) { NSLog(@"Sign in result: %@", x); }]; 据我所知,UIControlEven

我试图理解这段代码,以及它返回信号的原因

[[[self.signInButton
   rac_signalForControlEvents:UIControlEventTouchUpInside]
   map:^id(id x) {
     return [self signInSignal];
   }]
   subscribeNext:^(id x) {
     NSLog(@"Sign in result: %@", x);
   }];
据我所知,UIControlEventTouchupInside返回下一个信号,该信号在地图函数中展开时包含UIButton

因此,可以安全地得出结论,当我执行映射时,它期望返回的对象是一个碰巧是信号的对象,它将信号双重包装成信号。也就是说,cocoa通常希望该类型是对象类型,并将其包装为信号

我是不是遗漏了什么,我对地图的理解不是这样的, 它转换输入值,并生成输出值,有时与输入值无关

谢谢我是新手,任何建议都很好

另一个相关问题


让我们只说,uicontrol事件润色内部发送和错误事件,它会被订阅下一个错误捕获吗

代码看起来不正确。您的理解是正确的,代码接收按钮点击的信号并将其映射为登录信号。是的,一个信号的信号。虽然信号的信号是常见且非常有用的,但如果不使用以下三个操作符之一,它将一事无成:flatte、concat或switchToLatest。在给定的代码中,永远不会触发signInSignal,因为没有使用这些运算符

如果将map:切换为PLANTMAP:,则登录信号将正确启动

[[[self.signInButton
    rac_signalForControlEvents:UIControlEventTouchUpInside]
    flattenMap:^id(id x) {
        return [self signInSignal];
    }]
    subscribeNext:^(id x) {
        NSLog(@"Sign in result: %@", x);
    }];

代码看起来不正确。您的理解是正确的,代码接收按钮点击的信号并将其映射为登录信号。是的,一个信号的信号。虽然信号的信号是常见且非常有用的,但如果不使用以下三个操作符之一,它将一事无成:flatte、concat或switchToLatest。在给定的代码中,永远不会触发signInSignal,因为没有使用这些运算符

如果将map:切换为PLANTMAP:,则登录信号将正确启动

[[[self.signInButton
    rac_signalForControlEvents:UIControlEventTouchUpInside]
    flattenMap:^id(id x) {
        return [self signInSignal];
    }]
    subscribeNext:^(id x) {
        NSLog(@"Sign in result: %@", x);
    }];

这是一个很好的教程来理解我从中获得的代码这是一个很好的教程来理解我从中获得的代码对于这个例子来说代码是不正确的。因此,从这个意义上讲,map函数的行为方式与基于pull的流的map函数的行为方式不同,即它创建一个新对象,并将该新对象放入数组中?相反,映射函数将1.传入一个信号uibutton*2.从信号uibutton*3.展开,允许对ui按钮进行转换。4a.在这种情况下,如果我们返回一个信号,它将把信号包装在信号5b中。否则,如果它是对象类型4b,则会产生一个信号的信号。将物体包裹在信号5b中。我不确定你的问题是什么。你能重新措辞吗?基于拉的流上的映射函数的行为是否与基于推的流上的映射函数的行为不同?还让我们假设,UIContorEventTouchUpInside发送下一个错误,是否会运行自签名?基于拉的映射与推的映射的行为是否不同:否。此示例中的代码不正确。因此,从这个意义上讲,map函数的行为方式与基于pull的流的map函数的行为方式不同,即它创建一个新对象,并将该新对象放入数组中?相反,映射函数将1.传入一个信号uibutton*2.从信号uibutton*3.展开,允许对ui按钮进行转换。4a.在这种情况下,如果我们返回一个信号,它将把信号包装在信号5b中。否则,如果它是对象类型4b,则会产生一个信号的信号。将物体包裹在信号5b中。我不确定你的问题是什么。你能重新措辞吗?基于拉的流上的映射函数的行为是否与基于推的流上的映射函数的行为不同?还让我们假设,UIContorEventTouchUpInside发送下一个错误,是否会运行自签名?拉的映射与推的映射的行为是否不同:否。