新聞中心
本文小編為大家詳細介紹“android智能指針怎么用”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“android智能指針怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、廣信ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的廣信網(wǎng)站制作公司
其中要點:
1、智能指針引用計數(shù)框架原理:當(dāng)父對象要引用子對象時,就對子對象使用強引用計數(shù)技術(shù),而當(dāng)子對象要引用父對象時,就對父對象使用弱引用計數(shù)技術(shù),而當(dāng)垃圾收集系統(tǒng)執(zhí)行對象回收工作時,只要發(fā)現(xiàn)對象的強引用計數(shù)為0,而不管它的弱引用計數(shù)是否為0,都可以回收這個對象,但是,如果我們只對一個對象持有弱引用計數(shù),當(dāng)我們要使用這個對象時,就不直接使用了,必須要把這個弱引用升級成為強引用時,才能使用這個對象,在轉(zhuǎn)換的過程中,如果對象已經(jīng)不存在,那么轉(zhuǎn)換就失敗了,這時候就說明這個對象已經(jīng)被銷毀了,不能再使用了。
2、智能指針實現(xiàn)框架:由一個對象來提供引用計數(shù)器,但是這個對象不會去維護這個引用計數(shù)器的值,而是由智能指針來維護;具體說是,第一是要定義一個負責(zé)提供引用計數(shù)器的公共類,第二是實現(xiàn)相應(yīng)的智能指針對象類;
3、android源碼涉及RefBase,sp,wp
(1)強引用與弱引用計數(shù)
RefBase中有一個隱含的對象,該對象內(nèi)部有強弱引用計數(shù)。
sp化后,強弱引用計數(shù)各增加1,sp析構(gòu)后,強弱引用計數(shù)各減1
wp化后,弱引用計數(shù)加1,wp析構(gòu)后,弱引用計數(shù)減1
強引用為0,導(dǎo)致實際對象被delete
弱引用為0,將導(dǎo)致隱含對象被delete
(2)弱引用操作
弱指針的最大特點是它不能直接操作目標對象,在于弱指針類沒有重載*和->操作符號,而強指針重載了這兩個操作符號。但是,如果我們要操作目標對象,需要把弱指針升級為強指針。
(3)目標對象生命周期控制
目標對象生命周期控制除強弱引用計數(shù)外,還有flag標志
A. 如果對象的標志位被設(shè)置為0,那么只要發(fā)現(xiàn)對象的強引用計數(shù)值為0,那就會自動delete掉這個對象;
B. 如果對象的標志位被設(shè)置為OBJECT_LIFETIME_WEAK,那么只有當(dāng)對象的強引用計數(shù)和弱引用計數(shù)都為0的時候,才會自動delete掉這個對象;
C. 如果對象的標志位被設(shè)置為OBJECT_LIFETIME_FOREVER,那么對象就永遠不會自動被delete掉,誰new出來的對象誰來delete掉。
讀到這里,這篇“android智能指針怎么用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標題:android智能指針怎么用
網(wǎng)頁地址:http://fisionsoft.com.cn/article/jsocoi.html