objective c和cocos2d分配了对象管理

时间:2013-03-21 13:41:26

标签: objective-c cocos2d-iphone

我想知道如何以最佳方式实现场景之间的过渡。

我的应用在ccscene1中有class1ccscene2class2

当我从scene1转换到scene2时,在scene1 init方法上有很多已分配的实例,我不想每次在场景中释放/分配。 我想知道如何实现scene1以便所有分配的实例(其中一些是服务器tcp连接)从2开始时不再分配,但仅在第一次启动时,并且在所有场景转换期间仍然保持有效。

一个解决方案: 设置一个全局标志,并从第一次启动时委托将其设置为1,而不是检查这是否是第一次在scene1的init方法上启动,并分配对象。

离开scene1后,这个对象在我回来时仍然有效? (假设我没有发布它们)?

主要目标是不将每个转换连接到服务器,并保持scene1的委托实例有效(对于我正在使用solution1的情况)

-(id) init
{
    if( (self=[super init]) )

    {
       socketInstance=[[SocketConnector alloc]init]; //only once !
       socketInstance.delegate=self;

     //later on i have transition :

    [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.7f scene:[AdressBookScene scene]]];

我正在寻求“专业”的方式来做到这一点。

1 个答案:

答案 0 :(得分:1)

您可以使用pushScene来运行scene2。这将完全保留scene1并将其保留在内存中。然后,您可以继续replaceScene场景2与其他场景,并最终呼叫popScene返回场景1。