位置: 编程技术 - 正文

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)

  • 采矿权承包出去资源税
  • 免征增值税的项目如何开发票
  • 图书属于什么经济类别
  • 电子税务局实名核验失败怎么回事啊
  • 分公司可以独立开银行账户吗
  • 会计做账借贷怎么做
  • 建筑业适用什么行业
  • 没有认证的发票怎么做分录
  • 餐饮消费方式
  • 环保专项资金可以转让吗
  • 物业公司销售门禁卡属于什么收入
  • 外购产品赠送他人合法吗
  • 企业自建房转让如何交土地增值税
  • 跨年错误分录能红冲吗
  • 支付劳务报酬怎么做账
  • 旅行社开具的发票是不都得写旅游服务
  • 旧发票专用章如何处理
  • 自来水费缴纳后多久来水
  • 房产税应当计入什么科目
  • 宽带合同要交印花税吗
  • 房产税计税税率怎么算
  • 预收款项确认主营业务收入谨慎性
  • 建筑公司收到预收款要交税吗?
  • 周转材料计划成本会计分录
  • 信用证保证金会退还吗
  • 计提折旧是什么账户
  • 个体户税务申报需要什么资料和手续
  • 公司开业厂商的宣传文案
  • 电力安装工程辅料有哪些
  • dll格式的文件
  • 安全人员发现重大隐患
  • php 上传
  • PHP aes (ecb)解密后乱码问题
  • 统一社会保险费征收
  • java 调用go
  • php closure类
  • 权利许可证照印花税优惠政策
  • 初学者安装visual studio
  • 小规模纳税人增值税免税政策
  • uniapp dom操作
  • 嵌入式开关安装效果图
  • 汇算清缴管理费用明细有哪些
  • 清单发票填开注意事项
  • 应税服务项目减除清单0申报如何填写
  • 建筑公司遇到的问题
  • 加工费能直接抵税吗
  • ieee compel 2021
  • python time.ctime()如何做时间加减法
  • 办理对公账户时间
  • 一次性取得租赁合同
  • 固定资产指的是几年度
  • 服务业 费用可以暂估吗?
  • 增值税一般纳税人企业对同属于增值税
  • 电脑更换显示器需要重装驱动吗
  • 办公用品采购如何记账
  • 政府会计制度累计盈余为负数
  • 无形资产摊销的会计科目怎么录
  • 进出口企业外汇额度
  • 固定资产中如何计算折旧
  • 2019年新政府会计准则解读
  • 工程款结清确认书模板
  • 公司章程约定的出资时间
  • 主板如何清除cmos
  • ubuntu不支持设置属性
  • wind启动项
  • win8怎么查看ip地址
  • linux wc-w
  • linux如何快速入门
  • android界面切换与数据传递
  • opengl顶点坐标纹理坐标关系
  • android仿qq聊天
  • unity3d基础操作
  • unity随机生成一个物体
  • jQuery实现可以控制图片旋转角度效果(附demo源码下载)
  • python中的格式化输出用法总结
  • 微信群记账小程序
  • 莅临指导和莅临交流的区别
  • 企业党支部怎么称呼
  • 国家税务局何时上班
  • 专票清单用什么纸打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设