2011-02-10 9 views
5

Iは、(記号で)@の次の使用を知っている:Objective-Cは@記号の意味は何ですか?

"のmyString" @は、 - いくつかを識別するために使用される - Objective-CのNSStringのではなく、標準のC列

@keywordを示すために使用されます@implementation、@synthesize、@class、@interfaceなどの客観的なキーワードc

以下の文脈では、@KEYNAMEの意味は何ですか?

[SFHFKeychainUtils storeUsername:@KEYNAME andPassword:[NSString stringWithUTF8String:b64data] forServiceName:@"default" updateExisting:YES error:&ter_ror]; 

@は他にも意味がありますか?

+0

このコードはどこから来たのですか? – BoltClock

+0

私が考えることができるのは、それがカスタムマクロだということだけです。 – Wevah

+3

実際には、KEYNAMEが#DEFINEを通常のCスタイルの文字列リテラルにすると、@は単に "" myString "のようにobj-C NSStringリテラルに変換します。 – rgeorge

答えて

7

コードスニペットの意味では何も意味しません。それは構文エラーで失敗します。

Obj-Cキーワードと定数文字列で@が使用されている理由は、@はCのトークンの一部として使用する有効な文字ではないため、Obj-CはCの厳密なスーパーセットです。すべての有効なCコードは有効なObj-Cコードなので、Obj-Cは有効なCで表示された可能性のあるキーワードを取ることはできません。@はトークンでは有効ではないので、Obj-すべてのキーワードを開始し、衝突について心配する必要はありません。

他の可能な意味については

、あなたが省略いくつかのキーワードのような@protocol@dynamic@private@protected@public@selector、および@encodeがあります。

+2

'#define KEYWORD"に文字列 "'がある場合、構文エラーではありません。 '@ package'と' @ compatibility_alias'もあります。 –

+0

@Dave:文字列として定義されていました – Casebash