【发布时间】:2023-03-05 13:02:01
【问题描述】:
Xcode 将 outlet 生成为带有隐式展开的弱变量,如下所示:
@IBOutlet weak var nameTextField: UITextField!
我想知道为什么它不只是让onowned var,在我的理解中 -
行为完全相同,但保持类型非可选。这两者有什么区别吗?
weak var foo: UITextField!
unowned var foo: UITextField
【问题讨论】:
-
两阶段初始化。出口是在初始化之后分配的,因此它们必须是可选的。通常保留
weak或strong并不重要,但unowned不正确。 -
@Sulthan 我一直想知道为什么 IBOutlet 在断点处被击中两次。所以我创建了一个项目,将一个标签拖到 viewController 中并在其上设置了一个断点。第一个断点发生在
viewDidLoad或init之前。如果我打印标签,它显示它是nil。我第二次打断点是在init之后但仍然在viewDidLoad之前。这次如果我打印它,它会显示:Optional<UILabel>
标签: ios swift xcode weak-references iboutlet