999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談IOS內(nèi)存開(kāi)發(fā)管理機(jī)制的應(yīng)用

2016-07-13 07:58:07肖斯瑤
大科技 2016年36期
關(guān)鍵詞:管理機(jī)制程序管理

肖斯瑤

(湖南省長(zhǎng)沙市長(zhǎng)郡中學(xué) 410002)

淺談IOS內(nèi)存開(kāi)發(fā)管理機(jī)制的應(yīng)用

肖斯瑤

(湖南省長(zhǎng)沙市長(zhǎng)郡中學(xué) 410002)

ios是蘋果公司的主流操作系統(tǒng),在目前網(wǎng)絡(luò)發(fā)展的背景下,ios的開(kāi)發(fā)一直是業(yè)界研究的熱點(diǎn)。本文主要針對(duì)ios內(nèi)存開(kāi)發(fā)管理機(jī)制的應(yīng)用進(jìn)行分析。

ios系統(tǒng);內(nèi)存開(kāi)發(fā)管理機(jī)制;應(yīng)用

ios是蘋果公司的操作系統(tǒng),來(lái)開(kāi)發(fā)某些移動(dòng)設(shè)備軟件所使用的。許多ios開(kāi)發(fā)出來(lái)的軟件都是因?yàn)閮?nèi)存的泄露而崩潰,再加上移動(dòng)設(shè)備本身內(nèi)存有限,內(nèi)存管理在ios開(kāi)發(fā)中極為重要。所以了解ios內(nèi)存開(kāi)發(fā)管理機(jī)制對(duì)于開(kāi)發(fā)者來(lái)說(shuō)是非常有必要的。

1 內(nèi)存管理中的所有權(quán)策略

任何對(duì)象的存在都不能離開(kāi)其所有者單獨(dú)存在。如果沒(méi)有所有者,該對(duì)象就會(huì)被判斷為無(wú)效對(duì)象,被系統(tǒng)銷毀。為了明確對(duì)象的所有權(quán)義務(wù),蘋果公司創(chuàng)建的編程環(huán)境Cocoa設(shè)立了一系列的判斷準(zhǔn)則:

(1)所有權(quán)不是任何一個(gè)對(duì)象都能有的,它是需要一定條件的,最主要的是要對(duì)對(duì)象執(zhí)行retain、new等操作,才能獲得其所有權(quán)。

(2)不要只是獲得所有權(quán)卻不釋放,如果不再需要某個(gè)對(duì)象的所有權(quán),要及時(shí)釋放。可以通過(guò)release或者autorelease來(lái)實(shí)現(xiàn)所有權(quán)的釋放。

(3)如果沒(méi)有該對(duì)象的所有權(quán),那么就不能對(duì)其實(shí)行釋放所有權(quán)操作。

2 保留計(jì)數(shù)機(jī)制

所有權(quán)策略是在調(diào)用retain方法后通過(guò)保留計(jì)數(shù)實(shí)現(xiàn)的。每個(gè)對(duì)象創(chuàng)建完成后,為了記錄其所有權(quán)個(gè)數(shù),系統(tǒng)會(huì)自動(dòng)生成一個(gè)計(jì)數(shù)器供其使用,并且用此計(jì)數(shù)器管理對(duì)象的內(nèi)存。當(dāng)一個(gè)對(duì)象創(chuàng)建完成,計(jì)數(shù)器值等為1;將release消息發(fā)送給對(duì)象,計(jì)數(shù)器值減1;將retain消息發(fā)送給對(duì)象,計(jì)數(shù)器值加1;將autorelease消息發(fā)送給對(duì)象,在某個(gè)階段上計(jì)數(shù)器的值減1.若計(jì)數(shù)器值等于0,那么就會(huì)釋放該對(duì)象的內(nèi)存。這些工作都是由一個(gè)名為dealloc的函數(shù)來(lái)執(zhí)行的,每個(gè)對(duì)象都會(huì)有這樣一個(gè)方法。

3 ios內(nèi)存釋放的一般規(guī)則

(1)如果對(duì)象是通過(guò)copy、new等關(guān)鍵字創(chuàng)建的,并且其保留計(jì)數(shù)器值為1,則當(dāng)再想使用該對(duì)象時(shí),一定要向?qū)ο蟀l(fā)送一條autorelease或release消息以便當(dāng)該對(duì)象壽命結(jié)束時(shí)將其進(jìn)行銷毀。

(2)如果對(duì)象是通過(guò)其他方法創(chuàng)建的,并且計(jì)數(shù)器保留的值為1,與此同時(shí)將其設(shè)置為自動(dòng)釋放,要想一段時(shí)間內(nèi)一直擁有這個(gè)對(duì)象,就必須想法保留住這個(gè)對(duì)象并且在操作完成時(shí)還要完成釋放。

(3)已經(jīng)確定要保留某個(gè)對(duì)象,那應(yīng)該考慮如何對(duì)其釋放。若想將保留下來(lái)的對(duì)象釋放,必須堅(jiān)持release和retain的方法,并保持相同的使用次數(shù)。

4 自動(dòng)釋放池的作用及使用場(chǎng)景

自動(dòng)釋放池其實(shí)就是一個(gè)用來(lái)實(shí)現(xiàn)內(nèi)存自動(dòng)回收的盛放對(duì)象的池子,它是NSAutoreleasePool的實(shí)例,它里面既包含自身定義的對(duì)象還包含接收到autorelease指令的對(duì)象。當(dāng)自動(dòng)回收池將被回收刪除時(shí),它會(huì)給里面的每個(gè)對(duì)象都發(fā)一條release消息,其他情況還會(huì)一直保留著對(duì)象,這樣就會(huì)將對(duì)象的生命周期延長(zhǎng)至自動(dòng)釋放池自身被釋放。如果釋放池被刪除導(dǎo)致對(duì)象沒(méi)有了可用的釋放池,Cocoa還會(huì)記錄下相應(yīng)的autorelease異常。

盛放自動(dòng)釋放池的是一個(gè)一個(gè)的堆棧。棧頂存放的是新創(chuàng)建的自動(dòng)釋放池,接收到autorelease消息的對(duì)象會(huì)被添加到棧頂?shù)淖詣?dòng)釋放池中,當(dāng)釋放池被回收或者不能用時(shí),就會(huì)被堆棧自動(dòng)刪除。

大部分情況,程序的開(kāi)發(fā)應(yīng)用的是應(yīng)用系統(tǒng)的開(kāi)發(fā)包自帶的自動(dòng)釋放池,但是以下情況,自帶的自動(dòng)釋放池不能起到回收的作用,必須要使用自己的自動(dòng)釋放池:

(1)程序編寫的方式不是用基于應(yīng)用系統(tǒng)而開(kāi)發(fā)出來(lái)的,比如通過(guò)命令行工具進(jìn)行編寫的程序,它當(dāng)然不能用應(yīng)用系統(tǒng)的內(nèi)置自動(dòng)釋放池,必須自己建造自己的自動(dòng)釋放池。

(2)如果生成一個(gè)從屬線程,當(dāng)線程開(kāi)始執(zhí)行,就必須創(chuàng)建自己自動(dòng)釋放池,因?yàn)樵诰€程內(nèi)創(chuàng)建的對(duì)象并不會(huì)在函數(shù)結(jié)束后自動(dòng)釋放。

(3)如果很多對(duì)象被創(chuàng)建在一個(gè)循環(huán)里,最好在循環(huán)體內(nèi)部創(chuàng)建一個(gè)自動(dòng)釋放池以便于減少程序的最大內(nèi)存占用量。

5 內(nèi)存管理中常見(jiàn)的錯(cuò)誤

在這里主要介紹iPhone開(kāi)發(fā)中內(nèi)存管理常見(jiàn)的錯(cuò)誤。

沒(méi)有使用存取方法。沒(méi)有存取方法的程序在一些簡(jiǎn)單的情況下可以正常運(yùn)行,但是當(dāng)忘記了釋放或保留時(shí)或者當(dāng)實(shí)例變量的內(nèi)存管理語(yǔ)義發(fā)生錯(cuò)誤時(shí),如果沒(méi)有存取方法,程序就會(huì)發(fā)生錯(cuò)誤。

內(nèi)存泄露。當(dāng)對(duì)象的保留計(jì)數(shù)器值為1,并且在方法釋放的作用域內(nèi)沒(méi)有對(duì)應(yīng)的release時(shí),對(duì)象就不會(huì)被自動(dòng)釋放池釋放,最后導(dǎo)致泄露內(nèi)存。

釋放沒(méi)有所有權(quán)的對(duì)象。如果釋放的是沒(méi)有所有權(quán)的對(duì)象,會(huì)發(fā)生過(guò)度釋放的錯(cuò)誤。

6 結(jié)束語(yǔ)

本文主要對(duì)影響ios內(nèi)存的幾個(gè)重要方面進(jìn)行了闡述,著重剖析了內(nèi)存管理中難以理解以及容易混淆的部分,并歸納總結(jié)了ios開(kāi)發(fā)中常見(jiàn)的內(nèi)存管理的錯(cuò)誤以及規(guī)則。最后達(dá)到了初步了解ios內(nèi)存開(kāi)發(fā)的管理機(jī)制的目的。

[1]李蕾,李曉麗.基于IOS手持終端的移動(dòng)學(xué)習(xí)資源設(shè)計(jì)研究[J].中國(guó)電化教育,2014(12).

[2]盛平,嚴(yán)冬,張德勤.基于IOS平臺(tái)的智能視頻系統(tǒng)客戶端設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2015(07).

[3]段艷艷,趙啟升.基于IOS的O2O商務(wù)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].泰州職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014(03).

[4]孫曉文.IOS與Android操作系統(tǒng)的優(yōu)缺點(diǎn)比較[J].無(wú)線互聯(lián)科技,2013(12).

TN929.5

A

1004-7344(2016)36-0269-01

2016-11-2

猜你喜歡
管理機(jī)制程序管理
棗前期管理再好,后期管不好,前功盡棄
試論工程造價(jià)管理機(jī)制的完善與創(chuàng)新
建立有效的管理機(jī)制奠定堅(jiān)實(shí)的人力資源基礎(chǔ)
工電道岔結(jié)合部聯(lián)合管理機(jī)制的探討
試論我國(guó)未決羈押程序的立法完善
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
“這下管理創(chuàng)新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
人本管理在我國(guó)國(guó)企中的應(yīng)用
主站蜘蛛池模板: 国产成人免费高清AⅤ| 911亚洲精品| 亚洲浓毛av| 美女潮喷出白浆在线观看视频| 久久国产拍爱| 亚洲精品人成网线在线 | 国产大片喷水在线在线视频| 国产色婷婷| 欧美性精品不卡在线观看| 91美女视频在线观看| 青青青视频蜜桃一区二区| 午夜精品久久久久久久99热下载| 99视频免费观看| 免费99精品国产自在现线| 新SSS无码手机在线观看| 国产91久久久久久| 1769国产精品免费视频| 欧美一级一级做性视频| 67194成是人免费无码| 国产特一级毛片| 欧美成人综合视频| 91久久天天躁狠狠躁夜夜| 国产成人精品一区二区不卡| 国产激情无码一区二区APP| 亚洲天堂日本| 色婷婷啪啪| 伊人婷婷色香五月综合缴缴情| 国产精品香蕉在线观看不卡| 99成人在线观看| 欧美日韩资源| 91福利在线看| 凹凸精品免费精品视频| 国产精品va| 亚洲愉拍一区二区精品| 狠狠亚洲婷婷综合色香| 高潮毛片免费观看| 高清久久精品亚洲日韩Av| 激情视频综合网| 自拍亚洲欧美精品| 99久久精品免费看国产电影| 成年人午夜免费视频| 亚洲无码免费黄色网址| 国产网友愉拍精品视频| 老色鬼久久亚洲AV综合| 在线观看国产精品日本不卡网| 人人爱天天做夜夜爽| 国产女人综合久久精品视| 人人爱天天做夜夜爽| 国产激爽爽爽大片在线观看| 国产精品冒白浆免费视频| 国产真实乱子伦精品视手机观看| 91午夜福利在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ | 国产一级做美女做受视频| 亚洲美女一区二区三区| 国产一级裸网站| 毛片网站观看| 国产成人综合日韩精品无码首页 | 国产福利在线观看精品| 国产人妖视频一区在线观看| 99久久精品免费看国产电影| 亚洲精品国偷自产在线91正片| 四虎影视库国产精品一区| 91po国产在线精品免费观看| 免费福利视频网站| 亚洲AV成人一区二区三区AV| 人妻丝袜无码视频| 99r在线精品视频在线播放| 国产a网站| 国产一区二区三区免费| 亚洲无线国产观看| 欧美国产日韩另类| 99国产精品国产高清一区二区| 精品视频在线观看你懂的一区 | 久久9966精品国产免费| 狠狠亚洲五月天| 四虎成人精品在永久免费| 久久香蕉国产线看观看式| 黄色网页在线观看| 国产激情无码一区二区APP | 欧美日韩国产综合视频在线观看| 日韩无码精品人妻|