[討論] 元件用完之後remove或是給null的差異

看板Flash作者 (別名艾維)時間12年前 (2012/10/02 23:01), 編輯推噓1(1010)
留言11則, 3人參與, 最新討論串1/1
各位好, 最近我開始慢慢熟悉Flash一些基本操作, 還有AS3.0的用法, 目前參考練習的內容是這位作者的網站: "I Help People Make Flash Games" AvoiderGame Tutorial http://0rz.tw/7juns 不過練習完Part3之後有個疑問是, addChild加入gameOverScreen之後, 把playScreen設為null, 這樣子的做法, 跟removeChild或是removeListener的作法, 有沒有什麼差異? 我自己的感覺好像是, playScreen給了null, 所有相關的物件的pointer全部都消除, 但其實相關的物件都還存在著, 是這樣子的嗎? 還請各位指正我的觀念~謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.135.139

10/03 12:29, , 1F
當物件被new時,就已經存在。而addChild是將物件加到顯示
10/03 12:29, 1F

10/03 12:30, , 2F
清單,讓畫面上可以看到物件,removeChild則是從顯示清單
10/03 12:30, 2F

10/03 12:32, , 3F
中移除,但還是存在。
10/03 12:32, 3F

10/03 12:51, , 4F
謝謝樓上大大的回應~但這樣不管remove或是給null,
10/03 12:51, 4F

10/03 12:52, , 5F
物件都還是存在的話,flash裡面有內建garbage collection
10/03 12:52, 5F

10/03 12:53, , 6F
的機制嗎?感覺都還在好像沒有用會一直堆著這樣?謝謝~
10/03 12:53, 6F

10/03 13:03, , 7F
設null就是要移除參考,一個沒有被參考的物件稱為"孤兒"
10/03 13:03, 7F

10/03 13:03, , 8F
當需要記憶體的時候,garbage collector自動會把孤兒
10/03 13:03, 8F

10/03 13:03, , 9F
都清除掉
10/03 13:03, 9F

10/03 15:43, , 10F
哦哦~所以flash也是有garbage collector不用設計師
10/03 15:43, 10F

10/03 15:43, , 11F
自己處理, 了解~感謝大大!
10/03 15:43, 11F
文章代碼(AID): #1GQm7F9H (Flash)
文章代碼(AID): #1GQm7F9H (Flash)