首页 > 解决方案 > 为什么 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
}

标签: iosswift

解决方案


您的代码必须采用 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

}

推荐阅读