39

私は本を​​読んでいます - Big Nerd Ranch iOS Programming. コードを難読化するため、ドット表記は推奨されません。私は同時に iOS プログラミングのスタンフォード コースを見ていますが、そこで彼はドット表記法を広範囲に使用しています。あなたは何をお勧めします?個人的にはブラケット記法の方が好きです。

このコードをブラケット表記に変換する方法を教えてください。

self.display.text = [self.display.text stringByAppendingString:digit];

私が理解しているように、次のようにする必要があります。

[[self display] setText]:[[[self display] text] stringByAppendingString:digit];

それが正しいか?

4

3 に答える 3

62

これは個人の選択の問題です。ドット表記は、C スタイルの構造要素アクセスに似ているため、メッセージが送信されている (メソッドが呼び出されている) ことが不明確になると主張する人もいます。議論の反対側は、ドット表記の方が入力しやすく、読みやすく、簡潔であるということです。

ドット表記が導入される前 (Objective-C 2.0) から Objective-C を書いてきた者として、私はどちらの側の議論も理解できますが、ドット表記を自分で使用することを好みます。そうは言っても、Objective-C を使い始める人にとっては、コンパイル時にドット表記の構文が標準のアクセサー メソッド呼び出しに変換されることを理解することが重要だと思います。Big Nerd Ranch の本の著者もおそらく同様の態度を持っていると思います。それが、本でブラケット表記を使用することにした大きな理由です。

要するに、あなたが一番好きなことをしてください。どちらも有効であり、どちらを選択するかは基本的にスタイルの問題です。どちらを選択しても、どちらのスタイルでも同等のコンパイル済みコードが生成されることを理解しておいてください。

編集:ドット表記をブラケット構文に変換することについての質問に答えるのを忘れていました。あなたは近いですが、あなたが書いたものは間違っていて、実際にはコンパイルされません. 次のようになります[[self display] setText:[[[self display] text] stringByAppendingString:digit]]。もし私がそれを書いていたら、それを 2 行に分けます (まあ、実際にはドット表記を使用します):

NSString *stringWithDigit = [[[self display] text] stringByAppendingString:digit];
[[self display] setText:stringWithDigit];

編集 2: この回答を書いてから 3 年以上が経ちました。-[NSArray count]最近、非常に多くの Apple フレームワーク クラスで、おそらく Swift の相互運用性を高めるために、以前は通常のメソッドが @properties (例: ) に変換されていました。これにより、以前よりもさらに自由にドット表記を使用するようになりました。

于 2012-07-13T16:19:49.740 に答える
12

これが私の意見です:

プロパティを扱うときは常にドット表記を使用する必要があります。書くのが速いだけでなく(self.fooの文字数は[short foo]よりも少ない)、さらに重要なことに、連鎖メッセージを理解しやすくします。例えば:

self.myTextField.text.length

より理解しやすい

[[[self myTextField] text] length]

さらに、句読点を台無しにする可能性が低くなります(正しい数の角かっこがあることを確認するのは、多くの場合苦痛です)。

しかし、他の人が上で述べたように、最終的には個人的な意見です。

于 2012-07-13T17:01:41.437 に答える