How to cancel NSBlockOperation

后端 未结 4 981
粉色の甜心
粉色の甜心 2020-11-30 22:28

I have a long running loop I want to run in the background with an NSOperation. I\'d like to use a block:

NSBlockOperation *operation = [NSBlock         


        
4条回答
  •  旧巷少年郎
    2020-11-30 23:13

    To reinforce jemmons answer. WWDC 2012 session 211 - Building Concurent User Interfaces (33 mins in)

    NSOperationQueue* myQueue = [[NSOperationQueue alloc] init];
    NSBlockOperation* myOp = [[NSBlockOperation alloc] init];
    
    // Make a weak reference to avoid a retain cycle
    __weak NSBlockOperation* myWeakOp = myOp;
    
    [myOp addExecutionBlock:^{
        for (int i = 0; i < 10000; i++) {
            if ([myWeakOp isCancelled]) break;
            precessData(i);
        }
    }];
    [myQueue addOperation:myOp];
    

提交回复
热议问题