ios - 为什么 return 0 永远不会在这段代码中执行?
问题描述
我正在使用 if 和 else if 来确定两个不同屏幕尺寸的正确高度,并且在“返回 0”时收到警告,说它永远不会被执行。如何使此警告静音?
可以用例吗?X
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if UIScreen.main.sizeType == .iPhone4 || UIScreen.main.sizeType == .iPhone5 {
return 213
} else if UIScreen.main.sizeType == .iPhone6 {
return 249
} else {
return 276
}
return 0
}
解决方案
您的代码必须采用 if/else if/else 块中的三个分支之一,并且所有三个分支都返回,因此执行永远不会超过该块。编译器足够聪明地注意到这一点(死代码删除优化)并给你一个警告。可能最简单的方法是:
- 省略 return 0 行
- 更改您的代码,使 else 分支不再是 else :
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if UIScreen.main.sizeType == .iPhone4 || UIScreen.main.sizeType == .iPhone5 {
return 213
} else if UIScreen.main.sizeType == .iPhone6 {
return 249
}
return 276
}
推荐阅读
- c - 有人可以向我解释为什么我的阶乘递归代码无法编译吗
- sql - 我们可以在列中对 SSRS 字段进行分组吗
- python - CountVectorizer 分词器
- javascript - 转换 foreach 循环以与 Internet Explorer 兼容
- npm - 无法将 npm/yarn 包更新到最新版本
- sas - 如何在 SAS EG 中手动输入数据
- javascript - 计算月周和日中两个日期之间的差异
- macos - .gdbinit 'set startup-with-shell off' 不适用于 gdb 8.3:[进程 2451 的新线程 0x1303]
- windows - 使用 SDL2 crate 运行和构建程序时出现问题
- java - 如何打印用户定义列表中最长的单词?