回答

0

ARC是不是免費的 - 它會增加或減少引用計數,和dealloc的對象時,引用計數爲0

與手動保留/釋放相比,ARC將是正確的,它可能更少地調用保留/釋放,因爲它經常知道保留/釋放對何時取消彼此,保留/釋放更快,因爲它沒有呼叫Objective-C方法調用(在Objective-C中,你可以覆蓋保留/釋放;用ARC你不能)。

+0

爲什麼它會在運行時而不是在編譯時增加和減少引用計數。 – oneofone

0

ARC遵循與C++的std :: shared_ptr類似的機制(如果不是相同的話),std :: shared_ptr使用引用計數來查看對象是否超出範圍時應該調用exit time函數;在Obj-C的情況下,該調用將會釋放。

編譯器添加的版本調用,用於管理引用計數如何遞減;叮噹聲機制的作用非常明確,並且可以節省檢查是否有平衡呼叫的問題,以便永遠呼叫每個增加引用計數的方法。

因此,關於您的原始問題,ARC不應在運行時應用程序中產生額外的性能成本。

如果您懷疑您的應用程序存在內存問題,那麼您應該在樂器中對您的應用程序進行配置並查看所用時間。

內存優化是一個完全不同的蠟球,幸好有解決方案。因此,如果您的高度線程化應用程序在併發內存分配方面存在問題,您可以查看像英特爾的線程構建模塊這樣的開源庫,它具有出色的內存管理器,但需要注意的是,它專爲C/C++ 。

順便說一句,對於ARC的詳細說明,請閱讀此頁:http://clang.llvm.org/docs/AutomaticReferenceCounting.html

相關問題