如何在NSOperationQueue中设置优先级以执行下一个操作,直到上一个操作完成?

时间:2012-04-24 00:16:35

标签: iphone cocoa-touch ipad nsoperation nsoperationqueue

如何将NSOperationQueue中的优先级设置为在上一个操作完成之前不执行下一个操作?

   NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
  [operationQueue setMaxConcurrentOperationCount:1];
   NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(addPhotoWithButton:) object:button];
  [operationQueue addOperation:operation];
  [operation release];

1 个答案:

答案 0 :(得分:1)

假设您想要串行执行操作或一次执行一个操作,那么我认为您的问题是您使用1调用setMaxConcurrentOperationCount:然后通过用另一个操作队列覆盖该操作队列来丢失对该操作队列的引用。所以你正在做的是正确的,你只需要将操作添加到具有所需操作计数的队列中。你可能并不是故意这样做,事实上,我认为你会看到编译器警告。试试这段代码:

NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
[operationQueue setMaxConcurrentOperationCount:1];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(addPhotoWithButton:) object:button];
[operationQueue addOperation:operation];
[operation release];