
- iOS 教程
- iOS - 首頁
- iOS - 入門
- iOS - 環境設定
- iOS - Objective-C 基礎
- iOS - 第一個 iPhone 應用
- iOS - 動作和出口
- iOS - 代理
- iOS - UI 元素
- iOS - 加速度計
- iOS - 通用應用程式
- iOS - 攝像頭管理
- iOS - 位置處理
- iOS - SQLite 資料庫
- iOS - 傳送電子郵件
- iOS - 音訊和影片
- iOS - 檔案處理
- iOS - 訪問地圖
- iOS - 應用內購買
- iOS - iAd 整合
- iOS - GameKit
- iOS - 故事板
- iOS - 自動佈局
- iOS - Twitter 和 Facebook
- iOS - 記憶體管理
- iOS - 應用程式除錯
- iOS 有用資源
- iOS - 快速指南
- iOS - 有用資源
- iOS - 討論
iOS - 記憶體管理
iOS 中的記憶體管理最初是非 ARC(自動引用計數)的,我們需要保留和釋放物件。現在,它支援 ARC,我們不必保留和釋放物件。Xcode 在編譯時自動處理此任務。
記憶體管理問題
根據 Apple 文件,記憶體管理中的兩個主要問題是:
釋放或覆蓋仍在使用的的資料。這會導致記憶體損壞,通常會導致應用程式崩潰,或者更糟糕的是,使用者資料損壞。
不釋放不再使用的的資料會導致記憶體洩漏。當分配的記憶體即使不再使用也未被釋放時,就會發生記憶體洩漏。洩漏會導致應用程式使用越來越多的記憶體,這反過來可能導致系統性能下降或(在 iOS 中)應用程式被終止。
記憶體管理規則
我們擁有我們建立的物件,並且當不再需要它們時,我們必須隨後釋放它們。
使用 Retain 獲取您未建立的物件的所有權。當不再需要這些物件時,您也必須釋放它們。
不要釋放您不擁有的物件。
在 ARC 中處理記憶體
您不需要在 ARC 中使用 release 和 retain。因此,所有檢視控制器的物件將在檢視控制器被移除時被釋放。同樣,任何物件的子物件將在它們被釋放時被釋放。請注意,如果其他類對某個類的物件具有強引用,則整個類將不會被釋放。因此,建議對委託使用弱屬性。
記憶體管理工具
我們可以藉助 Xcode 工具 Instruments 分析記憶體的使用情況。它包括活動監視器、分配、洩漏、殭屍等工具。
分析記憶體分配的步驟
步驟 1 - 開啟現有應用程式。
步驟 2 - 選擇產品,然後選擇分析,如下所示。

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

步驟 4 - 我們將看到不同物件的記憶體分配,如下所示。
步驟 5 - 您可以在檢視控制器之間切換並檢查記憶體是否已正確釋放。

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

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