iOS - 記憶體管理

簡介

最初是在iOS記憶體管理非ARC(自動引用計數),在那裏我們有保留和釋放對象。現在,它支持ARC,我們並不需要添加保留和釋放。其實Xcode在編譯時會自動負責工作。

面臨的問題

根據蘋果說明文檔中說到面臨的兩個主要問題是:

  • 釋放或覆蓋的數據仍然在使用。這將造成記憶體損壞,通常在應用程式崩潰,或者更糟,損壞的用戶數據。
  • 不釋放不再使用的數據會導致記憶體洩漏。分配的記憶體,記憶體洩漏不會釋放,即使它從來沒有再次使用。洩漏會導致應用程式的記憶體使用量日益增加,這反過來又可能會導致系統性能較差或(在iOS),申請被終止。

記憶體管理規則

  • 我們創建自己的對象,我們隨後釋放他們時,當他們不再需要的時候。
  • 保留可以使用,從而獲得一個物體的所有權,我們沒有創建。必須釋放這些對象時,它沒有必要的。
  • 不要釋放我們自己沒有擁有的對象。

ARC處理記憶體

不需要使用ARC的釋放和保留。因此,所有的視圖控制器的對象時,將會釋放視圖控制器被刪除。同樣,任何對象的子對象將被釋放,當他們被釋放。請記住,如果其他類一個類的對象具有很強的借鑒意義,那麼整個類將不會被釋放。因此建議使用弱屬性委託

使用記憶體管理工具

我們可以分析的Xcode工具儀器的幫助下,及記憶體的使用情況。它包括的工具,如活動監視器,分配,洩漏,僵屍等

分析記憶體分配的步驟

1. 打開一個現有的應用程式。

2. 選擇產品,配置檔如下所示。

iOS Tutorial

3. 然後選擇在下一個畫面中的分配如下所示,選擇“配置檔”。

iOS Tutorial

4. 我們將看到不同的對象的記憶體分配,如下圖所示。

5. 您可以切換視圖控制器,並檢查記憶體是否被正確釋放。

iOS Tutorial

6. 同樣,我們可以使用活動監視器看到總記憶體分配給應用程式,而不是分配,並如下圖所示。

iOS Tutorial

7. 這些工具可以幫助在知道我們是多麼的使用和在什麼地方可能發生洩漏。


上一篇: iOS - Twitter & Facebook 下一篇: IOS - 應用程式調試