Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to cancel out of operation created with addOperationWithBlock?

I'm using NSOperationQueue's addOperationWithBlock. From within the block, how do I check to see if I'm supposed to cancel the operation? Or access any NSOperation properties/methods?

[myOperationQueue addOperationWithBlock: ^{

  while ( /* long running loop */ )
  {
      // how to determine here if I need to cancel?
      // for that matter, access any NSOperation properties/methods?

  }

}];

Is the better way to do this to use a NSBlockOperation?

like image 820
TomSwift Avatar asked Feb 10 '11 21:02

TomSwift


1 Answers

A better solution might be to use NSBlockOperation and add that to the queue instead of a raw block. You could do something like:

__block NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
  while(![operation isCancelled]){
    //Some long operation
  }
}];

[[self queue] addOperation:operation];

This lets you use blocks while giving you a little more control over the operation... and a few more NSOperation niceties as well (like the ability to add completion blocks, for example).

like image 188
jemmons Avatar answered Nov 09 '22 17:11

jemmons