apache-flex 清除Flex ActionScript字典

ee7vknir  于 2022-11-01  发布在  Apache
关注(0)|答案(6)|浏览(166)

是否可以清除Flex flash.utils.Dictionary?我有一个Dictionary要清除(删除所有元素)。

bvn4nwqk

bvn4nwqk1#

我不相信有一个明确明确的命令。
但是,您可以编写自己的代码,循环遍历所有键并运行

delete dict[key];

或者你可以重新分配

dict = new  Dictionary()
r6hnlfcb

r6hnlfcb2#

我 * 认为 * 这将工作,但我不是100%肯定,因为你修改字典,同时迭代:

function clear(d:Dictionary):void {
  for(var id:* in d) {
    delete d[id];
  }
}

然而,我通常只是创建一个新的字典,每当我需要清除一个(虽然如果它被引用在多个地方,那么这可能不适合你)。

ugmeyewa

ugmeyewa3#

要删除Dictionary中的所有元素,请循环遍历每个键并使用delete关键字

function clear(dict:Dictionary):void
{    
  for(var key:Object in dict) 
  {
        delete dict[key];
  }
}

如果要100%确定已删除的键已被垃圾收集,则必须用新的Dictionary替换Dictionary示例。

dict = new Dictionary();

我曾经有一个Dictionary对象,它有300万个字符串作为键,这些字符串只有在Dictionary示例本身被垃圾收集的时候才会被垃圾收集。

qlfbtfca

qlfbtfca4#

你不仅需要确保键的类型是object或 *,你还需要先得到键,然后从字典中删除它们,否则你会在字典中留下一个键(最后一个)。
我记得上面的代码以前工作,但最近已经改变了与最后一次迭代的flash播放器。
此代码将确保删除所有文件,包括最后一个文件。

//Clean up the dictionary
var keys:Array = [];
var key:*;
for ( var key:* in dictionary )
    keys.push( key );
for each ( var key:* in keys )
    delete dictionary[ key ];
b1payxdu

b1payxdu5#

只是:

dictionary = new Dictionary()
b1zrtrql

b1zrtrql6#

public static function clear(dict:Dictionary):void {
        var key:*
        for(key in dict) {
            delete dict[key];
        }
    }

将上面的函数用作实用程序函数,您可以在整个代码库中使用它。

相关问题