关闭游戏后再次启动游戏崩溃

在iOS下,cocos2d直接打包出来的APP就是一整个游戏了,没有原生的界面,我做了一下改动,我把启动过程放到另外一个controller里面,这个controller里面写个按钮,按钮事件里面启动游戏。而且将游戏的js代码和图片放到document目录下,直接从document里面加载,不再从bundle里面去获取了。按钮事件代码如下:

-(void)didClickGame2Btn:(id)sender
{
//加载游戏
cocos2d::Application *app = cocos2d::Application::getInstance();

// Initialize the GLView attributes
app->initGLContextAttrs();
cocos2d::GLViewImpl::convertAttrs();

// Use RootViewController to manage CCEAGLView
RootViewController *rootViewController = [[RootViewController alloc] init];
rootViewController.wantsFullScreenLayout = YES;
[self.navigationController presentViewController:rootViewController animated:YES completion:^{
    // IMPORTANT: Setting the GLView should be done after creating the RootViewController
    cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void *)rootViewController.view);
    cocos2d::Director::getInstance()->setOpenGLView(glview);
    
    //修改资源加载目录
    NSString *documentDir = [SEGetDirectories dirDoc];
    NSString *wPath = [NSString stringWithFormat:@"%@/GameData/Game2",documentDir];
    NSLog(@"document------:%@",documentDir);
    
    std::vector<std::string> searchPathList;
    searchPathList.push_back([wPath UTF8String]);
    cocos2d::FileUtils::getInstance()->setSearchPaths(searchPathList);
    
    //run the cocos2d-x game scene
    app->run();
}];
[[UIApplication sharedApplication] setStatusBarHidden:true];

}

然后游戏里面添加一个menu,menu事件里面执行退出游戏的逻辑,代码如下:
gameEndCallBack:function(sender){
cc.log(“director end…”);
cc.director.end();
//cc.log(“game end…”);
//cc.game.end();
var ojb = jsb.reflection.callStaticMethod(“ViewControllerUtils”, “dismissCurrentVC”);
}

里面的jsb.reflection.callStaticMethod(“ViewControllerUtils”, “dismissCurrentVC”);是利用反射机制,关闭弹出的窗体,代码如下:
+(void)dismissCurrentVC
{
UIViewController *currentVC = [ViewControllerUtils getCurrentVC]; //这里获取最顶层的viewcontroller
[currentVC dismissViewControllerAnimated:YES completion:^{
NSLog(@“xxx”);
}];
}

整个过程在第一次是没问题的,可以正常启动游戏,然后退出回到主页面,但当再次进入的时候,程序崩溃了,在JS_binding的ScriptingCore::runScript方法里面的
evaluatedOK = JS_ExecuteScript(cx, global, *script, &rval);
这一行,报了exc_bad_access错误。

我猜测会不会是资源没释放的原因,于是尝试跑ScriptingCore里面的cleanup办法,但是都不凑效,依然会崩溃。

由于对于cocos底层机制了解得不够深入,特此前来求教各位大神,看看这个是怎么回事~

这个后来怎么解决的啊,期待ing

http://blog.csdn.net/mu_cjgm/article/details/52372089,参照这篇文章,可以解决,虽然是安卓的,不过对ios也通用

嗯 iOS下我解决了,也是改了些源码,总之就是要把东西释放掉。
安卓这个链接讲到的东西估计我们也会用到,先收藏,谢谢~

请问你是怎么解决的,我也遇到类似问题,退出游戏重进黑屏,方便分享下解决方案吗。谢谢