当一个具有当前正在执行的函数的对象删除了所有的引用时会发生什么?AS3 - 执行代码的对象被删除时会发生什么?
我想要一个对话框类型的对象保存在我的程序的主类数组中,当对话框需要关闭时,我希望它在该关闭屏幕功能期间从数组中删除。我的问题是,假设对话框对象以其他方式有资格进行垃圾回收,那么它应该执行的代码会发生什么?
编辑澄清: 该数组是我的程序中的一个视觉元素层,其中对话框是一个。这个想法是关闭框的“OK”按钮(或其他)也会将它从同时显示的对象数组中移除。
当一个具有当前正在执行的函数的对象删除了所有的引用时会发生什么?AS3 - 执行代码的对象被删除时会发生什么?
我想要一个对话框类型的对象保存在我的程序的主类数组中,当对话框需要关闭时,我希望它在该关闭屏幕功能期间从数组中删除。我的问题是,假设对话框对象以其他方式有资格进行垃圾回收,那么它应该执行的代码会发生什么?
编辑澄清: 该数组是我的程序中的一个视觉元素层,其中对话框是一个。这个想法是关闭框的“OK”按钮(或其他)也会将它从同时显示的对象数组中移除。
如果在执行此对象的函数时删除了对象的所有引用,则该函数的其余部分将继续执行。完成后,该对象将在下一次垃圾回收循环中被删除。
如果有引用它的东西(在您的情况下调用其中的方法),您的对象将不符合垃圾回收的条件。
如果你想使你的对话盒资格从自身内部的垃圾收集,你需要补充的是从数组自行拔除交易,一种方法,它可能是内等
你的可能看起来像这样。
public function destroy():void
{
var ix:int = someArray.indexOf(this);
someArray.splice(ix, 1);
if(parent)
parent.removeChild(this);
// ...remove event listeners, etc
}