在我的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];
}
除了耗尽游泳池以及尽快退出方法之外,还有什么我应该做的吗?
答案 0 :(得分:2)
1)优雅退出
2)适当地通知听众/代表。如果你有一个委托,你将需要提供支持多个操作结果的回调或接口/协议(成功,失败或错误,取消,超时)。你的听众不一定是调用取消的对象,但他们可能更好地了解如何处理这种情况。
3)清理对象的状态 - 例如,释放和零对象应该是以编程方式不可访问的,并确保任何调用都将检查isCancelled
操作是否在多线程上下文中运行。