Как я могу установить приоритет в 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];

person Ziad.T    schedule 24.04.2012    source источник
comment
Это предложение сбивает с толку, и я подозреваю, что вы имели в виду, как я могу установить приоритет в NSOperationQueue, чтобы НЕ выполнять следующую операцию, пока предыдущая операция не будет завершена? Обратите внимание на добавленное нет. Если это действительно так, вам следует обновить свой вопрос.   -  person Jon Steinmetz    schedule 24.04.2012


Ответы (1)


Предполагая, что вы имеете в виду, что хотите выполнять операции последовательно или по одной, тогда я думаю, что ваша проблема в том, что вы вызываете setMaxConcurrentOperationCount: с 1, а затем теряете ссылку на эту очередь операций, перезаписывая ее другой очередью операций. Итак, то, что вы делаете, правильно, вам просто нужно добавить операцию в очередь с желаемым количеством операций. Вы, вероятно, не хотели этого делать, на самом деле, я думаю, вы увидите предупреждение компилятора. Попробуйте этот код:

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