区别?而且!在Swift语言?

joh*_*doe 10 swift

我在线阅读了很多文章并预订了(Apple),但我无法找出它们之间的区别?而且!Swift语言的运算符.

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

    }

    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
        return 1;
    }
Run Code Online (Sandbox Code Playgroud)

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

Jor*_*ide 45

根据官方Apple文档:

使用可选值时,您可以写吗?在诸如方法,属性和下标之类的操作之前.如果之前的值?是零,一切都在?被忽略,整个表达式的值为零.否则,可选值是解包,并且后面的一切都是?作用于未包装的价值.在这两种情况下,整个表达式的值都是可选值.

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

Apple Inc.的"Swift编程语言".iBooks的.https://itun.es/nl/jEUH0.l