作者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