Cocos2d-x 内存管理中retain() 、autoRelease()、release()
来源:互联网 发布:张学友来来回回知乎 编辑:程序博客网 时间:2024/05/16 05:06
首先要知道的:
在Cocos2d-x中,create()会设置为autorelease() ,如果用create()出来的对象没有人认领,即没有被addchild(),那么在每一帧刷新的时候,Cocos2d-x检测到这个对象没人要,就会把他释放,释放之后我们再去用这个对象,就可能会出现崩溃等问题。
那么一个没人要的对象怎么样保持原来的状态而不被自动释放呢?
用retain(),在create()之后,保持这个对象,就不会被自动释放了。
- testSprite = CCSprite::create("HelloWorld.png");
- testSprite->retain();
如果我不用create(),直接new一个出来呢?
那一定要先给这个对象加上 autorelease(),因为retain()、release()都是建立在autorelease()基础之上的。
- CCSprite* CCSprite::create(const char *pszFileName)
- {
- CCSprite *pobSprite = new CCSprite();
- if (pobSprite && pobSprite->initWithFile(pszFileName))
- {
- pobSprite->autorelease();
- return pobSprite;
- }
- CC_SAFE_DELETE(pobSprite);
- return NULL;
- }
注意:
只有在对象没有被人认领的时候才需要使用retain()。
0 0
- Cocos2d-x 内存管理中retain() 、autoRelease()、release()
- Cocos2d-x 内存管理中retain() 、autoRelease()、release()
- Cocos2d-x 内存管理中retain() 、autoRelease()、release()
- cocos2d-x的内存管理机制release(),retain(),autorelease()
- cocos2d-x内存管理retain和release
- cocos2d-x 内存管理 retain release
- cocos2d-x内存释放:release()还是autorelease()?
- 内存管理 release retain autorelease 的简单原则
- 内存管理: alloc, retain, release, autorelease, copy, assign
- cocos2d 内存管理,retain,release的疑问
- cocos2d 关于retain、release以及autorelease
- Cocos2dx-内存管理机制(autorelease、release、retain)
- 【内存管理】:autorelease和release
- IOS 学习之 —— 内存管理alloc,assign,retain,copy,release,autorelease
- 关于retain release autorelease
- Cocos2d-x内存管理支持多线程 修改autorelease
- cocos2d-x学习笔记内存管理之autorelease
- cocos2d-x学习笔记内存管理之autorelease
- source insight
- 【记录】Atmega系列单片机命名规则
- linux杂记(1)
- ceshi
- android数据存储与访问之使用SD卡
- Cocos2d-x 内存管理中retain() 、autoRelease()、release()
- IOS7改变状态栏文字的颜色以及导航栏背景颜色
- 火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题
- harris 算法的python实现
- 基于内容的图像检索技术(5)
- 黑马程序员---IT行业调查报告
- Ubuntu下Apache重启错误:Could not reliably determine
- s3c2410_gpio_setpin()系列函数
- JAVA中转义字符2009-08-12 17:40JAVA中转义字符: