2

s を扱うときは、常に文字列の先頭にNSStringde を含める必要があります。@例えば:

NSString *string = @"Hello, World!";

stringクラスのオブジェクトですNSString

@C文字列をクラスのオブジェクトに変換するオーバーロードされた演算子である可能性があると思いましたNSString

そうですか?それとも、それは私の初心者の心の空想ですか?

4

2 に答える 2

5

@ある種のリテラルを宣言していることをコンパイラに示すインジケータです。NSString( @"") だけではなく、NSDictionary( @{})、NSArray( @[]) およびNSNumber( @1@YES) にもリテラル定義が定義されています。

于 2013-10-17T18:44:21.853 に答える
4

ここから:

@ を使用すると、Objective-C コンパイラを既存の C コンパイラに簡単に追加できます。@ は文字列リテラルを除く C のどのコンテキストでも有効ではないため、トークナイザー (コンパイラーの初期の単純なステップ) を変更して、文字列定数の外で @ 文字を探すだけにすることができます (トークナイザーは文字列リテラルを理解します)。であるため、これを区別する立場にあります)。@ が検出されると、トークナイザーは残りのコンパイラーを「Objective-C モード」にします。(Objective-C パーサーは、Objective-C コードの終わりを検出すると、コンパイラを通常の C モードに戻す責任があります)。

マニュアルから:

NSString クラスは、任意の長さの文字列を格納するための組み込みのメモリ管理、Unicode のサポート、printf スタイルの書式設定ユーティリティなど、期待されるすべての利点を持つ文字列用のオブジェクト ラッパーを提供します。ただし、このような文字列は一般的に使用されるため、Objective-C では、定数値から NSString オブジェクトを作成するための簡略表記を提供しています。この短縮形を使用するには、次の例に示すように、通常の二重引用符で囲まれた文字列の前に @ 記号を付けるだけです。

NSString *myString = @"My String\n";
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];

// Create an Objective-C string from a C string
NSString *fromCString = [NSString stringWithCString:"A C string" encoding:NSASCIIStringEncoding];
于 2013-10-17T18:48:07.663 に答える