位置: 编程技术 - 正文

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)

  • 增值税什么时候计入成本
  • 企业税收主要分为哪几类
  • 一般纳税人发生特定应税销售行为
  • 税收分类编码表下载2023
  • 工会经费的会计核算方法
  • 一般纳税人什么条件
  • 定额扣除个税什么意思
  • 施工排水费是否属于措施费
  • 中央空调折旧年限是多久
  • 报税利润表的第二季度本期金额本年累计金额是什么
  • 个人所得税附加扣除中住房贷款利息扣除
  • 公司转让房产如何交税
  • 丢失发票已报税证明单取消
  • 外购存货的成本不包括
  • 财政局专利补助政策
  • 调表不调账最后会有什么问题
  • 报废资产处置收入怎么计税
  • 银行负债类账户包括哪些
  • 购买毛巾的费用是多少
  • 企事业承包承租方缴纳的管理费税费
  • 在天猫店铺后台中的提现怎么做会计分录?
  • 初级备考计划表
  • 建筑企业法定代表人和建筑公司资质不是一个人
  • 计算当期应纳税额
  • 企业享受小型微利政策
  • 工厂拆迁补偿款60岁前和60岁后有什么标准
  • bios中英文对照表图新版
  • macbookpro怎么添加文件夹
  • 金融企业贷款损失准备金税务管理
  • 腾讯电脑管家病毒库更新
  • php浮点数转为字符串
  • 安全人员发现重大隐患
  • 代扣代缴手续费比例
  • launcher.exe什么意思
  • php获取文件后缀名的方法
  • php判断数组是否为空的函数
  • 维保服务的税率是多少
  • 图书管理系统的软件结构图
  • python stream模块
  • php字符串定义
  • shapecfg命令 管制网络设备的流量
  • 勾选发票提交后如何
  • 零申报季报怎么报税的具体流程
  • 公司购买理财产品
  • 查询公司对公账户
  • 财政补助结转会计处理
  • 外管证预缴税款上报后,怎么交税
  • 帝国cms视频教程
  • sql存储过程几个主要步骤
  • 工商年审中实缴还是虚缴
  • 贴现法年末偿还金额
  • 网上购物没有发票
  • 企业注销在建工程怎么处理
  • 房地产成本核算对象
  • 开服务业发票要交印花税吗?
  • 无偿使用期限
  • 已经认证的进项发票在哪里查询
  • 修改mysql用户权限
  • Linux/Mac MySQL忘记密码命令行修改密码的方法
  • win7系统在哪里设置ip地址
  • win8磁盘占用率高怎么处理
  • 双系统麻烦吗
  • window10关闭
  • dosbox批处理
  • Unity3D 事件
  • java word操作
  • 高级控件动态数据加载过程有哪些
  • shell自定义命令
  • 安卓匿名电话软件
  • JQuery Ajax WebService传递参数的简单实例
  • 请问在javascript程序中
  • javascript中checkbox使用方法实例演示
  • 基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
  • 福建省国家税务局电子税务局官网入口
  • 三证合一的资料
  • 河北省税务局稽查局领导班子
  • 出口报价必须含增值税吗
  • 税务稽查会打电话吗
  • 揭牌仪式揭牌时的音乐
  • 财税方面的问题有什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设