《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》读后感
2015-03-13 22:59
603 查看
读完了这篇博客,已经到了晚上11点了,在睡觉前做一下笔记。
1. cocos2d-x 的自动释放池(AutoReleasePool)是克隆IOS SDK的NSAutoreleasePool的,所以如果有坐过苹果开发的应该很熟悉这是什么东西。
2.他们有两点比较重要的不同:
第一点,cocos2d-x的AutoReleasePool是单例模式 ,开发者不需要创建他,仅仅需要专注于release/retain cocos2d::CCObject的对象。
第二点,cocos2d-x不能再非UI线程中调用(比如网络线程)。因为所有实例都会在Cocos的UI线程结束的时候就会被毁掉,如果你还去访问肯定是会错乱的(官方说会crash)
3.CCNode:create()函数里面有调用autoRelease(),所以用create创建的cocos2d-x对象都是被自动释放池管理的。所以我们不必关系它什么时候释放。
4.CCObject::release()是一个手动释放接口,下面两种情况才需要手动释放。
-------------------------------------------------------引用cocos2d-X官方文档《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》原话
"简而言之,这只有两种情况你需要调用release()方法
你new一个cocos2d::CCObject子类的对象,例如CCSprite,CCLayer等。(举个栗子:CCSprite
pSprite = new CCSprite(); 这样你就必须在你不再使用pSprite的时候进行pSprite->release()
)
你得到cocos2d::CCObject子类对象的指针,然后在你的代码中调用过retain方法。(举个栗子:CCArray
pArray
5.CCArray 一般都用
和release()
1. cocos2d-x 的自动释放池(AutoReleasePool)是克隆IOS SDK的NSAutoreleasePool的,所以如果有坐过苹果开发的应该很熟悉这是什么东西。
2.他们有两点比较重要的不同:
第一点,cocos2d-x的AutoReleasePool是单例模式 ,开发者不需要创建他,仅仅需要专注于release/retain cocos2d::CCObject的对象。
第二点,cocos2d-x不能再非UI线程中调用(比如网络线程)。因为所有实例都会在Cocos的UI线程结束的时候就会被毁掉,如果你还去访问肯定是会错乱的(官方说会crash)
3.CCNode:create()函数里面有调用autoRelease(),所以用create创建的cocos2d-x对象都是被自动释放池管理的。所以我们不必关系它什么时候释放。
4.CCObject::release()是一个手动释放接口,下面两种情况才需要手动释放。
-------------------------------------------------------引用cocos2d-X官方文档《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》原话
"简而言之,这只有两种情况你需要调用release()方法
你new一个cocos2d::CCObject子类的对象,例如CCSprite,CCLayer等。(举个栗子:CCSprite
pSprite = new CCSprite(); 这样你就必须在你不再使用pSprite的时候进行pSprite->release()
)
你得到cocos2d::CCObject子类对象的指针,然后在你的代码中调用过retain方法。(举个栗子:CCArray
pArray
= CCArray::create(); 他会在这个数组会在当前消息循环的最后被CCAutoreleasePool释放掉。如果里面装有我们要的东西,被无端端释放掉,当然我们不希望这么被坑,所以把它给pArray
->retain(); 然后再你不想要它的时候再调用pArray->release())"
5.CCArray 一般都用
CCArray::create();来创建················ 而且一般都会用retain()
和release()
相关文章推荐
- Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
- Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
- Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
- [Cocos2D-X官方文档]:Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
- (20)Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
- cocos2d-x-3.3rc2-004 cocos中的引用计数和自动释放池-ReleasePoolTest
- 【amazing cocos2d-x 3.0之十三】内存管理(1):引用计数(Reference Count)和自动释放池(AutoReleasePool)
- Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
- cocos2D-x 3.5 引擎解析之--引用计数(Ref),自动释放池(PoolManager),自动释放池管理器( AutoreleasePool)
- [cocos2d-x3.x学习笔记]引用计数 内存管理 Ref AutoreleasePoo PoolManager
- ios自动释放池相关,autoreleasepool;
- objective-C 的内存管理之-自动释放池(autorelease pool)
- 自动释放池的前世今生 ---- 深入解析 autoreleasepool
- Object-C内存管理---资源自动释放池(The Autorelease Pool)
- @autoreleasepool 创建自动释放连接池(内存管理)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- CCObject(m_uReference(被引用次数) m_uAutoReleaseCount(加入释放池次数) release retain acceptVisitor)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- ObjC(Objective-C)的内存管理之-自动释放池(autorelease pool)