我想我怎样才能确保NSOperations以失败的方式执行?
我在我的应用程序有一个NSOperationQueue是什么,它的关键是应用程序退出之前的所有操作得到处理。我有下面的代码上退出,以确保NSOperationQueue是空的退出之前:
if ([NSThread isMainThread]) {
while ([[operationQueue operations] count] > 0) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]];
}
} else {
[operationQueue waitUntilAllOperationsAreFinished];
}
我以前在那里的的NSOperation“冻结”遇到了一个问题,我的代码完成之前,并封锁了整个队列。显然,在这样的情况下,我的代码应该抛出一个异常,现在就这样做。
但我仍然想防止任何奇怪的事情发生在操作停止和阻止队列,导致应用程序永不退出和故障没有被捕获。
我的垃圾解决方案
我正在考虑把超时队列完成它的操作。然后,当它超时时,我可以抛出异常,然后可以捕捉到问题。
但是,这感觉不对。理想情况下,我不想依赖定时器来确保工作完成。
我的问题
有没有更好的,达不到确保我操作的安全,办法还没有冻结?
您的操作以何种方式“冻结”? – 2012-06-07 07:15:06