0

如何覆盖 luabind 类__finalize方法?

尝试以这种方式执行此操作:

class A
function A:__init()
end
function A:__finalize()
end

local original_finalize_function = A.__finalize
A.__finalize = function(...)
  -- some custom logic
  if original_finalize_function then
   original_finalize_function(unpack(arg))
  end
end

local a = A    
a = nil

collectgarbage('collect')

但是 lua 仍然只调用原始终结器。但是它确实适用于 __init 方法:

local original_init_function = A.__init
A.__init = function(...)
 if original_init_function then
  original_init_function(unpack(arg))
 end
end

我还尝试覆盖 getmetatable(A).__finilize。也无济于事。

我怎样才能覆盖它?提前致谢。

4

1 回答 1

1

只是一个猜测,但最终确定只是去__gc吗?

否则尝试迭代元表以尝试找出 luabind 正在做什么:for k , v in getmetatable(myobject) do print(k,v) end

于 2010-06-19T20:30:20.283 回答