我有一个内存泄漏问题。 我正在创建一个包含在MATLAB类中的jLabel对象。 我正在使用所有set / gets的句柄来尝试防止问题和内存泄漏。
我正在使用此代码为jLabel设置MouseExitedCallback。这是班级的一种方法:
function SetMouseExitedCallback (obj, exitcallback)
set (obj.hLabel, 'MouseExitedCallback', exitcallback)
end
从另一个实际包含MouseExitedCallback代码的类调用此方法。 在那个类中,它被称为:
obj.tooltip.SetMouseExitedCallback (@(src, event)obj.MouseExited);
我得到的问题是如果我添加最后一行,如果我尝试编辑项目中的文件,它会告诉我jLabel类仍然在内存中。 我该怎么做才能防止这种情况发生?
答案 0 :(得分:0)
首先我的想法是
obj.tooltip.SetMouseExitedCallback ('');
它在delete(析构函数)方法中。这没用,因为析构函数从未被调用过。实际上析构函数也从未被调用过另一个类,即定义了实际的MouseExited()回调的类。
最后有效的是致电:
obj.tooltip.SetMouseExitedCallback ('');
在隐藏工具提示的方法中。它与Mouse Exited()方法在同一个类中定义。 然后在应用程序关闭后,VM调用析构函数并销毁该对象。