Итак, у меня есть группа ASINetworkQueues, которые в настоящее время работают вместе, что приводит к состоянию гонки, когда дело доходит до сохранения БД. Я пытаюсь создать NSOperationQueue, который будет ставить в очередь каждую из этих «подочередей». В настоящее время я создал NSOperation с основным методом, который запускает «подочередь», чтобы начать загрузку.
Моя проблема в том, что каждый раз, когда я добавляю подочередь в основную очередь с помощью «addOperation», он сразу запускает этот «основной» метод, поэтому мои подочереди выполняются одновременно. У меня сложилось впечатление, что основной метод запускался по одному. т. е. только для операции в начале очереди.
Может быть, я что-то упускаю, но я не могу понять, как остановить другие операции, пока не завершится первая. Кроме того, я даже не могу поставить свою программу в ситуацию, которая приводит к isReady = 0 для NSOperation..., которая всегда возвращает да.
вот код:
ПРИМЕЧАНИЕ. Я установил для очереди NSOperation maxConcurrentOperations значение 1.
Основной метод NSOperation:
-(void)main {
[subQueue download];
}
Настройка очереди:
ChapterDownloadOperation *cdo = [[ChapterDownloadOperation alloc] init];
cdo.chapter = ch;
[chapterDownloadQueue addOperation:cdo];
[cdo release];
Если я добавляю несколько операций, основной метод срабатывает в экземпляре, который добавляется в очередь. Есть ли еще одна функция, которую я должен переопределить и использовать, когда эта операция будет готова к работе. У меня такое ощущение, что основной метод - это настройка операции.
Любые идеи с благодарностью.
Большое спасибо.