【问题标题】:In swift, why is UIlabel optional?迅速,为什么 UIlabel 是可选的?
【发布时间】:2016-11-28 16:24:49
【问题描述】:

看看这个,

    @IBOutlet weak var label1 : UILabel!

为什么 UILabel 是可选的?我与该 UILabel 建立了 IBOutlet 连接这一事实意味着 UILabel 绝对存在,并且不会为零。那么为什么它是可选的UIlabel? 而不是UILabel

【问题讨论】:

  • 首先是它的 IBOutlet 而不是 IBAction。这是因为如果您不在 xib 中连接插座,它将为您返回该标签的 nil 值。
  • 你如何想象弱的非可选属性?
  • 为什么 UILabel 上有 IBAction?
  • 不好的例子。我应该使用插座,

标签: ios swift uibutton uilabel optional


【解决方案1】:

这是因为非可选变量必须在构造函数中初始化并保留所有生命周期。

IBOutlets 也很弱,这意味着它可以变为 nil 而例如视图控制器还活着。

【讨论】:

  • 如果我可以再问一个问题,是否所有弱变量在 Swift 中都必须是可选的?
  • 是的,因为它们可以在生命周期中变为 nil。
【解决方案2】:

这是关于视图控制器生命周期如何实际发挥作用的。 在继续之前,让我们先了解一下模型、视图和控制器。

视图控制器对象本身在视图加载之前被实例化,即你的标签。在此期间,由于 view 甚至没有加载,因此标签没有 reference,因为它仍然需要从情节提要中创建。

由于这个原因,对象在很短的不引人注意的时刻变为 nil。并且,当视图被加载时:ViewControllerviewDidLoad(),那么只有标签引用被分配给变量。

这概述了为什么在 iOS 中真正使用可选选项的简短描述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多