• ActionScript中的弱引用的使用


    弱引用从原则上来讲,是为了防止无意识的对象保留引起的内存泄露

    在ActionScript中的强弱引用往往是指在使用Dictionary类时和侦听器和事件中。

    一、Dictionary类

    Dictionary 类是用于创建属性的动态集合,该集合使用全等运算符 (===) 进行键比较。将对象用作键时,会使用对象的标识来查找对象,而不是使用在对象上调用 toString() 所返回的值。

    在Dictionary类的构造方法中有:

    public fuction Dictionary(weakKeys:Boolean = false){
    
    }    
    

    其中参数weakKeys:Boolean(default = false)指的是创建的该对象是否为弱引用类型,如果是则键符合垃圾回收的条件,并且在回收对象时会被从表中删除。如果不是则垃圾回收机制不会自行处理,则通过人为的方式处理!

    二、侦听器中的弱引用

    在使用ActionScript2开发时经常用完事件后就忘了移除侦听器对象,这将消耗系统的资源,也是我们最常见的诡异的bug种类之一。

    若侦听器设置为弱引用,而且在程序运行时只剩下了这个弱引用指向侦听器,这是垃圾回收机器可以不理它,直接就把侦听器回收了。

    三、事件中的弱引用

    我在设置添加侦听器时如下:

    this.addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):

    其中第五个参数useWeakReference即可以指定对侦听器的引用是强引用还是弱引用,强引用可防止侦听器被当作垃圾回收,弱引用没有此作用(也就是说垃圾回收机制会处理弱引用的对象)。如果所使用的侦听器在其他地方没有被引用,只剩下addEventListener()为他注册的弱引用时,该侦听器就会被当作垃圾,在下一次垃圾回收机制工作周其中回收掉,从而节省资源!

    *注意提示

    由于垃圾回收机制工作不是即时的,有周期性的延迟,所以我们一般不应当依赖于弱引用属性来移除侦听器,在销毁之前这个侦听器还会继续存在、继续作用。所以,一般情况下当我们使用完侦听器后,就直接调用removeEventListener()方法移除侦听器!

  • 相关阅读:
    hadoop mysql install (5)
    hadoop redis install (4)
    hadoop mongodb install(3)
    hadoop hbase install (2)
    水平交错效果显示图像
    实现推拉效果显示图片
    百叶窗效果显示图像
    以椭圆形显示图像
    图像的放大与缩小
    鼠标拖拽图像
  • 原文地址:https://www.cnblogs.com/xhz-blog/p/3407664.html
Copyright © 2020-2023  润新知