欢迎转载: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游戏开发(七)对象释放时机所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)