cocos2d-x内存管理
2014-03-20 19:30
232 查看
cocos2d使用的是和objectc类似的内存管理方法
oc中自动释放内存的阶段是在一个loop,线程,事件结束之后
cocos2d自动释放内存是在一帧结束之后,其实游戏本身就是一个无线的循环,一帧也可以理解为一个loop,就是整个程序走了一遍
所以对于全局的变量,需要使用对其引用计数加一,比如一个全局的数组,使用 CCArray *array = CCArray::create();方法创建了一个自动释放对象,array作为一个全局变量,直接这样写,会再程序的下一帧中出现内存访问错误,原因就是这个自动释放对象被释放了,
但是假如是一个CCNode,作为一个CCSprite *sprite = CCSprite::create();这样创建的全局变量,我们直接给使用this->addChild(sprite)添加到场景中,这样就不必去手动retain这个sprite,此时的sprite的释放会随着layer的释放而释放,layer对sprite这个自动释放对象的下一个loop循环前已经addChild应用
在新建一个对象(new)放入垃圾回收池对象的引用计数是加一,在释放垃圾回收池的时候对象引用计数减一,这是和oc不一样的地方,oc在对象创建(alloc)的时候引用计数已经是一了,所以在加入垃圾回收池的时候引用计数不变,在垃圾回收的时候引用计数减一,因为在cocos2d中对象创建的时候是使用new
的,一个纯粹的c++对象
在使用以数组作为参数的方法时,方法往往会对该数组中的成员retain
一般使用CREATE_FUNC(类名)来声明和定义一个静态的create函数,函数中调用了init方法,并且声称了一个自动回收对象obj->autorelease();
oc中自动释放内存的阶段是在一个loop,线程,事件结束之后
cocos2d自动释放内存是在一帧结束之后,其实游戏本身就是一个无线的循环,一帧也可以理解为一个loop,就是整个程序走了一遍
所以对于全局的变量,需要使用对其引用计数加一,比如一个全局的数组,使用 CCArray *array = CCArray::create();方法创建了一个自动释放对象,array作为一个全局变量,直接这样写,会再程序的下一帧中出现内存访问错误,原因就是这个自动释放对象被释放了,
但是假如是一个CCNode,作为一个CCSprite *sprite = CCSprite::create();这样创建的全局变量,我们直接给使用this->addChild(sprite)添加到场景中,这样就不必去手动retain这个sprite,此时的sprite的释放会随着layer的释放而释放,layer对sprite这个自动释放对象的下一个loop循环前已经addChild应用
在新建一个对象(new)放入垃圾回收池对象的引用计数是加一,在释放垃圾回收池的时候对象引用计数减一,这是和oc不一样的地方,oc在对象创建(alloc)的时候引用计数已经是一了,所以在加入垃圾回收池的时候引用计数不变,在垃圾回收的时候引用计数减一,因为在cocos2d中对象创建的时候是使用new
的,一个纯粹的c++对象
在使用以数组作为参数的方法时,方法往往会对该数组中的成员retain
一般使用CREATE_FUNC(类名)来声明和定义一个静态的create函数,函数中调用了init方法,并且声称了一个自动回收对象obj->autorelease();
相关文章推荐
- cocos2dx之lua派生类和方法重新
- Cocos2DX坐标
- Cocos2dx 3.0rc之单点触屏响应 和 多点触屏响应
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- Cocos2d-JS v3.0 alpha
- fedora 下编译cocos2dx-2.2.2
- 自动化编译错误 cocos2dx 3.0beta2 android
- Cocos2d-x学习笔记(二) 永远的HelloWorld
- cocos2d-x 3.0 看到CMakeLists.txt 文件~他到底是干嘛的?
- cocos2d 定时器
- Cocos2d-x游戏中的场景滚动
- cocos2d-x中请求两个矩形的交集
- cocos2d-x 用create_project.py创建项目出现SyntaxError: invalid syntax解决方法
- 【cocos2dx-3.0beta-制作flappybird】终于要来正戏了—游戏层的设计和小鸟的加入
- cocos2d menu菜单类
- Cocos2dx交叉编译后在eclipse编译不通过的问题解决
- quickCocos2dx 中添加自定义类,导出lua
- cocos2dx中的CCAction
- Cocos2dx基础概念
- cocos2dx如何添加popScene的场景动画