zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Swift中的@IBOutlet用 var 及 Optional 定义的原因

定义 原因 swift var optional
2023-09-27 14:27:45 时间

熟悉IOS的朋友们一定很熟悉@IBOutlet了(bushi,它是链接到界面元素(storyBoard或xib)的一个变量,通常用以下代码表示:

@IBOutlet private var nameLabel: UILabel!

但是为什么要用varOption来声明呢?

我们来做个试验:

如果我们将var换成let

  • @IBOutlet标识的属性必须是可变的 

如果将UILabel!换成UILabel

  • @IBOutlet标识的属性有一个非可选的ULabel类型

这是为什么呢?

Swift官方文档中对intializer有如下解释:

"Initialization involves setting an initial value for each stored property on that instance and performing any other setup or initialzation that is required before the new instance is ready for use."

意思是,在类的新实例可用之前必须执行构造过程,这个过程包括设置实例中每个存储属性的初始化,即类的每个属性包括@IBOutlet,在init()阶段都必须被赋值。(具体可见两段式构造过程)

由于@IBOutlet对应的界面元素在loadView()才会被加载,而loadView()又是在init()之后才执行,所以在Init阶段@IBOutlet还未被初始化。

由于UILable不能够被赋值为nil,因此需要定义为nil.

 

参考链接:https://www.jianshu.com/p/337e7036c818

原编辑时间 2020-11-24