IBOutlet应该使用weak还是strong var?

27

我正在使用Xcode 6.2进行iOS项目开发。在旧版本的Xcode中,当创建一个IBOutlet连接时,它总是使用弱引用存储的。现在,当我创建连接时,默认会使用强引用。我保持这种方式,没有注意到任何区别。

在哪个版本的Xcode中默认更改为强引用,并且为什么要这样做?

2个回答

35

是的,以前插座通常应该是弱的,但是 Apple 已经改变了这一点。现在他们建议在 WWDC 2015 会议中使用 强大的 插座,参见 在接口构建器中实现 UI 设计。唯一原因可能是保留循环。


在Xcode 8.3.1中,IB中创建的IBOutlets是“weak var”。 - neoneye
1
演讲者在演示的32:30左右介绍了强/弱连接。话虽如此,我强烈建议您观看整个演示 - 尤其是如果您是iOS开发新手,其中包含大量有用信息 :) - FateNuller
在Xcode 10.0中仍然如此,由IB创建的IBOutlets仍然是弱变量。 - Yuchen
4
Xcode会使用你最后选择的选项来确定弱引用和强引用。 - jacob bullock

14

在大多数情况下,插座强度弱或强并不重要。你只需要确保没有强引用循环。

子视图不应该有对其父视图的强引用,视图也不应该有对其控制器的强引用,因为父视图已经对其子视图有强引用,控制器对其视图也有强引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接