gpt4 book ai didi

cocoa - 在 Swift 中使用 as 和 as 向下转型?

转载 作者:IT王子 更新时间:2023-10-29 05:19:08 24 4
gpt4 key购买 nike

这两个代码片段有什么区别:

let cell = tableView.dequeueReusableCellWithIdentifier("cellId") as UITableViewCell?
// vs
let cell = tableView.dequeueReusableCellWithIdentifier("cellId") as? UITableViewCell

结果不完全一样吗?

最佳答案

在该代码中没有区别,在这两种情况下它的计算结果都是 UITableViewCell?

真正的区别在于:

  • 在第一种情况下,向下转换为 UITableViewCell? 预计总是会成功(即使它为 nil),因此如果 dequeueReusableCellWithIdentifier 返回的不是实例UITableViewCell(或从它继承的类的实例),它在运行时失败。该表达式返回一个可选的 UITableViewCell?

  • 在第二种情况下,转换是可选的:如果 dequeueReusableCellWithIdentifier 返回的对象既不是 UITableViewCell 的实例,也不是子类的实例,向下转换优雅地评估为 nil(因此没有运行时错误)。

当然 dequeueReusableCellWithIdentifier 总是返回一个 UITableViewCell,这就是为什么您的代码没有区别。但在其他情况下可能存在差异,您必须注意这一点以防止运行时错误

关于cocoa - 在 Swift 中使用 as 和 as 向下转型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057276/

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