之前已经写过一篇吐槽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
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐