【德州扑克开发记录】在lua层sdk接口类继承自cocos2d类的危害

之前给外包接微信、fb、gp、appstore等,lua调用的类是这么定义的:

local Platform_Appstore = class("Platform_Appstore",function()
  return display.newLayer()
end)

咋看一下是个很普通的用法,但却制造了2个非常难以调试的bug,给后来的工作带来了莫大的痛苦。

 

BUG1:ios真机调试,appstore支付后,乱点界面一通后,闪退,xcode报错卡在oc文件的touchbegan中。

这个bug的难点在于无法定位lua层出错的语句,只能根据oc报错确定为touch相关的报错。

原因:由于Platform_Appstore类是集成自CCObject的基类,付款的时候创建了一次,大概是由于(没有细查原因)付费完成后在某个时间点被自动回收了,造成touch混乱出错。

 

BUG2:外包接完sdk后,做了个Platform_Test类测试

     self:createButton("googleplay_pay",cc.p(display.cx, display.cy - 100), function()
local gp = Platform_GooglePlay.new()
gp:pay()
end)
-- local gp = Platform_GooglePlay.new()
-- gp:createMenu_Googleplay(self)
-- gp:addTo(self)

下面被注释的为外包原来写的测试,改为上面的代码应该是一样的,但却无法调用gp了。
原因:同样是由于Platform_GooglePlay集成自CCLayer,在创建了之后没有retain,于是在下一帧便被自动回收了。

解决:改成直接创建class。
local Platform_Appstore = class("Platform_Appstore")
 

转载于:https://www.cnblogs.com/alphaGo/p/5377700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值