cocos2d-x 内存管理

cocos2d-x 内存管理,第1张

概述调用了autorelease的对象,将会在自动回收池释放的时候被释放一次。 因为这个 *** 作发生在mainLoop drawScene()后,这时候游戏中所有的逻辑已经执行完毕,正是释放无效资源的最佳时机。   所以一个对象被create后, 将被放进pool中,其ref 数为1, 当游戏整个逻辑跑完,如果没有增加retain *** 作,注意retain有很多地方可以调用,比如addChild 等,那么po

调用了autorelease的对象,将会在自动回收池释放的时候被释放一次。 因为这个 *** 作发生在mainLoop drawScene()后,这时候游戏中所有的逻辑已经执行完毕,正是释放无效资源的最佳时机。

所以一个对象被create后, 将被放进pool中,其ref 数为1, 当游戏整个逻辑跑完,如果没有增加retain *** 作,注意retain有很多地方可以调用,比如addChild 等,那么pop *** 作,将会使得它的ref 数变为0, 从而触发delete 销毁 *** 作。
由于这个原因,autorelease 可以保证对象在当前帧结束前不会被销毁。 而release *** 作则是立即执行的。
CCObject* factoryMethod()
{
CCObject* ret = new CCObject();
// 在这里对ret对象进行必要的初始化 *** 作
return ret;
}
这里的原因在于对ret的引用在函数返回前已经结束,所以必须添加ret->autorelease(); 将引用保存在一个pool中,这样可以保证在自动回收池释放前不会被真正释放掉的。 因为池中保存了一个有效的引用。
总结

以上是内存溢出为你收集整理的cocos2d-x 内存管理全部内容,希望文章能够帮你解决cocos2d-x 内存管理所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1005233.html

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

发表评论

登录后才能评论

评论列表(0条)

保存