web-dev-qa-db-ja.com

Swift 2:不変値Xは決して使用されず、 '_'で置き換えることを検討

私の古いコードのいくつかの場合、私は警告を受けています:

不変値Xは使用されないため、「_」で置き換えることを検討してください

たとえば、関連付けられたオブジェクトを持つ列挙型をチェックしている場合(ただし、この場合はオブジェクトを使用しません)-または、オブジェクトがnilかどうかをチェックするために 'If let'コンストラクトを使用している場合、これはしばしば発生します。

これらの警告を読んで変更を加えることはそれほど気にしませんが、なぜこれが推奨されるのか、なぜこれについて私たちに警告するのか誰にもわからないのでしょうか?何らかの形でパフォーマンスに影響しますか?

26
james_alvarez

これらの変数をまったく使用しない場合は、「_」に置き換えることを検討する必要があるため、これらの変更をお勧めします。そのため、あなた(および他の人々)は後であなたの意図をより早く理解することができます。

パフォーマンスの面では、おそらくわずかな改善にすぎず、まったく気付かないでしょう。コードのコンパイルおよび最適化中にも同じ状況が当てはまります。

11
Qbyte

不変値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();
20

あなたの値が宣言された後に決して使用されなかったからです、私はあまり前にまったく同じ問題を抱えていました。

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) <---
2
freddieoh