【问题标题】:Difference Between ? and ! in Swift Language? [duplicate]之间的区别?和 !在 Swift 语言中? [复制]
【发布时间】:2025-12-16 12:30:01
【问题描述】:

我在网上阅读了很多文章和书籍(Apple),但我无法找出两者之间的区别?和 ! Swift 语言中的运算符。

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
    {

    }

    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
        return 1;
    }

在上面的代码中,第一个 func 将 tableView 声明为 !并在第二个函数中 tableView 被声明为?。

【问题讨论】:

  • Apple 的免费 swift 书籍中解释了这些符号。

标签: swift


【解决方案1】:

根据 Apple 官方文档:

使用可选值时,您可以编写 ?手术前 比如方法、属性和下标。如果 ? 是零,之后的一切?被忽略,整体的价值 表达式为零。否则,可选值被解包,并且 之后的一切?作用于展开的值。在这两种情况下, 整个表达式的值是一个可选值。

一旦您确定可选项确实包含一个值,您就可以 通过添加感叹号 (!) 来访问其基础值 选项名称的结尾。感叹号有效地表示:“我 知道这个可选的肯定有一个值;请使用它。”这个 被称为强制解包可选值(...)

Apple Inc.“Swift 编程语言”。电子书。 https://itun.es/nl/jEUH0.l

【讨论】: