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