位置: 编程技术 - 正文

cocos2d 内存管理(cocos2dx内存管理)

编辑:rootadmin

推荐整理分享cocos2d 内存管理(cocos2dx内存管理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2d 内存管理机制,cocos creator内存管理,cocos creator内存管理,cocos 内存优化,cocos2dx内存管理,cocos2d 内存管理机制,cocos2d内存优化,cocos2d 内存管理机制,内容如对您有帮助,希望把文章链接给更多的朋友!

-- 不要怕,勇敢的迈出第一步,加油!!!!!--

此章介绍cocos2d 中的内存管理

1. cocos2d 中的所有Node类都继承于Ref,Ref中有引用计数的概念,如下:

class TestRef : public Ref {

public:

TestRef() {}

virtual ~TestRef() {}

};

new TestRef -- 这时class Ref 中的_referenceCount = 1

retain -- _referenceCount&#;&#;

release -- _referenceCount--, 如果_referenceCount == 0, 析构这个class

autoRelease -- 把this 放入PoolManager 内存池中. 当PoolManager回收时,就会把这个class回收到,并且析构。

例子1

auto p = new TestRef(); _referenceCount = 1

p->retain(); _referenceCount = 2

p->release(); _referenceCount = 1

p->release(); _referenceCount = 0, 析构p

例子2

auto p = new TestRef(); _referenceCount = 1

p->autoRelease(); 当PoolManager回收时,就会把这个class回收到,并且析构。

这个就是cocos2d 中的内存管理。

cocos2d 内存管理(cocos2dx内存管理)

如果我们在使用一些sprite,layer,scene时,在addChild的前后,如果不是特殊需要,不要调用其retain或者release,因为在创建后,这个组件都调用了autoRelease,并在其父节点释放后,其子节点都会释放的。

2. 不要在组件的继承类中保存如何的非Node类的成员变量,什么意思呢?如下,这里只是简单的描述一下哈,

class TestLayer : public layer {

public:

virtual ~TestLayer() {

t->release();

}

CREATE_FUNC(Fight);

private:

TestRef *t;

};

bool TestLayer::init() {

if (!Layer::init())

return false;

t = new TestRef();

return true;

}

把当前的TestLayer加入Scene中,然后程序退出,Scene和TestLayer都会被析构掉。在TestLayer的析构中,我们要把TestRef也析构掉,但是在TestLayer的析构函数断点中,我看到 t 是一个无效的指针,并且TestRef的析构函数没有被调用过,“内存泄露”了,怀疑如下:仅供个人参考,如果有人知道具体答案,请告知,谢谢~~~~

在TestLayer析构之前,其内部的所有子组件都会被析构掉,并且其所有成员变量都被重置成野指针,这是什么原因,我还没有搞清楚,内存泄露,程序退出时就会挂掉,大家可以根据这个,判断其是否内存泄露,什么地方内存泄露,还是很有用的。

结论:

1. cocos2d 的内存管理有效的解决某些童鞋忘掉释放内存的习惯,当然这个习惯不好哈。

2. 不能在组件的继承类中保存任何成员变量的对象,谨记。

TexturePacker命令行使用 spanstyle=background-color:rgb(,,);color:rgb(,,);font-family:Arial,Helvetica,sans-serif;font-size:px;/spanprename=codeclass=plainspanstyle=background-color:rgb(,,);font-fam

《Cocos2d学习之路》一,前序和闹钟 转载请说明出处:

Cocos2d : 模拟IOS时间选择器(循环) 使用引擎:cocos2d-js3.0使用语言:javascript运行平台:手机web---------------------------------------------------------------初步分析:操作过程:滑动,转动,放缓速度

标签: cocos2dx内存管理

本文链接地址:https://www.jiuchutong.com/biancheng/369136.html 转载请保留说明!

上一篇:cocos2d setTextureRect用法

下一篇:TexturePacker命令行使用(texturepackergui)

  • 企业用于职工的个人住房是否可以不缴纳房产税?
  • 应收留抵税额退税款属于哪类科目
  • 建筑发票开具与土增税扣有什么关系?
  • 化粪池合同书
  • 高新企业要求研发投入
  • 会议服务费怎么开
  • 公允价值变动损益属于当期损益吗
  • 软件和硬件可以用什么代名词
  • 职工教育经费税法
  • 亏损企业能不能无常捐赠
  • 应收账款因质量不符合退货应该实施什么审计程序
  • 库存商品公司自己用怎么下账
  • 代销产品缴纳增值税吗
  • 固定资产安装完毕达到预定可使用状态
  • 低值易耗品进项税额转出账务处理
  • 农行转账支票填写样本存根怎么填
  • 浅析税收滞纳金问题的政策法规
  • 利润表的本期数即本月实际发生数
  • 个人交汽车购置税流程
  • 税务机关核定应纳税额的具体程序和方法
  • 工资预支怎么做账
  • 未开发土地可否转给子公司
  • 零申报的企业年末的利润表可以为零吗?
  • 资产转让税费哪方承担
  • 转出以前年度成本怎么做账
  • 外资公司股东要求
  • spss安装后无法启动,并行配置不正确
  • 魁北克位置地图
  • 应收账款保理的主要意图在于
  • linux阅读pdf
  • 旅游企业会计ppt
  • 开发产品完工结转
  • 日本东京秋叶原攻略
  • 外籍个人取得的现金住房补贴所得免征个人所得税吗
  • 电子承兑汇票支付流程
  • 软件企业认定好处
  • laravel入门与实战:构建主流php应用开发框架
  • html+css登录页面
  • 国企无偿划转股权免印花税
  • 结转坏账准备是什么意思
  • 做工程没钱了可以贷款吗
  • python数据编程
  • db2入门教程
  • 子公司借钱给母公司,未收取利息,要纳税吗
  • 商业承兑汇票的流程
  • 库存现金的使用限额规定
  • 委托加工物资实际成本包括增值税吗
  • sqlserver有实例吗
  • 增值税及附加税费申报表附列资料一
  • 外商投资有限合伙企业
  • 清算期间发生的利息支出应计入
  • 公司收到加盟费会计分录
  • 资本金什么时候可以验资
  • 小企业固定资产折旧方法
  • 企业如何优化管理
  • 融资租赁出租人与承租人之间形成债权债务关系
  • 银行存款支付投资者投入的款项54万
  • 价税合计怎么求税额
  • 连锁店会计处理流程
  • 资产负债表负债率怎么计算
  • 不同利益主体之间的利益如何协调
  • 所得税核算的三种方法
  • 企业所得税里的利润总额按什么填写
  • 固定资产是指什么
  • mysql同步问题之Slave延迟很大优化方法
  • c#如何使用数据库
  • linux ubuntu安装教程
  • win10访问局域网电脑需要用户名和密码
  • osk.exe
  • win7系统进不了桌面
  • opengl 输入框
  • 设计模式中的行为模式
  • 各种扩展名的含义
  • bash脚本加密
  • 配置ip地址的方法有哪几种
  • vue curd生成
  • 国家河南税务局
  • 云南地税局官网
  • 房地产对外投资契税
  • 注册会计师人员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设