LocalConnection传递值或引用?

时间:2011-04-08 19:54:26

标签: flex actionscript-3 localconnection

使用具有两个SWF的LocalConnection相互来回交谈时。对象是通过值还是引用传递的?

2 个答案:

答案 0 :(得分:2)

通过LocalConnection对象传递的数据由发送方序列化为文件,然后接收方对其进行反序列化,这意味着它构建了一个新对象。

使用的序列化协议是AMF,我认为(如果您使用registerClassAlias映射您的课程,您的对象将以您传递的相同类型收到;如果您没有,您将Object对象)。

因此,在接收swf中,您将获得对象的新副本。另外,请记住,如果要映射类,则必须具有无参数构造函数或仅采用可选参数的构造函数;否则,当接收方反序列化它们时,您的对象将抛出错误。

答案 1 :(得分:1)

首先,swf之间的通信必须通过值传递(实际参数被完全评估,结果值被复制到用于保存形式参数值的位置)而不是引用。通过引用传递将违反每个swf所在的沙箱。 (因为localconnection可以在多个swf文件之间使用)。

无论如何我有兴趣知道你为什么这么问?你在检查你是否需要防御性复制。 (这就是为什么我决定自己挖掘这些信息。)