iOS - 記憶體管理


簡介

最初是在iOS記憶體管理非ARC(自動參照計數),在那裡我們有保留和釋放物件。現在,它支援ARC,我們並不需要新增保留和釋放。其實Xcode在編譯時會自動負責工作。

面臨的問題

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

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

記憶體管理規則

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

ARC處理記憶體

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

使用記憶體管理工具

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

分析記憶體分配的步驟

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

2. 選擇產品,組態檔案如下所示。

iOS Tutorial

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

iOS Tutorial

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

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

iOS Tutorial

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

iOS Tutorial

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