Big Nerd RanchのiOSプログラミングの第13章にあります。私の人生のために、なぜ私が使用したいのか分からない [self becomeFirstResponder];
のではなく、 self.becomeFirstResponder;
後者の方法で入力すると、 self.becomeFirstResponder;
"プロパティアクセス結果が未使用 - gettersは副作用のために使用されるべきではありません"という警告が表示されます。それは意図したとおりに動作しますが、なぜドット表記法が見つかると大括弧を使用しますか?
私の質問:ドット表記をこのように使用することによって起こりうるこれらの副作用は何ですか?
回答:
回答№1は1becomeFirstResponder
プロパティではない、それは UIResponser
.
しかし、ドット表記を使用して戻り値を無視することで、それをプロパティとして扱っているので、警告が表示されます。
回答№2については4
あなたは間違った質問をしています:副作用はあなたが望むものです - それはそうです self
最初の応答者になります。それは副作用です 間違いなく 起こる。
コンパイラが作成しているポイントは、そのドットこれらの副作用を引き起こすために意図的に表記を使うべきではない;おそらく部分的には、コンパイラがgetterまたはsetter(あるいはその両方)への呼び出しをドット表記の使用の文脈に依存するかどうか、コンパイラがゲッターを呼び出すように指示され、コードが間違って見えてしまい、人間に間違って読まれるということがある場合には、結果を返すことを前提にしたいかもしれません。
回答№3の場合は0
私はわかりません。コンパイラがあなたの " self.becomeFirstResponder;
プロパティの結果を使用しないため、最適化レベルが高くなります。