作者cjcat2266 (CJ Cat)
看板Flash
標題Re: [問題] 關於移除物件的問題
時間Sat Apr 10 23:35:24 2010
※ 引述《yhn0tgb60 (呦厚厚)》之銘言:
: 另外 as3的 delete 是用在什麼情況阿 好像很少看到人用
: 好像大多都是用 null....
1F:→ Lawnchern:所以 delete是....什麼時候會用呢@@?我也想知道 04/10 11:09
2F:推 terrylchen:我記得之前看的說明好像是說delete沒辦法刪除區域變數 04/10 19:24
3F:→ terrylchen:不知道正不正確... 04/10 19:25
要清除一個 myVar 變數儲存的reference
寫法就是 myVar = null
區域變數沒有清除不清除的問題
凡是跳出該區域變數的scope之後
自然該變數就被消除了
delete的用法主要是針對清除以下資料用的
1. dynamic class物件的dynamic property
Object class就是一個dynamic class
所以可以有以下的dynamic property宣告寫法
var obj:Object = new Object();
obj.something = true;
寫 obj.something = null 是無法清除 obj.something 這個變數的
因為 obj.something 這個變數還在
只是儲存的值為 null
要一了百了的消除 obj.something 這個dynamic property
正確的寫法是
delete obj.something;
2. Dictionary物件的key-value pair
建立Dictionary物件的key-value pair寫法如下
var dic:Dictionary = new Dictionary();
dic[myKey] = myValue;
而清除此key-value pair資料的寫法是
delete dic[myKey];
清除一整個Dicitonary物件的key-value pairs的寫法則是
for (var key:* in dic) {
delete dic[key];
}
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog
http://cjcat.blogspot.com
Gallery
http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.26.26
※ 編輯: cjcat2266 來自: 118.168.26.26 (04/10 23:37)
4F:推 terrylchen:喔喔...好清楚XD 04/11 00:23
5F:推 emily114005:原來要清除Dictionary要用delete阿 都用錯了 感謝cj 04/12 00:31
6F:推 yhn0tgb60:那再請教一個問題 當我把一個class=null 04/13 10:47
7F:→ yhn0tgb60:需要先將class裡面的 變數=null嗎 04/13 10:49
8F:→ yhn0tgb60:還是當 class=null時 裡面的資源就全釋放了??? 04/13 10:50
9F:推 yhn0tgb60:甚至當我 unload一個 swf時 04/13 10:55
10F:→ yhn0tgb60:是否需要先將裡面的class先 null??? 04/13 10:55
11F:→ yhn0tgb60:還是說當我 unload時 就已經全部釋放資源了 ??? 04/13 10:56
12F:→ cjcat2266:不需要全部null,無法存取的物件自成一個"島(island)" 04/13 11:25
13F:→ cjcat2266:garbage collector會把island全部清除 04/13 11:26
14F:→ cjcat2266:island可以看成是一大塊orphan 04/13 11:26
15F:→ cjcat2266:orphan(孤兒)意即無法存取的物件 04/13 11:26
16F:推 yhn0tgb60:謝謝 ^^ 04/13 13:35