日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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类型数据 垃圾回收机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。