私は最近、最新の Objective-C について学んでいて、NSNumber
リテラルの素晴らしい新しい構文を使い始めました。読んだ後、実際にはNSNumber
sを作成する方法が 2 つあります。
// NSNumber literal
NSNumber *a = @42;
// Boxed expression
NSNumber *a = @(42);
最終的な結果は同じです (どちらもNSNumber
値 42 の を生成します) が、単純な数値定数のボックス式でリテラルを使用する理由はありますか?
箱入りの表現を好む 2 つのスタイル上の理由を見ることができます。
- 特に数値が負またはマクロの場合、視覚的に解析しやすくなります (Xcode 構文の強調表示では、
@-1
またはが正しく色付けされません@INT_MAX
)。 - かっこを追加することなく、後で必要に応じて非定数式に簡単に変更できます。「将来の証明」のために単一行の if ステートメントに中括弧を追加することに関する議論と同様です。
しかし、リテラルに固執する否定的な理由や理由はありますか? Clang ページのボックス式のセクションには、パフォーマンスの低下やその他の悪影響を示すものは何も記載されていません。
それでは、これらの単純な数値定数の場合、これは単なるスタイルのケースでしょうか?