после назначения загруженных данных XML массиву объектов, я хотел бы удалить XML из памяти или, по крайней мере, получить доступ к сборщику мусора. однако это также удаляет назначенные значения объекта в массиве.ActionScript - Dispose XML после присвоения данных массиву объектов?
вместо вызова XMLdata = null;
, я звоню System.disposeXML(XMLData);
, как указано в документации: метод
disposeXML(): Делает указанный объект XML сразу доступный для сбора мусора. Этот метод удалит родительские и дочерние соединения между всеми узлами для указанного узла XML.
Следует ли мне не пытаться избавиться от загруженных данных 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
я не уверен, но это выглядит как значения, заданные для вашего stationObject являются не скопировано, иначе я не понимаю, почему значения объектов очищаются после удаления xml. Попробуйте stationObject.name = new String (имя станции); и посмотрим, получится ли у вас такое же поведение. Кроме того, использование Object медленнее, чем использование чего-то строго типизированного. Возможно, вам лучше использовать сам xml (например, trace (XMLData.station [0] .name)) –