/ /なぜ副作用のドット表記法を使用するのが悪い習慣ですか? - objective-c、cocoa-touch

"副作用"にドット表記法を使用するのはなぜ悪いことですか? - objective-c、cocoa-touch

Big Nerd RanchのiOSプログラミングの第13章にあります。私の人生のために、なぜ私が使用したいのか分からない [self becomeFirstResponder]; のではなく、 self.becomeFirstResponder;

後者の方法で入力すると、 self.becomeFirstResponder;"プロパティアクセス結果が未使用 - gettersは副作用のために使用されるべきではありません"という警告が表示されます。それは意図したとおりに動作しますが、なぜドット表記法が見つかると大括弧を使用しますか?

私の質問:ドット表記をこのように使用することによって起こりうるこれらの副作用は何ですか?

回答:

回答№1は1

becomeFirstResponder プロパティではない、それは UIResponser.

しかし、ドット表記を使用して戻り値を無視することで、それをプロパティとして扱っているので、警告が表示されます。


回答№2については4

あなたは間違った質問をしています:副作用はあなたが望むものです - それはそうです self 最初の応答者になります。それは副作用です 間違いなく 起こる。

コンパイラが作成しているポイントは、そのドットこれらの副作用を引き起こすために意図的に表記を使うべきではない;おそらく部分的には、コンパイラがgetterまたはsetter(あるいはその両方)への呼び出しをドット表記の使用の文脈に依存するかどうか、コンパイラがゲッターを呼び出すように指示され、コードが間違って見えてしまい、人間に間違って読まれるということがある場合には、結果を返すことを前提にしたいかもしれません。


回答№3の場合は0

私はわかりません。コンパイラがあなたの " self.becomeFirstResponder; プロパティの結果を使用しないため、最適化レベルが高くなります。