我有一個使用MRC(非ARC)靜態庫的啓用ARC的應用程序。在靜態庫中,retain
/release
被覆蓋以提供一些自定義的弱引用/緩存行爲(當然稱爲[super retain/release]
)。問題是由於retain
/release
在啓用ARC的代碼中不允許,可以使用在啓用ARC的代碼中覆蓋retain
/release
的類嗎?目前它似乎運行良好,但我不確定這是否依賴未定的行爲,這可能會在未來破裂。覆蓋保留/釋放在ARC
還有什麼理由禁止優先retain
/release
?是否因爲編譯器做了一些特殊的優化,繞過了消息綁定過程來加速方法調用?我知道_objc_storeStrong
調用是由引用計數的編譯器生成的,那麼這是否意味着重寫的retain
/release
不能保證在ARC下調用?
ARC只是自行維護內存管理,即以簡單的語言根據對象的範圍自動放入保留/釋放代碼。所以,只要不擔心圖書館不啓用ARC,它將不會在將來創建任何問題。 – 2013-05-07 11:54:57