当具有当前正在执行的功能的对象的所有引用都被删除时会发生什么?
我希望程序的主类在数组中保存一个对话框类型对象,当需要关闭对话框时,我希望在关闭屏幕功能期间将其从数组中删除。我的问题是,假设对话框对象在所有其他方面都有资格进行垃圾收集,它应该执行的代码会发生什么?
编辑以澄清: 数组是我程序中的一个可视元素层,其中对话框是一个。我们的想法是,关闭框的“确定”按钮(或其他)也将同时从正在显示的对象数组中删除它。
答案 0 :(得分:4)
如果存在引用它的内容(在您的情况下调用其中的方法),您的对象将无法进行垃圾收集。
如果你想使你的对话框有资格从内部进行垃圾收集,你需要添加一个方法来处理它可能在其中的数组的自我删除等。
你可能看起来像这样。
public function destroy():void
{
var ix:int = someArray.indexOf(this);
someArray.splice(ix, 1);
if(parent)
parent.removeChild(this);
// ...remove event listeners, etc
}
答案 1 :(得分:1)
如果在执行此对象的函数时已删除对该对象的所有引用,则该函数的其余部分将继续执行。完成后,该对象将在下一个垃圾收集周期中被删除。