我正在使用Lua和wxLua来构建GUI。通常当我退出应用程序时,我没有从Lua输出。
但是我刚刚将一个函数添加到wxListView(称为myListView),就像这样
myListView.foo = bar
function bar (self)
-- do something with the wxListView
end
无论我是否曾调用foo(),当我退出应用程序时,我从Lua获得以下输出:
~wxLuaObject -2 1 0
如果我注释掉作业,退出应用程序时我没有输出。如果相反,我稍后会在代码中忽略foo:
myListView.foo = nil
执行该行时会立即获得相同的输出,然后在程序退出时再次获得相同的输出。
输出是什么意思?我究竟做错了什么?我该如何解决?
谢谢!
答案 0 :(得分:1)
这似乎是对wxLuaObject被销毁的情况的内部诊断,并且m_reference == LUA_NOREF
(在你的情况下为-2)并且Lua状态对象不处于关闭状态(在你的情况下报告为0) :
// this is from modules/wxlua/src/wxlbind.cpp (starts on line 83 in my version)
wxLuaObject::~wxLuaObject()
{
if ((m_reference != LUA_NOREF) && m_wxlState->Ok() && !m_wxlState->IsClosing())
{
m_wxlState->wxluaR_Unref(m_reference, &wxlua_lreg_refs_key);
m_reference = LUA_NOREF;
}
//else if (!m_wxlState->IsClosing())
// wxPrintf(wxT("~wxLuaObject %d %d %d\n"), (int)m_reference, (int)m_wxlState->Ok(), (int)m_wxlState->IsClosing());
我在我的wxlua代码(2.8.12.1)中注释了此消息,但您可能需要检查您的版本并根据需要进行升级。这是~wxLuaObject
消息在源代码中出现的唯一位置。它似乎是无害的,但它可能潜在地指出你正在做的其他问题。