Difference between revisions of "Zh/Documentation/DevGuide/ProUNO/Weak Objects and References"
From Apache OpenOffice Wiki
< Zh | Documentation
m |
m |
||
Line 7: | Line 7: | ||
}} | }} | ||
{{DISPLAYTITLE:弱对象和弱引用}} | {{DISPLAYTITLE:弱对象和弱引用}} | ||
+ | {{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/{{SUBPAGENAME}}}} | ||
避免循环引用的一种策略是使用'''弱引用'''。对某个对象进行弱引用意味着:如果该对象仍然存在,就可以重新建立对它的硬引用,并且还存在另外一个对该对象的硬引用。 | 避免循环引用的一种策略是使用'''弱引用'''。对某个对象进行弱引用意味着:如果该对象仍然存在,就可以重新建立对它的硬引用,并且还存在另外一个对该对象的硬引用。 |
Latest revision as of 02:33, 14 May 2009
避免循环引用的一种策略是使用弱引用。对某个对象进行弱引用意味着:如果该对象仍然存在,就可以重新建立对它的硬引用,并且还存在另外一个对该对象的硬引用。
在插图循环引用所示的循环引用中,可能将对象 B 指定为具有对对象 A 的硬引用,但对象 A 仅具有对对象 B 的弱引用。如果对象 A 需要调用对象 B 中的方法,它会临时尝试使引用成为硬引用。如果成功,对象 A 就调用该方法,然后释放硬引用。
为了能够建立对某个对象的一个弱引用,该对象需要通过导出 com.sun.star.uno.XWeak
接口来明确支持弱引用。插图 对象 C 调用对象 B 的 XComponent 中的 dispose() 描绘了弱引用的UNO 机制。
将一个对象指定给某个弱引用时,弱引用对原始对象调用 queryAdapter()
,并将其本身(以及 com.sun.star.uno.XReference 接口)作为引用添加到该适配器。
从弱引用建立硬引用时,会调用适配器对象的 com.sun.star.uno.XAdapter 接口中的 queryAdapted()
方法。当原始对象仍然有效时,获得原始对象的一个引用,否则返回一个空引用。
如果原始对象被析构,适配器会通知中断适配器与弱引用之间的循环引用的所有弱引用。
编写 UNO 组件 介绍了 C++ 与 Java 中实现 Xweak 接口和弱引用的的 Helper 类。
Content on this page is licensed under the Public Documentation License (PDL). |