如果我做一個定時器,如爲什麼不是這個垃圾收集
var timer:Timer = new Timer(50, 0);
timer.addEventListener(TimerEvent.TIMER, OnTimer);
timer.start();
,然後我的函數結束時,你會覺得這個計時器已經超出範圍,並沒有什麼堅持着它的一個參考了。但是這個計時器仍然有效。
所以要麼我很幸運,垃圾收集器還沒有運行,或者有什麼東西在堅持參考。如果是後者,我怎麼知道它將被垃圾收集?
如果我做一個定時器,如爲什麼不是這個垃圾收集
var timer:Timer = new Timer(50, 0);
timer.addEventListener(TimerEvent.TIMER, OnTimer);
timer.start();
,然後我的函數結束時,你會覺得這個計時器已經超出範圍,並沒有什麼堅持着它的一個參考了。但是這個計時器仍然有效。
所以要麼我很幸運,垃圾收集器還沒有運行,或者有什麼東西在堅持參考。如果是後者,我怎麼知道它將被垃圾收集?
計時器仍將運行,並將分派事件。只是聲明它,你可以訪問它(作爲公共實例變量)的方式進行:
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, OnTimer);
- 非常重要的事情在Flashtimer = null;
- 如果你真的需要釋放內存,設置參考null啊!謝謝:) – 2013-02-18 20:14:41
歡迎您:) – vikingmaster 2013-02-18 20:16:09
您必須刪除監聽器http://redconservatory.com/blog/actionscript-timers-and-garbage-collection/ – asawyer 2013-02-18 20:00:00