iOS - 記憶體管理



iOS 中的記憶體管理最初是非 ARC(自動引用計數)的,我們需要保留和釋放物件。現在,它支援 ARC,我們不必保留和釋放物件。Xcode 在編譯時自動處理此任務。

記憶體管理問題

根據 Apple 文件,記憶體管理中的兩個主要問題是:

  • 釋放或覆蓋仍在使用的的資料。這會導致記憶體損壞,通常會導致應用程式崩潰,或者更糟糕的是,使用者資料損壞。

  • 不釋放不再使用的的資料會導致記憶體洩漏。當分配的記憶體即使不再使用也未被釋放時,就會發生記憶體洩漏。洩漏會導致應用程式使用越來越多的記憶體,這反過來可能導致系統性能下降或(在 iOS 中)應用程式被終止。

記憶體管理規則

  • 我們擁有我們建立的物件,並且當不再需要它們時,我們必須隨後釋放它們。

  • 使用 Retain 獲取您未建立的物件的所有權。當不再需要這些物件時,您也必須釋放它們。

  • 不要釋放您不擁有的物件。

在 ARC 中處理記憶體

您不需要在 ARC 中使用 release 和 retain。因此,所有檢視控制器的物件將在檢視控制器被移除時被釋放。同樣,任何物件的子物件將在它們被釋放時被釋放。請注意,如果其他類對某個類的物件具有強引用,則整個類將不會被釋放。因此,建議對委託使用弱屬性。

記憶體管理工具

我們可以藉助 Xcode 工具 Instruments 分析記憶體的使用情況。它包括活動監視器、分配、洩漏、殭屍等工具。

分析記憶體分配的步驟

步驟 1 - 開啟現有應用程式。

步驟 2 - 選擇產品,然後選擇分析,如下所示。

iOS Tutorial

步驟 3 - 在下一個螢幕中選擇分配,然後選擇分析。

iOS Tutorial

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

步驟 5 - 您可以在檢視控制器之間切換並檢查記憶體是否已正確釋放。

iOS Tutorial

步驟 6 - 同樣,我們可以使用活動監視器來檢視為應用程式分配的總記憶體,而不是分配。

iOS Tutorial

步驟 7 - 這些工具幫助我們訪問記憶體使用情況並找到可能發生洩漏的位置。

廣告