3

Apple ObjectiveC の説明では、例を示すことで NSString が存在し、NSString リテラルが次のように記述されていることを暗示しています。

 @ "<string content>"

驚くべきことに、それが言っていることがすべてであり、これらは議論のない例にしか現れません. そのドキュメントは本当に唯一の参照ドキュメントですか?

調べてみると、役立つ情報がたくさんあると思われるこのブログを見つけました。しかし、それは正しいですか?

NSString リテラルで何を言うことができるか (構文)、およびそれが何を意味するか (セマンティクス) を正確に記述した信頼できるドキュメントはありますか? たとえば、NSString リテラルのコンテンツの構文は、C(99) 文字列リテラルの構文と同じですか? ObjectiveC++ では構文が異なりますか? 他のタイプの C99/C++ 文字列の場合と同じように、文字列リテラルの内容に幅の指定をプレフィックスとして付けることができますか、それとも NSString リテラルは 1 種類しかありませんか? ダークコーナーとは?

それとも、GCC4 と Clang の実装を調べて調べるしかありませんか?

4

1 に答える 1

2

ドキュメントとランダムなブログのどちらを選択するかを考えると、ドキュメントを信じることに傾倒します。

言うべきことがあまりないので、あまり書かれていません。 @".."静的文字列定数です。これはコンパイル時に作成され、読み取り専用でメモリにマップされる形式でバイナリに書き込まれ、NSStringインスタンス自体よりもさらに不変です (たとえば、定数 NSString は保持カウントをまったく実装しません。割り当てはありません)。

コンパイラがプレーンな古い C 文字列で使用する通常の構文を除いて、それらに関連付けられた実際の構文はありません。つまり、さまざまな文字列化ガンクなどのほとんどを行うことができます...

于 2012-05-27T18:07:58.080 に答える