繁体   English   中英

NSOperation需要额外保留

[英]Extra retain needed on NSOperation

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

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

有什么建议?

你是如何执行'在后台下载某些东西'的任务? 如果您使用的是调用NSOperation对象的异步方法,那可能就是您的问题。 我的猜测是,在你的NSOperation的主要方法中,你开始使用异步方法下载,并且该方法应该在以后回调你的NSOperation。 问题是,一旦你的main方法返回,NSOperation被认为已经完成,所以当你的异步下载尝试回调你的NSOperation时,它会失败,因为NSOperation已经完成并取消分配。 你的额外保留通过在NSOperationQueue结束后保持NSOperation来解决这个问题。 您必须通过在NSOperation中使用同步下载方法来解决此问题。

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

在框架内使用队列和异步请求ASIHTTPRequest - http://allseeing-i.com/ASIHTTPRequest/ - 帮助我解决了NSOperationQueues和许多异步下载时遇到的许多问题。

我认为如果问题得到解决并得到妥善解决,请不要再尝试解决问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM