Операция завершена - PullRequest
3 голосов
/ 22 июля 2011

У меня NSOperation работает в NSOperationQueue. NSOperation загружает некоторые данные и анализирует их в NSDictionary. Как я знаю, когда NSOperation закончил и получить этот словарь? Спасибо.

Ответы [ 4 ]

6 голосов
/ 22 июля 2011

Вы также можете использовать NSOperation - (void)setCompletionBlock::

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"Doing something...");
}];

[operation setCompletionBlock:^{
    NSLog(@"Doing something once the operation has finished...");
}];

[queue addOperation:operation];

Подробнее здесь .

1 голос
/ 09 октября 2015

Если блок кода, который должен знать, когда операция завершена, сам является операцией NSO, то вы можете изящно обработать это, установив зависимость между ними:

[laterOp addDependency:downloadAndParseOp];

.после завершения downloadAndPareOp.

На самом деле, я бы посоветовал вам написать свой код, чтобы такой подход был возможен.Одна из самых сильных сторон NSOperations и NSOperationQueue заключается в том, что он легко координирует выполнение кода.

0 голосов
/ 22 июля 2011

Лучший способ - инициализировать вашу NSOperation с делегатом.Когда NSOperation завершит свою работу, он вызовет делегата, используя один из методов делегата (объявленных через протокол).

0 голосов
/ 22 июля 2011

Обычно нужно, чтобы NSOperation вызывал метод для любого объекта, который должен знать, что операция завершена. Или вы можете использовать NSNotificationCenter, чтобы различные объекты могли прослушивать обновления более децентрализованным способом. Или вы можете использовать KVO для прослушивания свойства isFinished NSOperation.

...