私は Objective-C にはまったく慣れていませんが、C/C++ の経験があるため、奇妙な点がいくつかあります。@
Objective-C の基本を示すチュートリアルを読んでいますが、著者は、文字列の前にを含めるのを忘れていると警告しています。だから、例えば
"Hello"
対@"Hello"
ただし、著者は@
が必要な理由や構文上の意味については説明していません。それが私が今尋ねていることです、それは何をし@
ますか?
私は Objective-C にはまったく慣れていませんが、C/C++ の経験があるため、奇妙な点がいくつかあります。@
Objective-C の基本を示すチュートリアルを読んでいますが、著者は、文字列の前にを含めるのを忘れていると警告しています。だから、例えば
"Hello"
対@"Hello"
ただし、著者は@
が必要な理由や構文上の意味については説明していません。それが私が今尋ねていることです、それは何をし@
ますか?
それはNSString
文字通りです。がなければ、 のようなオブジェクトではない を@
作成することになります。char *
NSString
Objective-C は C のスーパー セットであるため、"hello"
は C 文字列 ( const char *
) であることを知っておく必要があります。
@"hello"
は何か違う、それはNSString *
です。NSString
は ObjC オブジェクトであり、メッセージを送信して同様のオブジェクトを使用できます。C文字列ではできません。
たとえば、次の 2 つの文字列から長さを取得するには、次のようにします。
NSString *objcStr = @"hello";
int len = [objcStr length];
const char * cStr = "hello";
len = strlen(cStr);
の使用は@
、Objective C に固有であり、生の C にはない機能を指定しNSString
ます@
。 Objective C オブジェクトではなく、生の C エンティティです。