vala中'weak'和'unowned'引用之间的区别?

时间:2010-10-02 10:16:39

标签: weak-references vala

Vala中弱引用和无引用之间有什么区别。

根据我从Vala教程中学到的内容,弱和无主引用都不计算在内,当真实实例超出范围时,它们将引用null(!!)。

为什么出于某种原因应该有两种不同的手段?(如果他们做同样的工作) 如果没有,有人可以给我一个简单的例子来说明我们必须使用它们的原因和时间吗?!

非常感谢

2 个答案:

答案 0 :(得分:6)

现在两个之间没有区别。语言开发人员选择了两个不同的关键字来表示未来可能存在差异的可能性,请参阅documentation中的引用:

  

此时弱和无主可以互换使用。但是,您应该仅使用weak来打破参考周期,并且仅对所有权问题使用unowned,如上所述。

GLib.Object子类中,我使用了弱引用,并且从非GObject C库导入的非引用计数(Vala术语中的“compact”)类使用了无主引用。我在上面链接的文档页面上有一些例子。

答案 1 :(得分:-1)

警告:我对Vala一无所知(直到5分钟前)

Vala's Reference Handling here

似乎有一个非常好的介绍
  

非参考计数对象可能具有   只有一个强有力的参考(想想它   作为“主人”参考)。当这个   引用超出了对象的范围   被释放了。所有其他参考必须是   无主的参考。当这些   引用超出了对象的范围   不会被释放。

尽管弱引用不会阻止对象被垃圾收集,但在我看来,无主引用是相反的,即。该对象只有一个引用,但永远不会收集该对象。