位置: 编程技术 - 正文

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)

  • 小规模纳税人的条件
  • 首付款计提税金吗
  • 汽油费通行费等怎么记账
  • 对本次疫情有什么看法
  • 快递公司快递人员工资记入什么会计科目
  • 利息资本化计入什么现金流量科目
  • 新成立的公司企业所得税怎么申报
  • 银行借款的补偿金是什么
  • 新税法下广告费和业务宣传费的扣除是怎样?
  • 房地产增值税怎么算举例说明
  • 库存盘亏的原因
  • 房租本月入账上月的怎么摊销?
  • 电费发票开据后如何入帐
  • 分配辅助生产车间成本记账凭证
  • 收购烟叶委托加工烟丝组成计税价格
  • 那些发票可以报
  • 公户买理财产品怎么做账
  • 城建税及教育费附加计提表
  • 工资表是放在计提还是发放
  • 可供出售金融资产属于流动资产吗
  • 暂估运费成本的账务处理
  • 个体户怎么给供货公司
  • 增值税小规模纳税人减免增值税政策
  • 离职有补偿金的可不可以领取失业金
  • 企业收到政府拆迁补偿款要交税吗怎么做账
  • 后裔王者荣耀台词大全
  • 公司员工差旅费报销制度
  • 进项税额认证了也就是抵扣了吗?
  • win 11 bug
  • 单位给个人开票需要什么资料才能开
  • 发票支票区别
  • 圣胡安教会9个遗物视频
  • avoid什么用法
  • 美轮美奂的对象是什么
  • 工商变更后税务会自动变更吗
  • 财政拨入的科技费是什么
  • 金税盘报送汇总在哪
  • 运营级别划分
  • 学习笔记——Django项目的删除数据、查询数据(filter、get、exclude)
  • 会计六大类会计科目
  • 一般纳税人未申报可以开票吗
  • 下列项目的进项税额可以从销项税额中抵扣的是()
  • 季度缴纳企业所得税可以弥补亏损吗
  • 销售退回会计分录
  • 奖金做预发年底会发吗
  • 安置房买卖过户流程
  • 增值税计入固定资产的成本吗
  • 转出未交增值税和未交增值税区别
  • 职工福利费扣除税率
  • 新会计准则捐赠收入
  • 图文详解管道支架制作安装标准
  • 微软系统无法开机怎么办
  • linux中,什么命令可以控制口令的存活时间?
  • 连接远程mq
  • 宏基aspire s3适用固态硬盘
  • windows开机显示正在清理
  • macos教程
  • linux开发经验指的什么
  • powergenie是什么程序
  • 自动切换桌面
  • cocos2dx游戏案例
  • 使用forever管理nodejs应用教程
  • shell 输出
  • javascript面向对象编程 PDF
  • js应用实例
  • shell 单引号中引用变量
  • 扩展坞哪个牌子比较好
  • 多了一个本地磁盘
  • javascript学习指南
  • javascript编程语言
  • Android中的布局有哪些
  • 陕西新版电子税务局怎么使用
  • 小规模纳税人怎么申报纳税
  • 济南槐荫税务局办税大厅电话
  • 低丰度油气田开采的原油
  • 企业交社保可以退税吗
  • 亚马逊利用大数据练就读心术
  • 黑龙江省税务培训网官网
  • 小规模印花税2023减半吗
  • 美国网购消费者个人信息保护法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设