簡體   English   中英

將ARC轉換為非ARC

[英]Convert ARC to non-ARC

我一直在為10.6+ OS X 64位系統開發一個ARC技術項目。

但是現在程序必須支持32位10.6 OS X系統,但是32位CPU ARC無法正常工作。

如果我只關閉ARC並嘗試編譯為32位,則會導致很多錯誤。

使用ARC將程序轉換為手動內存管理程序的最佳方法是什么?

32位OS X 10.6支持垃圾回收。 將ARC代碼轉換為GC代碼非常簡單,反之亦然,例如,有些情況下ARC需要適當的橋接轉換,而GC需要NSMakeCollectible,您可以將它們封裝在宏中。

如果使用宏,則可以測試ARC和GC的編譯器設置,並根據它們有條件地定義宏 - 更改編譯器設置和ARC和GC之間的代碼切換。

瀏覽您的代碼並根據需要retain / release對象。 您需要查看對象的每個分配,並查看何時需要釋放它。 您還需要查看應該自動釋放的內容以及是否/何時需要創建自己的autorelease pools並將其drain 如果您想要做到這一點,這不是可以自動化的東西。

您也可以考慮兩者兼顧。 有一個32位目標支持不使用ARC和64位目標。 這將是很多工作,但可能不僅僅是轉換。 它將導致更大的二進制文件(可能是代碼與資源項比例的1.5倍)。

查看這個問題的第一個答案,以獲得更好的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM