Swift 2:从未使用不可变值 X 考虑用“_”替换

Swift 2: Immutable value X is never used consider replacing with '_'

在我的旧代码的几个案例中,我收到了警告:

Immutable value X is never used consider replacing with '_'

例如,如果我正在检查具有关联对象的枚举(但在这种情况下我不使用该对象),或者如果我使用 'If let' 构造来检查是否对象是否为零。

阅读这些警告并进行更改对我来说并没有太大影响,但我想知道是否有人知道为什么建议这样做 - 为什么要为此警告我们?它会以任何方式影响性能吗?

建议进行这些更改,因为如果您根本不使用这些变量,则应考虑将其替换为“_”。这样您(和其他人)以后可以更快地理解您的意图。

就性能而言,这可能只是您根本不会注意到的微小改进。同样的情况也适用于代码的编译和优化。

在日常工作中,一般应无预警工作。显而易见的原因是,如果您的代码产生数百个不太重要的警告,您将错过 真正的 和重要的警告。

您所描述的情况最好以这种方式解决:与其使用 if let myObject = myObject,不如使用:

if myObject != nil 

这样一来,你想要做什么就一目了然了。

永远不会使用不可变值 X 考虑用“_”替换

出现此警告是因为您在声明变量后未使用它。忽略警告并继续编写代码并使用您的对象,它将消失。

Swift 2是非常敏感的语言,它会在每一步都给你警告。

我在这里解释一个简单的警告任何对象的演示:- 1 .不可变值 X 从未使用过,考虑替换为 '_' 当您不使用对象而仅声明它时,它就会到来。 例如:-

var nameImg:String = "";

2.变量“nameImg”已写入,但从未读取。 当您为您的对象分配任何值但您仍然没有在任何其他对象中使用它时,它就会到来。 前-

  var nameImg:String = "";
                    if(action==1){
                        nameImg  = "navTab";
                    }
                    else{
                        nameImg  = "back";
                    }

3。 没有警告 如果您正在为您的对象分配任何值并在另一个对象中使用它;)。

前-

 var nameImg:String = "";
                    if(action==1){
                        nameImg  = "navTab";
                    }
                    else{
                        nameImg  = "back";
                    }


                    //back & menu btn
                    let btnBack = UIButton(type: UIButtonType.Custom);
                    btnBack.setImage(UIImage(named:nameImg), forState: UIControlState.Normal);
                    btnBack.sizeToFit();

因为你的值在声明之后一直没有被使用,不久前我遇到了完全相同的问题。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)


    let row = indexPath.row <-----

我发现只要在错误消失后打印它。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)


    let row = indexPath.row <---
    print(row) <---

出现此警告是因为 Xcode 希望您更改变量。 Xcode想要的变量还没有被使用过。希望这可以帮助。一旦你使用它,错误就会消失。我已经多次尝试并研究过它,实际上每次都会消失。