我有一個叫做「Folio APIWrapperv2」的單例包裝類,負責處理我的iPhone應用程序中的所有API數據調用。ASIHTTPRequest中的線程
該類實現ASIHTTPRequest以從我的服務器獲取JSON。當一個ASIHTTPRequest完成時,它調用requestFinished :.在這種方法中,我對數據進行了額外的處理,可能需要幾秒鐘才能完成。這不是主要的,但它會稍微減慢應用程序,因爲它是一個阻塞的電話。爲了解決這個問題,我使用GCD創建了一個新線程。然而,這個線程運行時,我得到以下錯誤:
[FolioAPIWrapperv2 respondsToSelector:]: message sent to deallocated instance 0x245050
該功能被稱爲在行ASIHTTPRequest的「handleBytesAvailable」的方法:
if ([[self delegate] respondsToSelector:[self didReceiveDataSelector]]) {
我不知道這是怎麼回事這裏。 FolioAPIWrapperv2是一個單例類,所以它永遠不會被釋放。我嘗試過在線搜索,瞭解人們在線程中遇到了哪些其他問題,並找不到合適的解決方案。有人有想法嗎?
好的,我做了一些測試,發現當線程在單例中調用一個方法時,它會被釋放。如果線程不調用單例中的方法,它就會起作用。你知道這裏發生了什麼嗎? – 2012-02-10 23:39:08
@MichaelD。不是一個線索!嘗試在dealloc上貼上斷點,如果斷點釋放失敗/ autorelease - 應該會顯示正在執行釋放的代碼。 – JosephH 2012-02-11 12:12:44