Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/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
Objective c 取消RAC命令执行_Objective C_Cocoa_Reactive Cocoa_Raccommand - Fatal编程技术网

Objective c 取消RAC命令执行

Objective c 取消RAC命令执行,objective-c,cocoa,reactive-cocoa,raccommand,Objective C,Cocoa,Reactive Cocoa,Raccommand,有没有办法取消执行RACCommand 例如,我有一个具有无限执行信号的命令,如下所示: RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) { return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { __block BOOL stop =

有没有办法取消执行
RACCommand

例如,我有一个具有无限执行信号的命令,如下所示:

RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        __block BOOL stop = NO;

        while (!stop) {
            [subscriber sendNext:nil];
        }

        return [RACDisposable disposableWithBlock:^{
            stop = YES;
        }];
    }];
}];
RACCommand*command=[[RACCommand alloc]initWithSignalBlock:^RACSignal*(id输入){
返回[RACSignal createSignal:^RACSignal*(id订户){
__块布尔停止=否;
当(!停止){
[用户发送下一步:无];
}
返回[RAC一次性处置带块:^{
停止=是;
}];
}];
}];

那么,在调用
[命令执行:nil]
之后,如何停止它呢?

我对RACCommand有点陌生,所以我不确定是否有更好的方法来完成此操作。但我一直在使用带有取消信号的
takeUntil:
来停止执行

RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        while (true) {
            [subscriber sendNext:nil];
        }
    }] takeUntil:cancellationSignal];
}];
RACCommand*command=[[RACCommand alloc]initWithSignalBlock:^RACSignal*(id输入){
返回[RACSignal createSignal:^RACSignal*(id订户){
while(true){
[用户发送下一步:无];
}
}]takeUntil:取消信号];
}];

太好了,谢谢!这里有更多的信息