創建了新的iOS項目後,我啓用了ARC並且未打算支持iOS < 5.0。這是否意味着我永遠不需要使用retain/release
或者有可能需要使用它們的情況?使用啓用ARC的保留/釋放的情況
有人可以列出這些情況下,如果有任何,謝謝!
創建了新的iOS項目後,我啓用了ARC並且未打算支持iOS < 5.0。這是否意味着我永遠不需要使用retain/release
或者有可能需要使用它們的情況?使用啓用ARC的保留/釋放的情況
有人可以列出這些情況下,如果有任何,謝謝!
你永遠不需要使用retain/release/autorelease。啓用ARC後,您不必編寫內存管理代碼,除非您正在使用Core Foundation - ARC不關心Core Foundation對象。但是,您可以讓ARC通過__bridge_transfer轉換(或CFBridgingRelease)爲您釋放CF對象。如果您從Cocoa或Cocoa Touch功能或方法獲得它,則它位於Objective-C-land中,因此由ARC進行管理。你可以通過__bridge_retained cast(或者CFBridgingRetain)將它傳遞給CF世界,之後你必須CF釋放它(或者將它傳回ARC)。是的,只要這些類是在沒有ARC的情況下編譯的(您可以逐個文件地控制這些類;轉到構建階段並將-fno-objc-arc
作爲標誌添加到應該在ARC'd項目中編譯的任何文件),那麼編譯後的類可以覆蓋保留/釋放/自動釋放到他們心臟的內容。
您應該閱讀Apple的移植指南。有幾個警告。但是,除非直接與Core Foundation合作,或者如果您專門用-fno-objc-arc
標記單個文件,並且僅爲該文件自行釋放內存,則無需自行使用retain/release
。
No, you don't need to use them as ARC is enabled.
保留/釋放是使用的方法保留和釋放的引用的對象,分別。它用於管理內存分配和釋放。用戶必須自行管理內存,只有當ARC未啓用或不可用時,如下面的iOS 4.3。
ARC是Automatic Reference Counting
。啓用時,SDK本身決定何時釋放對象。用戶只需要分配它。用戶仍然可以管理編號分配。聲明一個對象的strong
或weak
引用。
ARC在iOS 4.3及更高版本上受支持。您需要使用iOS 5.x SDK,但可以爲部署目標選擇iOS 4.3。 4.x不支持的一件事是自動弱參考調零。它也被稱爲ARCLite。 – nemesis
幾個基礎類,它們沒有啓用弧,你需要手動釋放它們。 –