2011-02-10 7 views
5

나는 (기호) @ 다음과 같은 용도로 알고@ 기호는 Objective-C의 의미는 무엇입니까?

"mystring에"@ - 나타 내기 위해 사용되는 목적을-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-C가이를 위해 간단하게 사용할 수 있음을 의미합니다. 모든 키워드를 시작하고 충돌에 대해 걱정하지 않아야합니다.

다른 가능한 의미에 관해서는

, 당신은 생략 몇 가지 키워드와 같은 @protocol, @dynamic, @private, @protected, @public, @selector@encode이있다.

+2

'#define KEYWORD "문자열이"''이면 구문 오류가 아닙니다. '@ package'와'@ compatibility_alias'도 있습니다. –

+0

@Dave : 문자열로 정의되었습니다. – Casebash