加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何在Actionscript 3中删除/ gc一个对象?

发布时间:2020-12-15 19:49:49 所属栏目:百科 来源:网络整理
导读:我想从里面自己删除/强制垃圾收集在类实例上。显然,这个= null并删除这个不行。我可以做任何事情,还是吠叫错树?我基本上正在寻找一种析构函数。 我有一个类实例尝试加载一个XML文件,如果没有找到该文件,我想破坏实例,最好从内部本身。然后,根据子实例
我想从里面自己删除/强制垃圾收集在类实例上。显然,这个= null并删除这个不行。我可以做任何事情,还是吠叫错树?我基本上正在寻找一种析构函数。

我有一个类实例尝试加载一个XML文件,如果没有找到该文件,我想破坏实例,最好从内部本身。然后,根据子实例是否为空,在父类中执行一些操作。

我曾考虑过向父母投掷一个活动,并从那里删除孩子,但是我宁愿只有在没有其他方式的时候这样做。

解决方法

您不应该尝试从其自身中删除对象 – 这是一个不好的做法,而在AS3中,您无法确定。

对象可以被删除(即垃圾回收),只有当该对象没有引用时。由于引用始终通过值传递,对象一般不知道哪个引用存在,所以不能从其自身中删除对象。您唯一有用的事情是创建一个方法来清理实例使用的所有资源。这种方法将作为析构函数,但是您必须手动调用它。不要忘记事件侦听器也将防止垃圾回收,除非你删除它们。

删除属性并将其设置为null之间也有区别。有效删除将从动态类的实例中删除属性。而将属性值设置为null将不会删除属性,而是擦除存储在那里的任何引用。因此,这两个操作都会破坏存储在某些属性中的引用。请注意,您不能删除对象,只能删除属性。

有些黑客可以在Flash Player 9和更早版本中启动垃圾收集。不过最近System.gc()调用可用,这也是一样的。请注意,您不能真正依靠GC实际被调用的事实。这取决于Flash播放器。

回到你的问题:抛出事件并通知父母出现问题实际上是一个好主意。你应该坚持下去此外,如果父母会以这种方式知道这样的事件,而不是当它会发现某些属性被神奇地归零时,这是更好的。

P.S .: Reading Grant Skinner articles on memory在Flash Player中其实是个好主意。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读