gpt4 book ai didi

iphone - NSOperation 需要额外保留

转载 作者:行者123 更新时间:2023-12-03 19:23:12 27 4
gpt4 key购买 nike

我正在开发一个 iPad 应用程序。它使用 NSOperation 在后台下载某些内容,并由 NSOperationQueue 处理。我发现,除非我向 NSOperation 添加保留,否则在执行操作的操作后我会发生崩溃。 NSOperationQueue的addOperation说它保留​​了NSOperation,而NSOperation本身保留了目标对象。因此,我不明白为什么需要额外的保留。

这不会阻碍我的进步,除非我试图实现取消异步操作并在其位置创建一个新操作的模式。我还不能在 iPhone OS 4.0 上进行开发(它提供了 waitUntilFinished),所以我需要另一种方式来知道释放我的额外保留是安全的(或者找到一种根本没有额外保留的方法)。

有什么建议吗?

最佳答案

您如何执行“在后台下载某些内容”任务?如果您使用回调 NSOperation 对象的异步方法,那可能就是您的问题。我的猜测是,在 NSOperation 的 main 方法中,您正在使用异步方法开始下载,并且该方法应该稍后回调到您的 NSOperation。问题是,一旦你的 main 方法返回,NSOperation 就被认为完成了,所以当你的异步下载尝试回调你的 NSOperation 时,它会失败,因为 NSOperation 已经完成并释放了。即使 NSOperationQueue 完成后,您的额外保留也会通过保留 NSOperation 来修复此问题。您必须通过在 NSOperation 中使用同步下载方法来解决此问题。

如果您已经在 NSOperation 中使用同步下载方法,那么我不确定您的问题是什么。

关于iphone - NSOperation 需要额外保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3135041/

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