看着NSOperation完成

时间:2011-11-23 16:04:39

标签: objective-c cocoa-touch nsoperationqueue

我正在使用NSOperationQueue为我的应用获取一些数据:

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

我想阻止用户导航到应用的某些部分,直到我们完成获取所需的所有数据为止。

我有什么方法可以观察操作完成并设置一个标志吗?

2 个答案:

答案 0 :(得分:0)

您可以为操作设置委托

@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];
 }

要求你的代表设置一个标志

答案 1 :(得分:0)

从架构的角度来看,您不希望“监视”其运行状态的操作。您希望在操作完成运行时调用方法。

因此,只需在操作完成时调用一个更新UI(或应用程序的其他部分)的方法。