码迷,mamicode.com
首页 > 其他好文 > 详细

记录关于cocos2dx内存管理机制可能崩溃的一个坑

时间:2017-01-28 13:39:11      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:记录   text   常见   工作   2dx   node   auto   retain   需求   

大年初一写代码,纪念一下:)

cocos2dx,内存管理方式如下:

所有Ref继承而来的类,皆放入AutoreleasePool,每一帧释放一次,如果引用计数为0,则delete。

因此,Ref在每帧的工作,就是先ref+1,后ref-1,让它ref-1的是AutoreleasePool,而让它ref+1的就各有方式了。最常见的就是CCNode,每帧为子节点retain的方式。

一般这是不会有问题的。如果你有需求在类中保存一个Ref对象,而它并非一个子节点,如RenderTexture,则必须记住自己写代码retain。

此处有一个容易出错的地方:如果你对这个Ref的create本身是在某个Update中做的,那应该当场retain一次。因为Update调用完AutoreleasePool紧接着就会release,直接导致Ref被删除,没机会坚持到下次update。

如果代码中使用了自己维护的Ref对象,而发生了莫名其妙的崩溃,不妨看看是不是这个问题。

记录关于cocos2dx内存管理机制可能崩溃的一个坑

标签:记录   text   常见   工作   2dx   node   auto   retain   需求   

原文地址:http://www.cnblogs.com/eaglelun/p/6354225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!