У меня есть часть кода (с блоком завершения), который я бы хотел запустить несколько раз (из цикла FOR), но я хочу, чтобы операция выполнялась одна одним.Запуск блока завершения несколько раз «Один за одним»
Чтобы попытаться объяснить это немного лучше ... (Макс Параллельная работа = 1, Элементы For() Loop = 3)
- Begin Для() в пункте 0
- Начало работы для элемент 0
- Завершение операции по для пункта 0
- цикла For Loop() в пункте 1
- Start о peration по пункту 1
- Завершение из операции по пункту 1
- петля для() по пункту 2
- Начать операцию по пункту 2
- Завершение из операции по пункту 2
- End For() по позиции 2
Сделали это решение, но, похоже, t о запуске сразу и не один на один ..
// Batch download
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.maxConcurrentOperationCount = 1;
for (Item *item in ItemArray) {
[queue addOperationWithBlock:^{
if (![[ItemClient sharedClient] isCachedItem:item]) {
// Item not yet cached
[[ItemClient sharedClient] cacheItem:item completion:^(NSError *error) {
// Complete, next in FOR loop
}];
} else {
// Item already cached
// Complete, next in FOR loop
}
}];
}
Почему вы добавить его к NSOperationQueue? Если вы хотите, чтобы он выполнялся последовательно (синхронно), все, что вам нужно сделать, это выполнить блок как функцию: 'block();' – danielmhanover
Вы знаете, что одно ореховое решение - это рекурсия. – uchuugaka