Xcode 将 outlet 生成为具有隐式展开的弱变量,如下所示:
@IBOutlet weak var nameTextField: UITextField!
我想知道为什么它不只是生成 onowned var
,据我所知 -
行为完全相同,但保持类型非可选。这两者有什么区别吗?
weak var foo: UITextField!
unowned var foo: UITextField
最佳答案
weak
变量有一个默认值,即 nil
,因此您的代码是合法的,因为 outlet 属性在对象创建时(之前 socket 实际上已连接)。
但是 unowned
变量没有默认值,您的代码将无法编译。试试吧。
而且整个概念都是错误的。 unowned
是指保证独立存在的事物,没有它你就活不下去。 View Controller View 的 subview 不满足这两个条件。
关于ios - 为什么 Xcode 不让 outlets unowned 而不是 weak?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45258587/