修改控件后Lua的神秘输出

时间:2012-09-27 20:05:17

标签: lua wxwidgets

我正在使用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

执行该行时会立即获得相同的输出,然后在程序退出时再次获得相同的输出。

输出是什么意思?我究竟做错了什么?我该如何解决?

谢谢!

1 个答案:

答案 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消息在源代码中出现的唯一位置。它似乎是无害的,但它可能潜在地指出你正在做的其他问题。