偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

iPhone內(nèi)存管理面面觀 對象所有權(quán)與引用計數(shù)

移動開發(fā) iOS
本文將詳細介紹iOS內(nèi)存管理的對象的所有權(quán)與引用計數(shù)。希望這些介紹會對開發(fā)者有所幫助。

51CTO在前段日子采訪了國內(nèi)最牛的iPhone開發(fā)團隊,與各位一起走進了iOS開發(fā)。在iOS開發(fā)里,內(nèi)存管理是iPhone或iPad開發(fā)中最為重要的一部分。掌握好了內(nèi)存管理,開發(fā)出的應(yīng)用就能運行流暢;掌握不好,開發(fā)出的東西就會效率低下,且容易崩潰。本文詳細介紹iOS內(nèi)存管理的對象的所有權(quán)與引用計數(shù)。希望這些介紹會對開發(fā)者有所幫助。

當(dāng)一個所有者(owner,其本身可以是任何一個Objective-C對象)做了以下某個動作時,它擁有對一個對象的所有權(quán)(ownership):

1. 創(chuàng)建一個對象。包括使用任何名稱中包含“alloc”、“new”、或者“copy”的方法。

2. 保留(retain)一個對象。

一個對象可以有多個所有者,一個所有者也可以擁有多個對象。

相應(yīng)的,引用計數(shù)增減的基本規(guī)則是:

1.當(dāng)所有者創(chuàng)建一個對象時,該對象的引用計數(shù)為1。

2.當(dāng)所有者保留它時,該對象的引用計數(shù)加1。

3.當(dāng)所有者釋放(release)它時,該對象的引用計數(shù)減1。

與此相關(guān)的,當(dāng)一個所有者對于一個對象的引用計數(shù)的增減總計為0時,它放棄了對這個對象的所有權(quán)。

現(xiàn)在我們可以從兩個不同的角度來看Objective-C的內(nèi)存管理問題。從對象所有權(quán)的角度來看,當(dāng)一個對象有著至少一個所有者(owner)的時候,它依然存在;當(dāng)它沒有任何所有者的時候,它會被釋放掉。從引用計數(shù)的角度看,一個對象存在時,其引用計數(shù)大于零;當(dāng)一個對象的引用計數(shù)為零時,它會調(diào)用dealloc方法并釋放掉。這兩個角度的關(guān)系是:在所有權(quán)的背后起作用的機制是引用計數(shù)機制;我們通過引用計數(shù)的增減來理解所有權(quán)的概念;但是你只應(yīng)當(dāng)使用所有權(quán)的概念來管理內(nèi)存,因為如果你試圖直接獲取對象的引用計數(shù),那么得到的數(shù)將讓你感到匪夷所思——系統(tǒng)的一些框架會“偷偷”增減對象的引用計數(shù)。

回顧一下,內(nèi)存管理的目標(biāo)是:

當(dāng)一個對象的某個所有者依然需要使用它時,保證這個對象的存在;當(dāng)一個對象的所有所有者都不再需要它時,保證這個對象被銷毀。因此只要任何一個所有者在使用完一個對象之后釋放掉它,那么以上內(nèi)存管理的目標(biāo)就可以實現(xiàn)。

我們可以得出任何一個所有者(記住,所有者本身也只是一個對象)所應(yīng)當(dāng)遵守的基本步驟:

擁有一個對象 -> 使用一個對象 -> 放棄對象的所有權(quán)。

從引用計數(shù)的角度來看就是:

還需要這個對象時,保持對其增減為正;不再需要這個對象時,保持對其增減為0。

下圖很好地詮釋了這些基本規(guī)則:所有者1和所有者2單獨地執(zhí)行了擁有對象、使用對象、放棄對象所有權(quán)的步驟;當(dāng)所有者1不再需要該對象時及時放棄了所有權(quán),但此時所有者2依然擁有該對象,因此該對象依然存在,所有者2可以繼續(xù)使用它;當(dāng)所有者2也不再需要該對象時,也放棄掉所有權(quán),這時對象以不再有任何所有者(相應(yīng)的引用計數(shù)也變?yōu)?),因此立刻被銷毀掉。

引數(shù)計數(shù)的基本規(guī)則
引數(shù)計數(shù)的基本規(guī)則

需要注意的是,所有者2只是復(fù)制了該對象的指針,并沒有使用copy方法,因此復(fù)制指針這個操作本身并不增加對象的引用計數(shù);而正因為所有者2希望能使用該對象,因此通過retain方法成為它的所有者,也保證了所有者1放棄該對象時,對象不被銷毀。

原文地址:http://lichen1985.com/blog/?cat=10

 

【編輯推薦】

  1. 蘋果發(fā)布iOS 4大量SDK 全面支持iPhone 4
  2. 專訪最牛iPhone開發(fā)團隊:走進移動開發(fā)
  3. 蘋果增加iPhone軟件銷售窗口 旨在示好開發(fā)者
  4. iPad軟件設(shè)計初步:它不只是大號的iPhone
  5. 月入40萬 iPhone中文應(yīng)用程序開發(fā)者訪談
責(zé)任編輯:佚名 來源: 雨雪霏霏博客
相關(guān)推薦

2010-09-13 08:58:47

自動釋放便捷方法內(nèi)存管理

2020-04-08 09:57:53

漏洞安全漏洞漏洞管理

2013-03-25 13:52:39

SDN軟件定義網(wǎng)絡(luò)Hybird

2019-09-11 17:16:34

DockerGitHubWindows

2009-12-30 15:10:44

摩卡

2009-07-14 10:56:21

MyEclipse快捷插件

2023-03-24 07:31:58

Oracle兼容性產(chǎn)品

2009-02-16 09:47:00

IPTV技術(shù)多媒體運營

2011-05-30 17:31:26

自動化測試

2013-07-22 17:49:52

Ubuntu虛擬機

2009-07-21 13:01:07

ASP.NET上傳文件

2010-09-01 17:13:56

無線局域網(wǎng)WLAN

2023-06-06 07:31:33

數(shù)據(jù)庫運維管理平臺

2009-10-28 11:35:25

Linux服務(wù)器優(yōu)化

2011-01-07 09:19:35

Linux文件權(quán)限

2010-07-08 10:03:39

動態(tài)語言PythonRuby

2022-02-22 06:11:46

數(shù)字化轉(zhuǎn)型企業(yè)云數(shù)據(jù)庫

2015-07-22 09:54:48

互聯(lián)網(wǎng)+發(fā)達國家

2010-01-13 10:34:23

VB.NET局部靜態(tài)變

2010-02-26 17:47:15

點贊
收藏

51CTO技術(shù)棧公眾號