unity里, lua 面向对象方式,成员对象有可能残留的问题。



TaskItemUI = {
name = nil,
content = nil,
schedule = nil,
schedulebg = nil,
targetObj = nil,
taskData = nil,
curAimId = nil,
equipIcon = nil,
selectImage = nil,
--任务状态改变tips
taskChangeTisp = "",
--进度特效播放中
effecting = false,
        test_table = {}
}


function TaskItemUI:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self;
return o

end

function TaskItemUI:checkAndAdd()
     if #self.test_table == 0 then
         table.insert(self.test_table,"dfafa")
     end
end



function TaskItemUI:OnDestroy()  --其他地方调释放

    self.test_table = {}

end



结果切换场景时, 对象释放后,test_table 按理应该清空了。  

但再次加载时, function TaskItemUI:checkAndAdd() 里判断长度居然不是 0,说明有残留。   

如果写个初始化函数 用self初始化一下,则没这个问题了。。。


什么原因不太清楚。。。(不过感觉是 setmetatable 方式, 这个self 其实存在了2份对象???,有时间再试验试验 打一下日志。)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值