2015-05-16 45 views
-3

保留計數是在Objective-C中管理內存的方式。當您創建一個對象時,它的保留計數爲1.當您向對象發送保留消息時,其保留計數會加1,我們知道ARC會自動執行該操作,但它如何執行它使用的技術? ?爲什麼在啓用ARC的項目中不需要維護保留計數

我還在想,如果內存管理是自動完成的,那麼爲什麼有時我們會在對象分配或檢索時遇到錯誤的訪問錯誤。

我已經通過這個環節了: - https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html

+2

我真的不知道爲什麼人們反對票?至少他們必須在分析問題時提供一些理由或指出錯誤或邏輯錯誤。在投票前必須進行一些驗證,以便主持人可以進行評估。 – Vizllx

回答

0

你會過得更好閱讀ARC文檔:https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

ARC將管理內存給你,但它不能從寫程序錯誤阻止你比如只保留對象的弱引用。

+0

感謝鏈接我正在經歷它,但它並不總是如此,只有微弱的屬性/引用導致項目訪問不良或錯誤,我也看到了很多內存泄漏和強對象的錯誤。是的,有編程的機會正如你所說的那些只有ARC無法處理的錯誤。這就是我所提到的,你不能100%確定ARC會處理所有的內存分配和釋放。 – Vizllx

2

我認爲ARC(編譯器在編譯時通過在必要的地方插入retain/release命令來完成)取決於變量的範圍,它們被定義(即初始化)的代碼塊,以及它的值存儲在範圍比初始變量範圍更廣的另一個變量中。

這就是爲什麼你必須更精確地聲明變量訪問和存儲的類型:用變量告知編譯器你的意圖。

但我認爲,ARC不能看到比當前文件更遠。 ARC對於全局變量和文件間依賴關係更加棘手。

所以,蘋果一個更復雜的變量的聲明語法來取代一個非常簡單的(IMO)保留/釋放模式。因此開發人員不必擔心內存管理。

這使得蘋果生態系統可以被更多的開發者用來爲託管語言(比如web開發者)開發iOS應用程序。

我認爲讓開發人員認爲您可以高效開發而不必瞭解IT中的這種基本概念,例如內存管理是一個錯誤。

但更多的開發者爲iOS開發意味着更多的節目和活動的長期更穩定的生態系統,讓更多的收入用於蘋果:-)

+0

非常好的觀點+ 1 – Vizllx

相關問題