您的位置:首页 > 运维架构

解决arraycollection赋值修改过程中,出现TypeError: Error #1009: Cannot access a property or method of a null obje

2014-11-10 14:05 746 查看
最近在项目开发过程中,使用到arraycollection这个类型,进行数据的存储。这两个数据分别被定义于两个页面,a定义在主界面,b定义在弹窗界面。

具体的应用场景是两个arraycollection类型的变量,a和b。b初始化的时候将a的值赋值给b。开发之初使用的方法是

private a:ArrayCollection=new ArrayCollection; public var b:ArrayCollection=new ArrayCollection(),然后使用b=a语句进行b的赋值;在后续程序中,使用itemUpdated或者setItemAt(obj,i)的方法,更新b中的值。这个时候报错下图错误:



经过分析,发现代码编写过程中使用的ArrayCollection类型的变量的赋值方式,若使用ArrayCollection进行赋值时如果使用“=”赋值,那么=两边的变量将指向同一个内存空间,其中一个改变另外一个跟着改变,类似指针。开发过程中,更新public的变量b时会更改a,a是private类型的,无法在另外的界面中修改。

具体解决方法:

更改两个变量的赋值方式,去除两个页面之间的关联,使用深度复制。

具体的方法是

for each(var obj:Object in a)

{
b.addItem(obj);
}

因为这个方法是通过增加的方式进行变量b的赋值,如果存在多次调用包含这个赋值语句的方法就会导致,b的内容成倍增加,这个时候需要在这个方法中增加移出方法。

b.removeAll();至此,权限问题顺利解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐