Наблюдая за NSOperation для завершения - PullRequest
0 голосов
/ 23 ноября 2011

Я использую NSOperationQueue для получения некоторых данных для моего приложения:

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
GetSUPDataOperation *operation = [[GetDataOperation alloc] init];
operation.context = self;
[queue addOperation:operation];
[operation release];

Я хочу запретить пользователю переходить к определенным частям приложения, пока мы не закончим получать все данные, которые мынужно.

Есть ли какой-нибудь способ, которым я могу наблюдать за завершением операции и затем установить флаг?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

С архитектурной точки зрения вы не хотите «отслеживать» операцию за ее состоянием.Вы захотите вызвать метод, когда операция закончится.

Так что просто вызовите метод, который обновляет пользовательский интерфейс (или некоторую другую часть приложения) после завершения операции.

0 голосов
/ 23 ноября 2011

Вы можете установить делегата для операции

@interface YourOperation : NSOperation  {
    id target;
    SEL selector;
}

- (id)initWithTarget:(id)theTarget action:(SEL)action;

@end

В конце вашей операции (т. Е. Внутри основной функции) используйте

- (void)main  {
    Your code here...
    ...

    [target performSelectorOnMainThread:selector withObject:nil waitUntilDone:NO];
 }

попросить вашего делегата установить флаг

...