位置: 编程技术 - 正文

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)

  • 税盘服务费抵扣增值税
  • 一般纳税人开普票税率是3%还是13%
  • 企业所得税弥补亏损明细表怎么看
  • 福利费专票进项怎么抵扣
  • 不含税的销售额乘以税率等于什么
  • 施工二级资质是什么意思
  • 合并报表是按年还是按月
  • 环保税申报表怎么填制
  • 成本结转的方法能用百分比法吗
  • 未交增值税最后到哪去了
  • 资本公积转增股本什么意思
  • 企业应收账款无论是否带息,在年末资产负债表中均应以
  • 本月征期2021
  • 公司购买设备24套
  • 企业应纳税所得额计算例题
  • 企业报社保可以用医保吗
  • 营业外收入做多了怎么办
  • 物业服务合同印花算什么类型
  • 关注!这两种情况下可免征增值税!
  • 企业重组有什么好处
  • 土地增值税规定中央空调属于房屋建筑物吗
  • 可供出售金融资产会计处理
  • 销售应税产品分录
  • 回迁安置房拆一次多少钱
  • 库存现金出现负数怎么跟客户沟通
  • i912900k用什么主板好
  • mac电脑安装win10系统报错
  • 税务局手续费返还
  • 电脑开机弹出网页游戏广告
  • win11自带照片查看器
  • 建筑业预缴企业所得税税率
  • phpsutdy
  • 公司要交什么税个人卖给公司的二手车
  • 交强险必须交车船税一年多少钱
  • 法国西南部城市
  • php备份mysql数据库
  • 用替票报销违法吗
  • 计算md5值命令
  • python中numpy数组和列表的区别
  • 电话订票起售时间
  • 独资设立的有限公司
  • 专项应付款的账务处理
  • 回溯法实现全排序的方法
  • 房地产预计毛利率企业所得税
  • 销货清单是否必须备案
  • 住宿收据怎样写
  • 公司自有房产出租给员工如何处理
  • 坏账准备需要计提增值税吗
  • 买的加油卡怎么充值
  • 资本公积的账务处理例题
  • 增值税期末有留抵税额应该怎么结转
  • 确认应付职工薪酬是什么意思
  • 诉讼费应计入什么会计科目
  • 收付转三种凭证的限制类型
  • 一次性付款的优势
  • 投资性房地产摊销从什么时候开始
  • 手机如何使用windows
  • 高效管理者的三大技能 罗伯特卡茨
  • freebsd怎么用
  • windows xp注册表清理
  • xp系统做完了进不去
  • rasman.exe - rasman是什么进程 有什么作用
  • netcfg -d
  • centos安装教程详解
  • win8系统设置锁屏密码
  • 在linux系统中创建用户账户
  • win7软件界面显示不全怎么办
  • javascript中的数字型可以用来保存整数或浮点数(小数)
  • html5的全局属性
  • bat脚本删除注册表
  • jquery树形菜单
  • jquery设置图片大小
  • nodejs的组成
  • jquery轮播图代码
  • python字典有什么用
  • 快速解决偏头痛的6个方法
  • 安徽国税app
  • 怎么查询电子票是否被红冲
  • 增值税发票税控开票软件卸载不了
  • 办公电话怎么设置铃声
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设