lua调OC分享,在返回游戏的时候 OC回调LUA崩溃了

我lua调OC分享,在返回游戏的时候 OC回调LUA崩溃了,谁知道为啥,
CCLuaObjcBridge::pushLuaFunctionById(luaCallback);
CCLuaObjcBridge::getStack()->pushString(“1”);
CCLuaObjcBridge::getStack()->executeFunction(1);
CCLuaObjcBridge::releaseLuaFunctionById(luaCallback);
我加上这几句崩在另外1个地方,但是这几句下断点根本没走,我注释掉就不会崩,xcode也Clean了,电脑也重启了,依然这样,想不通啊

第一句里的luaCallback是怎么传进来的?

+(void)shareXinLangWeiBo:(NSDictionary *)dict
{
NSString *filePath = ;
int luaCallback = intValue];

 sendSinaMessage:(NSString *)filePath callback:^(BOOL rs, __weak NSString * msg) {
    if(rs == YES){
        CCLuaObjcBridge::pushLuaFunctionById(luaCallback);
        NSLog(@"小小姑娘");
        CCLuaObjcBridge::getStack()->pushString("1");
        CCLuaObjcBridge::getStack()->executeFunction(1);
        CCLuaObjcBridge::releaseLuaFunctionById(luaCallback);
    }else{
        CCLuaObjcBridge::pushLuaFunctionById(luaCallback);
        CCLuaObjcBridge::getStack()->pushString("0");
        CCLuaObjcBridge::getStack()->executeFunction(1);
        CCLuaObjcBridge::releaseLuaFunctionById(luaCallback);
    }
}];

}

lua 传过来的,这是lua调过来的方法

我解决了,原来OC里方法内部的方法不能使用外部方法的局部变量,java和我大lua都可以,坑死我了,我把luaCallback改成全局的就好使了,而且我在其他地方掉这个方法的时候,是崩在调这个方法的地方,不是崩在空的地方,:2:

先查一下CCLuaObjcBridge::pushLuaFunctionById的返回值,不为0才是正确的。
如果上面的是对的,在你的lua回调函数的开头加一句调试信息,看被回调了没有。

sendSinaMessage:(NSString *)filePath callback

我猜测这行代码是在一个单独的线程里做的回调。而 Lua 和 Cocos2dx 是运行在主线程里的。

所以跨线程调用 Lua,而 Lua 又操作 Cocos2dx,导致了 crash。

你可以在 Callback 里切换到主线程再调用 Lua,具体做法 google 一下吧。

嗯,线程问题我也怀疑到了,本来想先排除一下其他的因素的。但廖大这方面的经验更丰富,他指出这个可能性很大的话,应该是八九不离十了。