iOS - 內存管理
簡介
最初是在iOS內存管理非ARC(自動引用計數),在那裡我們有保留和釋放對象。現在,它支持ARC,我們並不需要添加保留和釋放。其實Xcode在編譯時會自動負責工作。
麵臨的問題
根據蘋果說明文檔中說到麵臨的兩個主要問題是:
- 釋放或覆蓋的數據仍然在使用。這將造成內存損壞,通常在應用程序崩潰,或者更糟,損壞的用戶數據。
- 不釋放不再使用的數據會導致內存泄漏。分配的內存,內存泄漏不會釋放,即使它從來冇有再次使用。泄漏會導致應用程序的內存使用量日益增加,這反過來又可能會導致係統性能較差或(在iOS),申請被終止。
內存管理規則
- 我們創建自己的對象,我們隨後釋放他們時,當他們不再需要的時候。
- 保留可以使用,從而獲得一個物體的所有權,我們冇有創建。必須釋放這些對象時,它冇有必要的。
- 不要釋放我們自己冇有擁有的對象。
ARC處理內存
不需要使用ARC的釋放和保留。因此,所有的視圖控製器的對象時,將會釋放視圖控製器被刪除。同樣,任何對象的子對象將被釋放,當他們被釋放。請記住,如果其他類一個類的對象具有很強的借鑒意義,那麼整個類將不會被釋放。因此建議使用弱屬性委托
使用內存管理工具
我們可以分析的Xcode工具儀器的幫助下,及內存的使用情況。它包括的工具,如活動監視器,分配,泄漏,僵屍等
分析內存分配的步驟
1. 打開一個現有的應用程序。
2. 選擇產品,配置文件如下所示。
3. 然後選擇在下一個畫麵中的分配如下所示,選擇“配置文件”。
4. 我們將看到不同的對象的內存分配,如下圖所示。
5. 您可以切換視圖控製器,並檢查內存是否被正確釋放。
6. 同樣,我們可以使用活動監視器看到總內存分配給應用程序,而不是分配,並如下圖所示。
7. 這些工具可以幫助在知道我們是多麼的使用和在什麼地方可能發生泄漏。