鍍金池/ 教程/ iOS/ iOS - 內(nèi)存管理
iOS - Switches(切換/開關(guān))
iOS - Labels(標(biāo)簽)
iOS - Table View(表格視圖)
IOS - 攝像頭管理
iOS - Text View(文本視圖)
IOS - 開發(fā)環(huán)境配置
iOS教程
iOS - Twitter & Facebook
iOS - UI元素
iOS - iAd 整合
IOS - 應(yīng)用程序調(diào)試
iOS - Split View(分割視圖)
iOS - Status Bar(狀態(tài)欄)
iOS - Navigation Bar(導(dǎo)航欄)
iOS - Tab bar(標(biāo)簽欄)
IOS - 文件處理
IOS - 自動布局
iOS - Image View(圖像視圖)
iOS - 應(yīng)用程序內(nèi)購買
iOS - Pickers(選取器)
iOS - Delegates實例
iOS - 創(chuàng)建第一個iPhone應(yīng)用
iOS (iPhone, iPad)教程
iOS - 發(fā)送電子郵箱(Email)
iOS - View Transitions(視圖轉(zhuǎn)換)
iOS - 內(nèi)存管理
iOS - Icons(圖標(biāo))
iOS - 音頻和視頻
iOS - Storyboards(演示圖板演)
iOS - Buttons(按鈕)
iOS - Text Field(文本域)
iOS - Sliders(滑動條)
iOS - Scroll View(滾動視圖)
IOS - 輸入類型 文本字段
iOS - 位置處理
iOS - Accelerometer(加速度傳感器)
IOS - 快速入門
iOS - SQLite 數(shù)據(jù)庫
iOS - GameKit
IOS - 訪問地圖
iOS - Objective-C基礎(chǔ)
iOS - Toolbar(工具欄)
IOS - 動作和插座(Outlets)
iOS - Alerts(警示)
IOS - 通用應(yīng)用程序

iOS - 內(nèi)存管理

簡介

最初是在iOS內(nèi)存管理非ARC(自動引用計數(shù)),在那里我們有保留和釋放對象?,F(xiàn)在,它支持ARC,我們并不需要添加保留和釋放。其實Xcode在編譯時會自動負(fù)責(zé)工作。

面臨的問題

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

  • 釋放或覆蓋的數(shù)據(jù)仍然在使用。這將造成內(nèi)存損壞,通常在應(yīng)用程序崩潰,或者更糟,損壞的用戶數(shù)據(jù)。
  • 不釋放不再使用的數(shù)據(jù)會導(dǎo)致內(nèi)存泄漏。分配的內(nèi)存,內(nèi)存泄漏不會釋放,即使它從來沒有再次使用。泄漏會導(dǎo)致應(yīng)用程序的內(nèi)存使用量日益增加,這反過來又可能會導(dǎo)致系統(tǒng)性能較差或(在iOS),申請被終止。

內(nèi)存管理規(guī)則

  • 我們創(chuàng)建自己的對象,我們隨后釋放他們時,當(dāng)他們不再需要的時候。
  • 保留可以使用,從而獲得一個物體的所有權(quán),我們沒有創(chuàng)建。必須釋放這些對象時,它沒有必要的。
  • 不要釋放我們自己沒有擁有的對象。

ARC處理內(nèi)存

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

使用內(nèi)存管理工具

我們可以分析的Xcode工具儀器的幫助下,及內(nèi)存的使用情況。它包括的工具,如活動監(jiān)視器,分配,泄漏,僵尸等

分析內(nèi)存分配的步驟

1. 打開一個現(xiàn)有的應(yīng)用程序。

2. 選擇產(chǎn)品,配置文件如下所示。

iOS Tutorial

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

iOS Tutorial

4. 我們將看到不同的對象的內(nèi)存分配,如下圖所示。

5. 您可以切換視圖控制器,并檢查內(nèi)存是否被正確釋放。

iOS Tutorial

6. 同樣,我們可以使用活動監(jiān)視器看到總內(nèi)存分配給應(yīng)用程序,而不是分配,并如下圖所示。

iOS Tutorial

7. 這些工具可以幫助在知道我們是多么的使用和在什么地方可能發(fā)生泄漏。