是否可以清除Flex flash.utils.Dictionary?我有一个Dictionary要清除(删除所有元素)。
flash.utils.Dictionary
Dictionary
bvn4nwqk1#
我不相信有一个明确明确的命令。但是,您可以编写自己的代码,循环遍历所有键并运行
delete dict[key];
或者你可以重新分配
dict = new Dictionary()
r6hnlfcb2#
我 * 认为 * 这将工作,但我不是100%肯定,因为你修改字典,同时迭代:
function clear(d:Dictionary):void { for(var id:* in d) { delete d[id]; } }
然而,我通常只是创建一个新的字典,每当我需要清除一个(虽然如果它被引用在多个地方,那么这可能不适合你)。
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示例本身被垃圾收集的时候才会被垃圾收集。
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 ];
b1payxdu5#
只是:
dictionary = new Dictionary()
b1zrtrql6#
public static function clear(dict:Dictionary):void { var key:* for(key in dict) { delete dict[key]; } }
将上面的函数用作实用程序函数,您可以在整个代码库中使用它。
6条答案
按热度按时间bvn4nwqk1#
我不相信有一个明确明确的命令。
但是,您可以编写自己的代码,循环遍历所有键并运行
或者你可以重新分配
r6hnlfcb2#
我 * 认为 * 这将工作,但我不是100%肯定,因为你修改字典,同时迭代:
然而,我通常只是创建一个新的字典,每当我需要清除一个(虽然如果它被引用在多个地方,那么这可能不适合你)。
ugmeyewa3#
要删除Dictionary中的所有元素,请循环遍历每个键并使用delete关键字
如果要100%确定已删除的键已被垃圾收集,则必须用新的Dictionary替换Dictionary示例。
我曾经有一个Dictionary对象,它有300万个字符串作为键,这些字符串只有在Dictionary示例本身被垃圾收集的时候才会被垃圾收集。
qlfbtfca4#
你不仅需要确保键的类型是object或 *,你还需要先得到键,然后从字典中删除它们,否则你会在字典中留下一个键(最后一个)。
我记得上面的代码以前工作,但最近已经改变了与最后一次迭代的flash播放器。
此代码将确保删除所有文件,包括最后一个文件。
b1payxdu5#
只是:
b1zrtrql6#
将上面的函数用作实用程序函数,您可以在整个代码库中使用它。