Vala中弱引用和无引用引用之间有什么区别 .
基于我从Vala教程中学到的内容,弱计和无主参考都不计算在内,当真实实例超出范围时,它们将引用null(!!) .
为什么应该有一个不同的手段出于一个原因?(如果他们做同样的工作)如果没有,有人可以给我一个简单的例子来说明为什么以及什么时候我们必须使用它们?!
非常感谢
现在两者没有区别 . 语言开发人员选择了两个不同的关键字来表示未来可能存在差异的可能性,请参阅documentation中的引用:
此时弱和无主可以互换使用 . 但是,您应该仅使用weak来打破参考周期,并且仅对所有权问题使用unowned,如上所述 .
据我所知,在 GLib.Object 子类上使用了弱引用,并且从非GObject C库导入的非引用计数(在Vala术语中为"compact")类使用了无主引用 . 我在上面链接的文档页面上有一些示例 .
GLib.Object
警告:我对Vala一无所知(直到5分钟前)
似乎有一个非常好的介绍Vala's Reference Handling here
非引用计数对象可能只有一个强引用(将其视为“主”引用) . 当此引用超出范围时,将释放该对象 . 所有其他引用必须是无主引用 . 当这些引用超出范围时,将不释放该对象 .
弱引用不会阻止对象被垃圾收集,而在我看来,无主引用是相反的,即 . 该对象将只有一个引用,但永远不会收集该对象 .
2 回答
现在两者没有区别 . 语言开发人员选择了两个不同的关键字来表示未来可能存在差异的可能性,请参阅documentation中的引用:
据我所知,在
GLib.Object
子类上使用了弱引用,并且从非GObject C库导入的非引用计数(在Vala术语中为"compact")类使用了无主引用 . 我在上面链接的文档页面上有一些示例 .警告:我对Vala一无所知(直到5分钟前)
似乎有一个非常好的介绍Vala's Reference Handling here
弱引用不会阻止对象被垃圾收集,而在我看来,无主引用是相反的,即 . 该对象将只有一个引用,但永远不会收集该对象 .