位置: 编程技术 - 正文

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)

  • 以前年度损益对应的科目
  • 现金流量表财务费用怎么填
  • 成本计算账户期末一般有余额吗
  • 民办非企业不注销的法律后果
  • 金税盘可以用安卓的线吗
  • 合同负债里面含增值税吗
  • 没经营的个体户营业执照怎么注销
  • 金税盘处于报税期是什么意思
  • 待抵扣进项税额怎么算
  • 国有资产转让房产
  • 未投入使用房屋怎么处理
  • 债务重组与资产重组
  • 周转材料计入什么账
  • 货款为现金如何做记账账款凭证?
  • 海关进口关税专用缴款书可以抵扣增值税吗
  • 行政事业单位工会经费支出范围
  • 申报开票是什么意思
  • 个人租车所得交什么税
  • 房租费简易征收税率
  • 销售营改增之后取得的固定资产
  • 土地一次开发和二次开发
  • 中方人员取得的工资、薪金所得,征收个人所得税有特别规定吗?
  • 如何正确安装和使用电脑
  • windows10如何开机启动软件
  • 国库年终总结
  • 债券类资产的远期合约是什么
  • 先入费用后来发票怎么做账
  • 大沙丘国家公园在哪里
  • php require include
  • mac键盘快捷键设置
  • 企业的税收优惠政策有哪些
  • 贴现息等于什么
  • thinkphp实现163、QQ邮箱收发邮件的方法
  • 表单校验html5
  • phpnow升级php版本
  • php获取数据库中的数据,输出到div中
  • 自动生成尺寸
  • 盈余公积转增资本的最高限额
  • 公司汽车折旧计算方法用那种
  • 查看ls命令的使用手册
  • php调用java接口
  • 计提租金怎么做会计分录
  • 行政事业单位怎么开发票
  • 开票软件密码和口令锁定了,怎么解锁
  • phpcms验证码不显示
  • python3.9怎么删除
  • 怎样根据税负率计算税额
  • 如何设置固定资产累计折旧增值税进项税额缺损入账科目
  • 巧妙利用谐音的广告语
  • 预提费用增加在借方还是贷方
  • 哪些税种影响当期损益
  • 工伤陪护费计入哪个科目
  • 用银行存款支付本季度短期借款利息
  • 报销未收到发票怎么做账
  • 房地产开发打桩
  • 质量赔款能冲减收入么
  • 交易性金融资产属于流动资产
  • 建筑企业营改增之前计税方法
  • 建账需要买哪些会计用品
  • 怎么操作win10系统
  • WIN10专业版怎么查看操作位数
  • win10小娜怎么用不了
  • ssh用法及命令
  • win8什么时候发布
  • linux注销用户快捷键
  • win7的命令对话框在哪里
  • unitysharder
  • react native community
  • bat怎么设置
  • css对象
  • javascript entries
  • js按位运算符
  • js数组操作函数
  • 搭建oj
  • AngularJS2 与 D3.js集成实现自定义可视化的方法
  • python 父类方法
  • 安卓中的菜单
  • 税务协查函回复的内容有哪些
  • 蒲河大集是什么多少号沈阳大集各个大集多少号
  • 国家个人所得税征收标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设