2

我有一个内存泄漏问题。我正在创建一个包装在 MATLAB 类中的 jLabel 对象。我正在使用所有集合/获取的句柄来尝试防止问题和内存泄漏。

我正在使用此代码为 jLabel 设置 MouseExitedCallback。这是类的一个方法:

function SetMouseExitedCallback (obj, exitcallback)
    set (obj.hLabel, 'MouseExitedCallback', exitcallback)
end

这个方法是从另一个实际上包含 MouseExitedCallback 代码的类调用的。在那个类中,它是这样调用的:

obj.tooltip.SetMouseExitedCallback (@(src, event)obj.MouseExited);

我遇到的问题是,如果我添加最后一行,如果我尝试编辑项目中的文件,它会告诉我 jLabel 类仍在内存中。我能做些什么来防止这种情况发生?

4

1 回答 1

0

首先我的想法是

obj.tooltip.SetMouseExitedCallback ('');

它在删除(析构函数)方法中。那没有用,因为从未调用过析构函数。实际上,也从未为另一个类调用析构函数,即定义了实际 MouseExited() 回调的类。

最后起作用的是调用:

obj.tooltip.SetMouseExitedCallback ('');

在隐藏工具提示的方法中。它与 Mouse Exited() 方法在同一个类中定义。然后在应用程序关闭后,VM 调用析构函数并销毁对象。

于 2013-03-01T08:00:55.647 回答