cocos 2dX 中的 autorelease / retain /release 用法小总结。

我们撰写代码是无法避免是要和内存打交道的,内存的使用和释放也就成为了一个问题 ,在cocos中 有如下几种使用方式。

1,autorelease  自动释放池,首先我们来看看相应的开放源码。

当我们对一个对象进行autorelease后,cocos会把这个对象放入内存池,内存池会在用户使用这个对象后自动将对象释放。自动释放池会在下一帧将对象减一,如果没有其他对象使用的话,这个内存池就被释放掉了。

但是有时候我们申请一块内存后并不会马上使用,比如不会马上就某个精灵addChild ,如果我们还是使用autorelease的话在己帧后就会被释放掉了。这时候我们就倾向于使用retain/release组合。

2,retain/release  ,同样先看看源码。

通过代码我们可以看到,retain在每一帧后会把对象+1,而release是把对象--,这样就保证了空间不会再几帧后因为未使用就被释放掉了,当使用过后,release也同样会将其释放,不会引起内存泄漏的问题。

所以当我们使用时,根据实际需要自己选择相应的方式进行编程。

时间: 2024-11-02 09:24:20

cocos 2dX 中的 autorelease / retain /release 用法小总结。的相关文章

小娱乐一下,fileInfo中的Name ,FullName的用法小BUG

var filePath = new FileInfo(@"c:\text(sdf\123).txt"); Console.WriteLine(filePath.Name); Console.WriteLine(filePath.FullName); 代码如上.大家感觉输出是啥呢. 123).txt c:\text(sdf\123).txt 是这样的. Name中对名字里\是有BUG的.通常情况是没问题,在特殊条件下有问题. 有时间测试一下,directory属性是否有问题. 小娱乐一

ios中的关键词retain release

内存分析  在函数中只要用new  alloc  copy  这样的分配空间时 则计算器retain就要为一 每调用一次就要加一

对cocos2d 之autorelease\ratain\release的理解

前言: 三种情况,引出问题 new出来的对象需要释放,而释放时,如果有其他人引用了这个对象,再次使用这个对象时,则会导致无效指针报错. 于是有了引用计数的施放管理机制. 对于一个返回对象指针的方法.你若不看文档不看内部代码,你无法知道返回的这个指针需不需要你来释放.同样的对于将一个指针作为参数给一个方法后,你为犹豫我能不能施放这个指针.因为你不知道这个方法内部会不会将你的指针施放. 于是有了谁拥有谁施放的施放管理思想. 使用了上述管理机制和思想后,有些特定情况.比如方法内新建一个对象,然后返回对

OC 内存管理-02 autorelease 概念 以及用法

(1) @autoreleasepool { }//自动释放池代表,池子将要被销毁,对池子中所有的对象进行一次release操作 (2) 不管你这个对象时在@autoreleasepool 之内创建的还是在之外创建的,只要你在池子中调用了autorelease那么这个对象就会被放入到池子中 (3) 只有在自动释放池的作用域中调用对象的autorelease方法才能够正确的讲对象放入到池子中 (4) 如果在自动释放池中一个对象被多次释放[autorelease],那么会报野指针错误 -------

(转)Cocos 2d-X Lua 游戏添加苹果内购(二) OC和Lua交互代码详解

这是第二篇 Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程 这是前面的第一篇,详细的说明了怎样添加内购项目以及填写银行信息提交以及沙盒测试员的添加使用以及需要我们注意的东西,结果,被移除首页了!前面第一篇的内容是这篇的基础,前面那些不弄好,下面的商品信息你是请求不到的,这点需要大家特别注意...有需要前面提到的内容的孩子可以点击链接进去自己看看!! 这篇就具体的总结我们Lua和OC交互的内容以及内购具体的代码以及结果的测试说明: 内购部分OC的代码实现 先自己总结一下整个

标准C++中的string类的用法总结

标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中string类的使用.标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用

传智播客C/C++学员荣膺微软&Cocos 2d-x黑客松最佳创新奖

?? 6月30日,历时32小时的微软开放技术Cocos 2d-x 编程黑客松在北京望京微软大厦成功落下帷幕,这是微软开放技术首次联合Cocos 2d-x 在中国举办黑客松.此次活动共有包括传智播客C/C++学院的学员组成的闪游队,以及Hurry队.繁星队等在内的18个团队,70人参加了这场开发盛事,参赛团队中,不乏经验丰富的一线手游团队. "太空大战"项目演示 微软开放技术Cocos 2d-x 编程黑客松,是微软开放技术.Cocos2d-x 开源引擎联合举办的一场属于游戏编程开发者的聚

标准C++中的string类的用法总结【转】

转自(略改动):http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 更全面新颖的说明见:http://www.cplusplus.com/reference/string/string/  说明: 1.size_t 是个unsigned integral type.  2.文中 c字符数组 是指末尾不带'\0'的,注意与 c字符串 的区别 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC

cocos 2d-x游戏开发启示录(创世纪新篇)

cocos 2d-x可以在pc电脑window,mac操作系统上开发游戏,也可以在移动设备上开发游戏,比如Android,windowphone等上开发,集成开发环境是:visual studio,eclipse,游戏引擎包括:粒子场景,物理引擎,瓦片区域等等. cocos 2d-x支持三种脚本语言:如c++,JavaScript,lua,你至少要熟悉一门脚本语言. 下面以cocos 2d-x的lua脚本语言开发一款<黑人小心>的游戏.开发工具是cocos IDE 先看看效果图: 1.项目结构