下面是我在 Playground 上的代码:
let aNumber : NSNumber? = nil
func testFuction() -> NSNumber!{
return aNumber
}
dump(testFuction())
输出:
- nil
我很困惑为什么它没有崩溃。返回值 NSNumber!
显然是 nil,但它被强制解包了。这不应该崩溃吗?请解释。
最佳答案
您正在返回一个隐式解包的可选值,NSNumber!
。返回的基础数据类型是可选的,但它会在您每次使用时自动解包。 Swift 包含此类型,因此您不必在您知道在某个点后将变为非 nil 的变量后使用感叹号(例如,一个实例变量以 nil 开始但在使用之前被初始化) .隐式展开的可选值允许包含 nil 值,但如果变量在实际尝试使用时为 nil,则会触发运行时错误,因为它在使用时被强制展开。
关于Swift:Force Unwrapped 返回 nil 而不会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932595/