Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制
生活随笔
收集整理的這篇文章主要介紹了
Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、不調(diào)用autorelease()的情況
????????TestVO*?vo?=?new?TestVO();//未調(diào)用create()方法創(chuàng)建,沒有執(zhí)行過autorelease()vo->init();//這種情況下局部變量無法被回收vo->release();//需要手動調(diào)用release()方法//CC_SAFE_DELETE(vo);//也可以用這種方法刪除2、調(diào)用autorelease()的情況
????????TestVO*?vo?=?TestVO::create();?//引用計(jì)數(shù)=1//create()方法中執(zhí)行過autorelease()//引用計(jì)數(shù)設(shè)為1//在幀結(jié)束的時候引用計(jì)數(shù)-1//引用計(jì)數(shù)為0時被回收3、手動調(diào)用retain()防止被刪除
TestVO*?vo?=?TestVO::create();//引用計(jì)數(shù)=1????????vo->retain();//引用計(jì)數(shù)=2//......//幀結(jié)束?引用計(jì)數(shù)-1?值為1?不回收//......//下一幀開始時?引用計(jì)數(shù)+1?值為2//......//調(diào)用release()方法vo->release();//引用計(jì)數(shù)-1//......//幀結(jié)束?引用計(jì)數(shù)-1?值為0?被回收4、被添加到cocos2d的數(shù)據(jù)結(jié)構(gòu)時
????????TestVO*?vo?=?TestVO::create();//引用計(jì)數(shù)=1mList->pushBack(vo);//引用計(jì)數(shù)=2mList->popBack();//引用計(jì)數(shù)=1?能被回收Vector<TestVO*>*?mList2?=?new?Vector<TestVO*>();mList2->pushBack(vo);//引用計(jì)數(shù)=2?無法被回收//如果mList2是局部變量,其他地方無法把vo從mList2中刪除,vo將無法被回收5、類的成員
????如果是繼承Ref類型的數(shù)據(jù),如果用create()創(chuàng)建,需要在創(chuàng)建后調(diào)用retain()函數(shù),否則會在幀的結(jié)束被回收。
????如果是new的方法初始化的,不需要調(diào)用retain()
????刪除該數(shù)據(jù)或賦其他的值時,都需要調(diào)用release()方法
????new 的方法創(chuàng)建的可以用CC_SAFE_DELETE(vo)這種方式刪除。
轉(zhuǎn)載于:https://blog.51cto.com/putaotiancu/1598272
總結(jié)
以上是生活随笔為你收集整理的Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NLP(十二)依存句法分析的可视化及图分
- 下一篇: 14 年老牌 MV 网站音悦台将回归:官