0

使用具有两个 SWF 相互通信的 LocalConnection 时。对象是按值传递还是按引用传递?

4

2 回答 2

2

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

我认为使用的序列化协议是 AMF(如果您使用registerClassAlias您的对象映射您的类,那么您将收到与您传递的相同类型;如果您不这样做,您将Object反对)。

因此,在接收 swf 中,您将获得对象的新副本。另外,请记住,如果你映射你的类,你必须有一个无参数的构造函数或只接受可选参数的构造函数;否则,当接收方反序列化对象时,您的对象将引发错误。

于 2011-04-08T21:42:10.357 回答
1

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

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

于 2011-04-08T20:04:26.710 回答