在obj中用Luaoc调luafunction出错。

具体代码如下:

    cocos2d::CCLuaValueDict item;
    item"success"] = cocos2d::CCLuaValue::booleanValue(success);
    item"data"] = cocos2d::CCLuaValue::stringValue();
    cocos2d::CCLuaObjcBridge::getStack()->pushCCLuaValueDict(item);
    cocos2d::CCLuaObjcBridge::getStack()->executeFunction(2);
    cocos2d::CCLuaObjcBridge::releaseLuaFunctionById(functionId);
```



此时,我的functionId ==1,执行后报错 “value at stack -3] is not function”;
问题1:
executeFunction的参数传的是item参数的个数(2),还是functionId?

问题2:
跟踪executeFunction,会看到下面这句:
    int functionIndex = -(numArgs + 1);
    if (!lua_isfunction(L, functionIndex))
    {
        CCLOG("value at stack %d] is not function", functionIndex);
        lua_pop(L, numArgs + 1); // remove function and arguments
        return 0;
    }
```


没理解是怎么回事。


补充一下:我是在block里面调用luafunction的,我尝试在block外面调用luafunction,executeFunction(functionId),调用成功,但是调用下一个functionId(=2)的时候出错。

请大伙帮忙解答,谢谢

请阅读
http://dualface.github.io/blog/2013/01/27/call-objectivec-from-lua/

我就是按照这个教程来的啊…

好的,搞定了,按照下面写就可以了,注意顺序是:
1、先retainfunction
2、pushFucntion
3、pushValue
4、excuteFucntion(1); //注意里面传numArgs,本例只push了一个Value,所以传1。
5、releaseFunction

CCLuaObjcBridge::retainLuaFunctionById(callback);


CCLuaValueDict item;
item"success"] = CCLuaValue::booleanValue(success);
item"data"] = CCLuaValue::stringValue();
CCLuaObjcBridge::pushLuaFunctionById(callback);
CCLuaObjcBridge::getStack()->pushCCLuaValueDict(item);
CCLuaObjcBridge::getStack()->executeFunction(1);
CCLuaObjcBridge::releaseLuaFunctionById(functionId);

— Begin quote from ____

引用第3楼leonlh于2014-05-29 10:43发表的 :
好的,搞定了,按照下面写就可以了,注意顺序是:
1、先retainfunction
2、pushFucntion
3、pushValue
4、excuteFucntion(1); //注意里面传numArgs,本例只push了一个Value,所以传1。
http://www.cocoachina.com/bbs/job.php?action=topost&tid=203747&pid=963385

— End quote

楼主好样的,不忘给出解决办法

— Begin quote from ____

引用第4楼童年于2014-05-29 11:54发表的 :

楼主好样的,不忘给出解决办法 http://www.cocoachina.com/bbs/job.php?action=topost&tid=203747&pid=963493

— End quote

Andy你竟然能上这论坛来,我每次来都是chrome开个隐身模式过来的,我可不像清我的session。
另外你应该知道我是谁吧。。。

楼主,我想请教一下Lua端是怎么读取Item的,我之看到了教程,没找到与教程匹配的源码

http://dualface.github.io/blog/2013/01/27/call-objectivec-from-lua/
这个教程写得不清楚。不过多试几次就成功了。麻烦点就是oc调lua