最近我發現自己經常在任何地方寫下removeEventListeners,這使代碼變得非常混亂。我知道這是一個最佳實踐,但總的來說它沒有意義。垃圾收集器應該自己處理這樣一個簡單的任務,不是嗎?當對象設置爲空時,是否很難自動刪除所有偵聽器?動作腳本:是否將對象設置爲空,自動刪除所有附加的事件偵聽器?
所以我只是想確定如果是這樣的話。是否將對象設置爲null,自動刪除所有附加的事件偵聽器?
對此有何見解?
UPDATE: 在我的情況是這樣的 - 我創建一個對象,並附加一堆事件偵聽器給它,然後有一段時間我需要重新初始化這個對象之後。當然,將這個對象設置爲null會比用手解綁每個監聽器容易得多。而大部分聽衆都是匿名函數,這意味着沒有代碼重構是不可能的。當我簡單地重新初始化一個變量新的我沒有得到重複的聽衆等,但我不知道它是以前的價值,隨着所有的聽衆得到垃圾收集。是嗎?
Casalib是一組很好的類,可以幫助您簡化垃圾收集。當你有很多顯示對象時很有用。 – redconservatory 2011-01-20 15:32:02
+1 for casalib - http://as3.casalib.org/docs/org_casalib_display_CasaMovieClip.html查看removeChildrenAndDestroy()函數 – Daniel 2011-01-20 15:33:37