gpt4 book ai didi

iphone - 正确释放 NSOperationQueue

转载 作者:行者123 更新时间:2023-12-03 18:28:53 26 4
gpt4 key购买 nike

我想知道释放 ivar NSOperationQueue 的正确方法是什么,以防它仍有一些操作正在运行,这种情况通常在用户突然退出应用程序时发生。在一些示例中,我看到使用了 waitUntilAllOperationsAreFinished,如下所示:


- (void)dealloc {
[_queue cancelAllOperations];
<strong>[_queue waitUntilAllOperationsAreFinished];</strong>
[_queue release];
...

但是许多人建议避免这样做,因为它会挂起运行循环。那么释放_queue的正确方法是什么?如果我不等待操作完成而继续发布会发生什么?

最佳答案

在几乎所有情况下,调用 cancelAllOperations 就足够了。您唯一需要调用 waitUntilAllOperationsAreFinished 的情况是您确实需要确保这些操作在继续之前已完成。

例如,如果操作正在访问某些共享内存,您可能会这样做,并且如果您不等待,那么最终将有两个线程同时写入该共享内存。但是,我想不出任何合理的设计可以通过在 dealloc 方法中引起阻塞延迟来保护共享内存。有更好的同步机制可用。

所以简短的答案是:您不需要等待所有操作完成,除非您的应用程序出于某种原因特别需要它。

关于iphone - 正确释放 NSOperationQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com