cocos2d-x游戏开发(七)对象释放时机

cocos2d-x游戏开发(七)对象释放时机,第1张

概述欢迎转载:http://blog.csdn.net/fylz1125/article/details/8521272 这篇写写自动对象释放时机。 一个对象调用autorelease()函数后就被加入自动释放池,那么它什么时候被释放呢? 我从前面说过的游戏主循环开始跟进: [cpp]  view plain copy print ? int CCApplication::run()   {    

欢迎转载:http://blog.csdn.net/fylz1125/article/details/8521272


这篇写写自动对象的释放时机。

一个对象调用autorelease()函数后就被加入自动释放池,那么它什么时候被释放呢?

我从前面说过的游戏主循环开始跟进:

[cpp] view plain copy print ? intCCApplication::run() { if(applicationDIDFinishLaunching()) [[CCDirectorCallersharedDirectorCaller]startMainLoop];//主循环开始 } return0; }
继续跟进startMainLoop函数

?@H_502_91@ -(voID)startMainLoop //CCDirector::setAnimationInterval()iscalled,weshouldinvalIDateitfirst [displaylinkinvalIDate]; displaylink=nil; //displaylink是CAdisplaylink对象,target是自己,回调是coCaller displaylink=[NSClassFromString(@"CAdisplaylink")displaylinkWithTarget:selfselector:@selector(doCaller:)];//看这个doCaller回调 [displaylinksetFrameInterval:self.interval];//设置帧率 [displaylinkaddToRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];//添加到循环并启动 }
看doCaller回调,

?@H_502_91@ voIDCCdisplaylinkDirector::mainLoop(voID) if(m_bPurgeDirecotorInNextLoop) m_bPurgeDirecotorInNextLoop=false; purgeDirector(); } elseif(!m_bInvalID) { drawScene();//drawthescene //releasetheobjects CCPoolManager::sharedPoolManager()->pop(); } 好,一个循环完了。最后看到CCPoolManager::sharedPoolManager()->pop();就是用来释放对象的。

这里就释放对象了,有兴趣的同学可以自己跟进去看看到底是怎么释放的。

总结

以上是内存溢出为你收集整理的cocos2d-x游戏开发(七)对象释放时机全部内容,希望文章能够帮你解决cocos2d-x游戏开发(七)对象释放时机所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存