在NSOperationQueue中的dispatch_after等价物

sin*_*inθ 16 xcode objective-c nsoperationqueue grand-central-dispatch ios

我正在将我的代码从常规GCD移动到NSOperationQueue因为我需要一些功能.我的很多代码都依赖于dispatch_after才能正常工作.有没有办法做类似的事情NSOperation

这是我需要转换为的一些代码NSOperation.如果您可以提供使用此代码转换它的示例,那就太棒了.

dispatch_queue_t queue = dispatch_queue_create("com.cue.MainFade", NULL);
dispatch_time_t mainPopTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeRun * NSEC_PER_SEC));
dispatch_after(mainPopTime, queue, ^(void){
    if(dFade !=nil){
        double incriment = ([dFade volume] / [self fadeOut])/10; //incriment per .1 seconds.
        [self doDelayFadeOut:incriment with:dFade on:dispatch_queue_create("com.cue.MainFade", 0)];
    }

});
Run Code Online (Sandbox Code Playgroud)

gai*_*ige 27

NSOperationQueue其中没有任何计时机制.如果您需要设置这样的延迟然后执行操作,您将需要安排NSOperation从中dispatch_after来处理延迟并使最终代码成为一个NSOperation.

NSOperation旨在处理或多或少的批处理操作.用例与GCD略有不同,实际上在使用GCD的平台上使用GCD.

如果您要解决的问题是获取可取消的计时器通知,我建议NSTimer您在需要取消时使用并使其无效.然后,响应计时器,您可以执行代码,或使用调度队列或NSOperationQueue.