《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》读后感

《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》读后感,第1张

概述读完了这篇博客,已经到了晚上11点了,在睡觉前做一下笔记。 1. cocos2d-x 的自动释放池(AutoReleasePool)是克隆IOS SDK的NSAutoreleasePool的,所以如果有坐过苹果开发的应该很熟悉这是什么东西。 2.他们有两点比较重要的不同:     第一点,cocos2d-x的AutoReleasePool是单例模式 ,开发者不需要创建他,仅仅需要专注于releas

读完了这篇博客,已经到了晚上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 = CCArray::create(); 他会在这个数组会在当前消息循环的最后被CCautoreleasePool释放掉。如果里面装有我们要的东西,被无端端释放掉,当然我们不希望这么被坑,所以把它给pArray->retain(); 然后再你不想要它的时候再调用pArray->release())"




5.CCArray 一般都用CCArray::create();来创建················ 而且一般都会用retain() 和release()

总结

以上是内存溢出为你收集整理的《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》读后感全部内容,希望文章能够帮你解决《Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)》读后感所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存