gpt4 book ai didi

ios - IBOutlets 和 IBactions 需要!到底

转载 作者:搜寻专家 更新时间:2023-10-30 21:48:50 27 4
gpt4 key购买 nike

我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。

View Controller 没有初始化器

required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }

IBOutletproperty 具有非可选类型“UILabel”

并且不断弹出此代码:

@IBOutlet var outputLabel : UILabel

但是当我添加一个!马克,它运行没有像这样的错误

@IBOutlet var outputLabel : UILabel!

IBActions 也会发生同样的事情...

最佳答案

首先要知道,什么是!?

  • 使用 ? :如果将来该值可以变为 nil,那么您对此进行测试。
  • 使用 ! :如果它真的不应该在未来变成 nil,但它最初需要为 nil。

@IBOutlet:

当您在 Swift 中声明一个 outlet 时,编译器会自动将该类型转换为一个弱隐式解包可选,并为其分配一个初始值 nil

实际上,编译器将 @IBOutlet var name: Type 替换为 @IBOutlet weak var name: Type! = 无

Xcode 会更改它并强制限制声明 @IBOutlet 非选项类型变量,因此遵循 @IBOutlet 的两种声明直到日期都是有效的。

@IBOutlet var outputLabel : UILabel!
@IBOutlet var priceLabel : UILabel?

但是,如果您在 beta 4 中控制拖动标签的导出,则会发生这种情况:

@IBOutlet var priceLabel : UILabel! = nil

关于ios - IBOutlets 和 IBactions 需要!到底,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com