NSOperation最佳实践,回应取消

时间:2010-11-07 13:13:07

标签: objective-c nsoperation nsoperationqueue

在我的NSOperation子类中,我检查在长度循环之上或在子类的main方法中的任何长度方法(核心数据提取,数组排序等)之前的取消。请参阅下面的示例。

-(void)main{

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    for( int i=0; i< 100; i++ )
    {
         //Check for cancellation
         if( [self isCancelled] ){
             [pool drain];
             return;
         }

    //Do the work
    }

    [pool drain];
}

除了耗尽游泳池以及尽快退出方法之外,还有什么我应该做的吗?

1 个答案:

答案 0 :(得分:2)

1)优雅退出

2)适当地通知听众/代表。如果你有一个委托,你将需要提供支持多个操作结果的回调或接口/协议(成功,失败或错误,取消,超时)。你的听众不一定是调用取消的对象,但他们可能更好地了解如何处理这种情况。

3)清理对象的状态 - 例如,释放和零对象应该是以编程方式不可访问的,并确保任何调用都将检查isCancelled操作是否在多线程上下文中运行。