objective-c - 取消 RAC 命令执行

标签 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 = NO;

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

        return [RACDisposable disposableWithBlock:^{
            stop = YES;
        }];
    }];
}];

那么在调用[commandexecute: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];
}];

关于objective-c - 取消 RAC 命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784097/

相关文章:

objective-c - 继续检查直到 True

ios - UILabel 中的 Youtube/Instagram 评论风格

ios - NSInvalidArgumentException',原因 : 'Application tried to present a nil modal view controller on target

ios - 如何按 UITableViewCell 的字母顺序对对象进行排序?

Cocoa:NSViewController View 中的 setter

ios - Swift 3 中的 rac_textSignal

swift - ReactiveSwift 从数组中发射元素,元素之间有延迟

xml - NSXMLDocument objectByApplyingXSLT with XSL Include

cocoa - 如何检查 CFPropertyList 的类型?

reactive-programming - 如何使用 ReactiveCocoa 对传入信号进行两级排序?