cocos2d-x学习笔记内存管理之autorelease
2013-07-22 13:14
225 查看
转自:http://hi.baidu.com/357802636/item/7bb3e71a7838efd6be904200
刚开始接触cocos2d-x的时候最让我头疼的就是内存管理,经常写着写着代码心里就开始没谱了,总是在问自己:“这样子会不会有内存泄漏、这个对象能得到释放吗”,类似的情况已经不是一次两次出现了。现在终于对这些问题有了更清晰的认识,就autorelease()做一下总结。先从CCObject的autorelease方法入手,代码如下:
retain,那么它将会被释放掉。
在对象的使用上,为保证对象能被正确的释放,需要时刻知道此对象的引用计数为多少,但是很多时候能做到这点很难,除非对所有的接口都很了解,知道其中是否对当前对象做了retain操作或者release操作,如果做不到这点,可以按照cocos2d-x框架中这样的原则去做
1、作为参数传进来的对象,如果你要长期的使用或者管理它,请 retain,不用的时候记得release
2、作为参数传进来的对象,他不是你创建或者retain的,如果你不确定他从哪里来,外面是否知道你会release掉他,请别随便调用release
3、如果你撇开自动释放池,new了一个对象而不调用autorelease,在不使用的时候直接将对象delete掉,这样的做法是很不安全的,除非你创建的对象真的只有你在使用而没有被其他对象retain。但并非代表你不能自己new和delete管理对象,因时而异。
4、创建一个新的对象,调用了对象的autorelease方法,如果想长期的使用他,请使用retain方法(包括addChild到自身,addObject到某个
CCArray中),清除时使用release方法(removeChild、CCArray的removeObject等)
相关文章推荐
- cocos2d-x学习笔记内存管理之autorelease
- cocos2d-x学习笔记内存管理之autorelease
- cocos2d-x学习笔记内存管理之autorelease
- 黑马程序员--IOS_学习笔记_内存管理_@autorelease
- Cocos2d-x学习笔记(十四)CCAutoreleasePool具体解释
- Objective-C基础学习笔记(八)-内存管理-autorelease使用-property创建对象的内存管理-循环引用的内管管理
- OC学习笔记六 内存管理(autorelease)
- Cocos2d-x内存管理之autorelease,addChild和removeFromParent
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十二课:Cocos2D-X内存管理1-3
- cocos2d-x 3.6版本学习笔记-内存管理之Node对象
- cocos2d-x学习笔记18:内存管理01:概述
- Objective-C学习笔记1--windows+GNUstep环境下不能使用@autoreleasepool?
- cocos2d-x学习笔记18:内存管理01:概述
- iOS学习笔记72-Objective-C Autorelease Pool 的实现原理
- OC学习笔记之autorelease
- 黑马程序员----Objective-C学习笔记之autorelease基本使用
- cocos2d-x学习笔记——内存管理
- Cocos2d-x学习笔记(十一)-------->Cocos2d-x的内存管理
- cocos2d-x学习笔记18:内存管理01:概述
- cocos2d-x学习笔记18:内存管理01:概述