接微信登录,lua调用OC,OC类的成员变量无法保存数据。

大家好,实在顶不住了。来发帖,
开发工具:cocos2d-x 3.17
语言:LUA
最近在接IOS微信登录SDK,我这边的流程:
1.LUA调用OC,OC收到微信相关数据回调到LUA,主要通过LuaBridage的形式。
LUA我写了2个接口,代码如下:
一、微信SDK初始化(APP启动触发)


二、微信登录(用户点微信登录按钮触发)

OC这边代码结构:
一、APPController.mm
引用了一个SDK单例和微信管理器单例初始化微信的实例;其中PluginHelp是管理所有的SDK, PluginWetChatManager是管理微信SDK

二、 在cocos2d-x/cocos/platform 加入了通用的Plugin.mm(让所有的SDK插件继承他),加入PluginHelp.mm(管理加载所有的插件,并且接受appcontrol的事件)。
plugin.h


plugin.mm

pluginHelper.h

pluginHelper.mm

三、微信SDK部分:
一、架构:
image
pluginWeChat继承plugin类,内部为动态oc方法。
pluginWechatManager,内部为静态方法单例,提供接口给lua那边调用,lua调用oc后,内部再调用pluginWeChat的方法实例相关接口。
二、贴下代码:
pluginwechat.h


pluginwechat.mm


pluginwechatmanager.h

pluginwechatmanager.mm


四、问题:
我在游戏的appcontrol.mm里通过微信单例调用initWeChatPlugin,实例化了PluginWeChat,LUA调用PluginWechatManager的initPlugin方法,该方法通过刚创建的实例调用内部的initPlugin(为动态方法),并且传递了相关从lua发过来的参数。
第一次调用成功,self.appid ,appsecret成功被赋值,打印是有的。
并且微信初始化成功,告诉了lua那边:

第二次用户点击登录login,lua调用oc login方法

报错截图:不调试会闪退。


这个时候就报错了。self.appid有,但是appsecret,是空的。为啥呢,不都在第一次的时候login初始化在内存了吗?
我朋友说lua调用oc每次都是新的类,但是我看了这个实例化的pluginwechat内存地址,2次都是一样的。

第二个疑点,我尝试在login的时候也丢了参数过来,


这个时候可以拿到的,但是当从微信respon回来的时候,他们居然又不见了。


到打印这里,再次空了。

挖槽!无情!

已经解决了。oc变量定义的时候需要加个strong