-
Creator 版本:2.3.3
-
目标平台: iOS
-
详细报错信息,包含调用堆栈:
-
重现方式:delete AppDelegate 单例后重新创建
-
出现概率:100%
我app接入cocos的情景是: 有些时候需要展示互动动画给用户使用, 用完之后希望能把cocos用的内存释放
之前用的是2.1.1, 由于没法安全释放, 也对源码不熟悉, 就用了一个空的main.js在不需要的时候替换项目主路径, 这个方法基本上是好的, 但后面负责cocos开发的人想要升级到新版本, 于是升级到2.3.3后, 原本用空main.js的方法不管用了, 就用了一个尽可能空的项目替换, 但是内存降不下来, 于是我开始折腾安全删除Appdelegate的方法:
最后简单修改了/scripting/js-bindings/manual/jsb_global.cpp
void jsb_init_file_operation_delegate() {
static se::ScriptEngine::FileOperationDelegate delegate; // 删除
auto delegate = se::ScriptEngine::getInstance()->getFileOperationDelegate(); // 新增
…
}
就能正常删除和把内存降下来了, 但是重新创建Appdelegate后, 会黑屏, 但点击屏幕什么的都是有反应的, 同时控制台不停打印:
E/renderer (425): glDrawElements(static_cast(_nextState->primitiveType), count, static_cast(nextIndexBuffer->getFormat()), (GLvoid *)(base * nextIndexBuffer->getBytesPerIndex())); GL error 0x502: GL_INVALID_OPERATION:draw
然后crash在同一个地方
这部分开始我不熟悉了, 请问有办法解决吗