SLN*_*SLN 1 xcode optional uilabel ios swift
当我在视图中创建标签(从Object库中拖动)并使IBOutlet连接标签和viewController(Ctrl和拖动)时,Xcode生成的默认代码是,例如,@IBOutlet weak var displayColumn: UILabel!
我可以删除感叹号并将其设置为UILable唯一.但是必须有一个很好的理由Xcode希望它是一个强制解包的可选类型.
问题:我认为我不明白在这里使用可选类型的原因.因为我已经在我的视图中创建了一个标签并将其连接到我的控制器,所以它确实存在,它存在,我创建它.为什么Xcode想要一个选项作为默认类型?如果它说标签内的文字是一个选项,那对我来说听起来很合理,因为标签在运行时的某个时刻可能是空的.
非常感谢
您已在Xcode中创建了一个标签,并向Xcode表明您希望该标签与之相连@IBOutlet.但这种联系直到晚些时候才会发生.
这是运行时事件的顺序.
@IBOutletS和@IBActions为连接.在Swift中,当实例化一个类时,必须初始化所有属性.在步骤1中,出口是nil因为它们还没有连接.为了实现这一点,必须将它们声明为Optionals.
使用普通的Optional是完全有效的,例如:
@IBOutlet weak var displayColumn: UILabel?
Run Code Online (Sandbox Code Playgroud)
但是每次你访问它时你都必须处理它的展开.只有@IBOutlet当nil尚未发生时(例如,在步骤3中prepareForSegue)或者您忘记连接插座或重命名它时,唯一的时间是零.在这些情况下,通过访问nil提醒您遇到问题导致崩溃.
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |