xml - ActionScript - 将数据分配给对象数组后处理 XML?

标签 xml actionscript-3 dispose

将加载的 XML 数据分配给对象数组后,我想从内存中删除 XML,或者至少可用于垃圾收集器。但是,这样做也会删除数组中分配的对象值。

我不是调用 XMLdata = null;,而是按照文档的指示调用 System.disposeXML(XMLData);:

disposeXML() method: Makes the specified XML object immediately available for garbage collection. This method will remove parent and child connections between all the nodes for the specified XML node.

在将加载的 XML 数据分配给对象数组后,我不应该尝试处理它吗?

//Convert XML Data To Array Of Objects
var XMLData:XML = XML(evt.currentTarget.data);

for each    (var station:XML in XMLData.station)
            {
            var stationObject:Object = new Object();
            stationObject.name = station.name;

            arrayData.push(stationObject); 
            }

//Nullify XML
trace(XMLData == null); //false
trace(arrayData[0].name); //traces name
XMLData = null;
trace(XMLData == null); //true
trace(arrayData[0].name); //traces name

//Dispose XML
trace(arrayData[0].name); //traces name
System.disposeXML(XMLData);
trace(arrayData[0].name); //does not trace, traces nothing

最佳答案

我认为乔治·普罗芬扎是正确的。尽管使用对象似乎是个好主意(除非您从 XML 中解析出特定信息),但直接使用 XML 并放弃使用对象也同样有效。您可以像对象一样遍历和应用 XML,这将消除少量开销。


根据您的问题,当使用 XMLData == null 时,您正在清除该对象,但垃圾收集器不会触及它,直到所有对数据的引用都被清除。被剥夺了。 使用 System.disposeXML() - 您强制进行收集。

进入调试器,并在调用 System.disposeXML() 时停止。观察物体的清洁情况。 我相信 station.name 不是字符串类型 - 因此将作为 XML 的对象引用回来 - 使用它时,Cast 是一个字符串。

这应该像这样完成:

stationObject.name = String(station.name)

stationObject.name = station.name as String

其中一个可以工作。

它将数据转换为字符串,而不是@XML 类型。

关于xml - ActionScript - 将数据分配给对象数组后处理 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172554/

相关文章:

c# - 在不锁定资源的情况下使用 BitMap 对象

c# - 当 C# 超出范围时,C# 是否自动将 "dispose"IDisposable 对象?

c# - 我需要 Dispose 来注销事件吗?

java - 如何绕过 "This expression is not supported in the current option setting"错误

flash - 具有预定义结果的逼真掷骰子动画

xml - 比较 JUnit 中的 XML 元素

flash - 从闪存安全访问 Amazon S3

actionscript-3 - 为什么我不能从其他类访问公共(public)变量?

ios - 如何在 iOS 中将字符从一个位置修剪到另一个位置( Objective-C )?

xml - 在 for 循环中使用 order by 返回多个值