2011-05-18 76 views
1

我希望有人能够解释使用MXML卷曲绑定时引发的问题。Flex MXML绑定vs Actionscript绑定

例如,具有的itemRenderer:

如果我通过结合MXML一些控制给该数据源,例如:

文本= {data.myText}

不知何故这些绑定似乎自动获得清理干净。

但是,如果我使用Actionscript绑定时,我应该调用unwatch()?我如何知道itemRenderer何时不再被使用?

MXML绑定如何知道何时解除绑定?

回答

0

使用actionscript,您需要保留观察者的一个实例并自己清理它。花括号本质上是一个'快捷方式',它创建了大量额外的代码来处理绑定并在其后自行清理(并确保它不在依赖性循环中)。它是为了方便而设计的,而actionscript版本则提供了更多的控制权,但会创建更多可见的代码。

我可以继续,但Michael Labriola已经有一个great talk关于这个问题。

+0

我知道我需要清理自己,并且该代码是由MXML绑定生成的。这个问题的原因是因为在某些情况下,似乎没有办法确定何时进行清理(例如在项目渲染器内部),但MXML绑定知道的不知道如何。 – 2011-05-18 21:59:26

+0

啊,你的问题含糊不清。那么,首先,项目渲染器会自行回收,所以它可以在“清理”时节省很多时间,但主要是因为引用标志较弱。这让GC知道如果项目渲染器不再被使用,它仍然可以处理它,因为它没有硬链接到数据。你可以用actionscript做同样的事情,但如果可能的话尽量避免它(例如使用IDisposable接口来清理)。 – 2011-05-18 22:14:09

+0

因此,MXML绑定使用弱引用?本质上产生一个MXML绑定的equivilent是为propertyChange事件添加一个弱事件监听器? – 2011-05-18 22:19:26