我想知道在仍有一些操作运行的情况下,正确的释放ivar NSOperationQueue的方法是什么,这种情况通常发生在用户突然退出应用程序时。 在某些示例中,看到使用了waitUntilAllOperationsAreFinished方法,如下所示:
- (void)dealloc {
[_queue cancelAllOperations];
[_queue waitUntilAllOperationsAreFinished];
[_queue release];
...
然而,许多人建议避免这样做,因为它会挂起运行循环。 那么正确的释放_queue的方法是什么?如果我不等待操作完成而只是继续释放,会发生什么?
isSuspended
被设置为 YES,否则这将起作用。如果是这样,队列将不会释放队列中的操作。为了安全起见,如果您曾经在队列上调用过setSuspended
,请记得在取消操作后将其重置为 NO。 - vfn