再谈quick lua 继承

之前已经写过一篇吐槽quick cocos2dx lua的继承问题了,今天发现了更严重的问题
quick的继承有严重缺陷,目前已知的问题是在skynet的时钟回调以后。
base基类中的成员变量会全部清空。
这种情况发生在以下场景

local instance
skynet.timeout(100, function()
    instance:onGameTimer()
end)

function class:onGameTimer()
    self:doSometing()
end

注意,若这个doSomething是你基类中的函数,那就千万要小心了,因为它可能无法正常工作,基类中的成员变量全都是初始值。
能想到的情况应该是这个栈被破坏掉了,导致它只能找到自己的super,但super里面的内容却是初始值。
所以如果要使用继承,那么最好带上参数,所有的参数不都放在最顶层。不依赖于基类中成员变量。
这个问题继续跟进。看到底是什么原因造成的,在quick客户端里面也可能出现这种情况。十分让人头疼!

https://www.processon.com/i/568c6ea4e4b0e51d149a085f
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值