位置: 编程技术 - 正文

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)

  • 如何查企业是一级企业
  • 房地产开发企业简易计税方法 可以扣除吗
  • 劳务派遣差额发票0税率情况
  • 9月份扣什么税?
  • 收到退回的留抵退税怎么做账
  • 赠送客户样品怎么写文案
  • 土地补偿款涉及哪些法律
  • 固定资产明细账怎么填
  • 以银行存款支付水电费
  • 缴纳土地出让金后多久能拿到土地证
  • 服装租赁开票税目
  • 营改增医院增值税
  • 医院外聘专家费用由科室承担吗
  • 单位租用个人住房合法吗
  • 经营性罚款和行政性罚款的区别
  • 企业外购消费品会计分录
  • 什么发票可以抵税
  • 企业所得税本季度可以弥补上季度亏损吗?
  • 汇算清缴时费用占收入多少
  • 银行手续费可以抵扣企业所得税吗
  • 纳税人提供不动产经营租赁增值税征收管理
  • 没有把发票开给客户公司注销了怎么办
  • 企业所得税减免所得税额怎么算
  • 营改增的纳税人
  • 汇总表格怎么设置
  • 企业所得税季报人数怎么填
  • 小规模企业记账流程
  • 员工租赁宿舍开几个点发票
  • 广告费和业务宣传费
  • 逆流交易合并报表调整少数损益
  • dll格式的文件
  • 指定的网络名不再可用 共享打印机00x0000040
  • PHP:preg_match_all()的用法_PCRE正则函数
  • avc格式是什么
  • 真三国在哪下载
  • 云计算技术是学什么的
  • vue的foreach循环
  • but all failed
  • 虚拟机安装win11提示无法运行
  • discuz去除底部
  • 个税专项附加扣除金额
  • 出售持有股票会计处理
  • php sleep()
  • phpcms程序
  • 报验户如何管理
  • 普票 销项
  • 企业注销后还会查账吗
  • 企业年金是否要交个税
  • 个人独资企业最新税收政策
  • 库存股增加记哪一方
  • 运输业开发票
  • 长期待摊费用摊销会计分录
  • 长期股权投资成本法会计处理
  • 股权转让的印花税税率是多少
  • 累计减免所得税
  • 发票已开的情况下不确认收入可以吗?
  • 取得投资时支付的相关税费
  • 听妈妈讲那过去的事情讲课
  • win81蓝屏重启故障
  • win10周年更新版是什么意思
  • xp系统的电脑无法启动
  • 双系统麻烦吗
  • windows远程连接是什么协议
  • windows7版本支持功能最少的
  • win10不能玩qq堂没反应
  • cocoscreator lua
  • node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE的解决方法
  • bat批处理命令大全
  • 举例简介三国演义人物塑造的主要手法
  • javascript高级程序设计pdf百度云
  • jquery easing
  • jquery给按钮添加事件
  • 商铺土地增值税预缴税率是多少
  • 小规模纳税人企业所得税怎么征收
  • 出口退税正式申报资料上传
  • 电子税务局登录入口
  • 大同县税务局
  • 一般纳税人企业所得税5%还是25%
  • 简述绩效信息的收集原则
  • 什么是私人帐户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设