在swift中,为什么UIlabel是可选的?
In swift, why is UIlabel optional?
看着这个,
@IBOutlet weak var label1 : UILabel!
为什么 UILabel 是可选的?我与该 UILabel 建立了 IBOutlet 连接这一事实意味着 UILabel 肯定存在,并且不会为零。那么为什么它是可选的 UIlabel?
而不是 UILabel
?
因为非可选变量必须在构造函数中初始化并保留所有生命周期。
IBOutlets 也很弱,这意味着它可以变成零,例如视图控制器还活着。
这是关于视图控制器生命周期实际如何发挥作用的。
在继续之前,让我们了解一下模型、视图和控制器。
View Controller 对象本身在加载视图(即您的标签)之前实例化。在此期间,由于 view 甚至没有加载,所以没有 reference 标签,因为它仍然需要从情节提要中创建。
由于这个原因,该对象在很短的不引人注意的时刻变成了 nil。并且,当加载视图时:ViewController
、viewDidLoad()
,然后仅将标签引用分配给变量。
这简要描述了为什么在 iOS 中真正使用了可选项。
看着这个,
@IBOutlet weak var label1 : UILabel!
为什么 UILabel 是可选的?我与该 UILabel 建立了 IBOutlet 连接这一事实意味着 UILabel 肯定存在,并且不会为零。那么为什么它是可选的 UIlabel?
而不是 UILabel
?
因为非可选变量必须在构造函数中初始化并保留所有生命周期。
IBOutlets 也很弱,这意味着它可以变成零,例如视图控制器还活着。
这是关于视图控制器生命周期实际如何发挥作用的。 在继续之前,让我们了解一下模型、视图和控制器。
View Controller 对象本身在加载视图(即您的标签)之前实例化。在此期间,由于 view 甚至没有加载,所以没有 reference 标签,因为它仍然需要从情节提要中创建。
由于这个原因,该对象在很短的不引人注意的时刻变成了 nil。并且,当加载视图时:ViewController
、viewDidLoad()
,然后仅将标签引用分配给变量。
这简要描述了为什么在 iOS 中真正使用了可选项。