簡體   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