本人新手,正在用delphi XE6開發iOS應用,此前一直使用cb,開始做ios時發現cb還是后媽生的,封裝obj-c時有很多不方便,于是轉向delphi開發
第一個執行緒問題是,我希望在程式啟動時就啟動一個執行緒,執行緒內封裝了NSURLConnection的異步操作,然后在程式整個生命周期向執行緒內插入任務,執行緒內訪問某個公共物件可以采用臨界區操作,但我不知道在行程內如果安全得訪問任務串列這個物件.或者可以以其它的方式實作?
其實是第二個問題引發了第一個問題,我封裝好的NSURLConnection類使用了異步操作.xe6有了ARC機制,如果參考計數不為0是無法銷毀物件的.
在呼叫這個類的時候,因為是異步操作,我無法在合適的時機將應用計數清0,從而導致物件無法釋放.我嘗試把物件指標傳入物件實體,在合適的時機顯式呼叫freeandnil,可以實作異步操作完成后實體自動銷毀.但在xcode的記憶體檢測工具中發現有泄露.最后在Destoy方法內使用了iOS的api來銷毀obj-c物件后,記憶體不再泄露,但freeandnil時會報例外,無法實作自銷毀.所以才想到用執行緒來管理一個永不釋放,指定實體數的NSURLConnection請求池.請問各位有沒有其他的思路能讓物件自動銷毀呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108838.html
標籤:語言基礎/算法/系統設計
