关于jsb.reflection无法返回字符串的问题。

版本:Cocos2d-JS v3.0 Final
系统:IOS

jsb.relection无法返回字符串,永远是空。

解决办法如下:
找到JavaScriptObjCBridge.mm文件,修改以下两处代码

1,CallInfo析构函数增加对资源的释放:

JavaScriptObjCBridge::CallInfo::~CallInfo(void)
{
if(m_returnType == TypeString && m_ret.stringValue)
{
delete m_ret.stringValue;
}
}

2,找到pushValue函数
把该函数倒数第二个else if 内容改为
const char *abc = cStringUsingEncoding:NSUTF8StringEncoding];
m_ret.stringValue = new string(abc);

m_returnType = TypeString;

问题产生原因很简单,局部变量指针传递给外部,出了作用域,内存就被释放了。

抱歉,这个bug在3.2 RC0中被修复了

修复PR:https://github.com/cocos2d/cocos2d-js/pull/1188/files

用旧版本同样遇到问题的同学请参考