swift – 明确展开可选的nil不会导致崩溃
有些人以前问过这个问题,但没有接受答案.
我有一个包含UITextField的UITableViewCell. 如果我在textField外面略微点击,则该行突出显示.我想阻止这个. 为了防止它,我做以下事情: override func tableView(_ tableView: UITableView,willSelectRowAt indexPath: IndexPath) -> IndexPath! { return nil } 这完全没问题.这是我的问题.本教程的作者指出:
他的意思是你可以在可选的返回类型后面添加一个感叹号.为什么程序没有崩溃?在IndexPath返回类型之后放置感叹号后返回nil不会崩溃.我想 !会明确解开零并失败???? 解决方法
从Swift 3开始,“Implicitly unwrapped optional”不是一个单独的类型,
但是关于常规/强选项声明的属性. 有关详细信息,请参阅 SE-0054 Abolish ImplicitlyUnwrappedOptional type. 具有IUO返回类型的函数可以返回nil, func foo() -> Int! { return nil } let x = foo() // Type of `x` is `Int?` print(x) // nil 只有当评估作为可选项不可能时才是值 let y = 1 + foo() // Fatal error: Unexpectedly found nil while unwrapping an Optional value 在你的情况下,你的 override func tableView(_ tableView: UITableView,willSelectRowAt indexPath: IndexPath) -> IndexPath! 方法重写UITableViewController方法 func tableView(_ tableView: UITableView,willSelectRowAt indexPath: IndexPath) -> IndexPath? 并且可以返回零.除非呼叫者解开,否则这不会崩溃 备注:以上内容是解释您的代码编译的原因
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |