A sample source code for using a dictionary in AS-3/Flex with weak keys.
When I say new Dictionary(true), after a while all those objects, whose
only references are as the dictionary keys, will be garbage collected.
So, if run the following in debug mode, after a while, output of trace
will be 0, from 1 initially.
1: <?xml version="1.0"?>
2: <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
3: <mx:Script><![CDATA[
4: private var di:Dictionary = new Dictionary(true);
5: private function init():void {
6: di[new Sprite()] = [1,2,3];
7: setTimeout(startTrack,5000);
8: }
9:
10: private function startTrack():void {
11: System.gc();
12: var count:int = 0;
13: for each (var arr:Array in di) {
14: ++count;
15: }
16: trace("number of elements in dictionary = " +count);
17: setTimeout(startTrack,5000);
18: }
19: ]]></mx:Script>
20: </mx:Application>
No comments:
Post a Comment