문제

목표 -c를 배우는 중이며 @ 기호를 계속 만납니다.예를 들어 문자열의 시작 부분이나 접근 자 메서드를 합성하는 등 다양한 시나리오에서 사용됩니다.

object-c에서 @ 기호는 무엇을 의미합니까?

도움이 되었습니까?

해결책

@ 문자는 C 또는 C ++ 식별자에 사용되지 않으므로 다른 언어의 키워드와 충돌하지 않는 방식으로 Objective-C 언어 키워드를 도입하는 데 사용됩니다. 이를 통해 언어의 "Objective"부분이 C 또는 C ++ 부분과 자유롭게 혼합 될 수 있습니다.

따라서 예외가 거의 없지만 일부 Objective-C 코드에서 @를 볼 때마다 C 또는 C ++ 구문이 아닌 Objective-C 구문을 보게됩니다.

주요 예외는 id, Class, nilNil이며, 일반적으로 그 뒤에 typedef 또는 #define가있을 수 있지만 언어 키워드로 취급됩니다. 예를 들어 컴파일러는 실제로 GC 쓰기 장벽을 생성할지 여부를 결정하는 것뿐만 아니라 선언에 적용되는 포인터 유형 변환 규칙과 관련하여 id를 특별히 처리합니다.

기타 예외는 in, out, inout, oneway, byref, bycopy입니다. 이는 분산 객체를보다 효율적으로 만들기 위해 메소드 매개 변수 및 반환 유형에 대한 스토리지 클래스 주석으로 사용됩니다. (이들은 트랜잭션을 가장 잘 직렬화하는 방법을 결정하기 위해 DO가 살펴볼 수있는 런타임에서 사용 가능한 메소드 서명의 일부가됩니다.) @property 선언, copy, retain, assign, readonly, readwrite, nonatomic, getter 내에 속성도 있습니다. , 및 setter; 이는 @property 선언의 속성 섹션 내에서만 유효합니다.

다른 팁

Objective-C 자습서 : @ 기호 에서 그 이유는다양한 키워드 앞에 : <인용구>

@를 사용하면 Objective-C 컴파일러를 기존 C 컴파일러에 쉽게 연결할 수 있습니다.@는 문자열 리터럴을 제외하고 C의 어떤 컨텍스트에서도 유효하지 않기 때문에 토크 나이저 (컴파일러의 초기 및 간단한 단계)를 수정하여 문자열 상수 외부의 @ 문자를 찾을 수 있습니다 (토큰 나이 저는 문자열 리터럴을 이해합니다., 그래서 이것을 구별 할 수있는 위치에 있습니다).@가 발견되면 토크 나이 저는 나머지 컴파일러를 "Objective-C 모드"로 설정합니다.(Objective-C 파서는 Objective-C 코드의 끝을 감지하면 컴파일러를 일반 C 모드로 되 돌리는 역할을합니다).

또한 문자열 리터럴 앞에서 보면 C에서 'char *'대신 NSString을 만듭니다.

Macrumors : Objective-C 자습서 에서 문자열 리터럴 앞: <인용구>

@ ""NSString 리터럴도 있습니다.본질적으로 NSString의 + stringWithUTF8String 메소드의 축약 형입니다.

@는 또한 C 문자열에 유니 코드 지원을 추가합니다.

매뉴얼 에서 : <인용구>

Objective-C 프레임 워크는 일반적으로 C 스타일 문자열을 사용하지 않습니다.대신 NSString 객체로 문자열을 전달합니다.

NSString 클래스는 모든 항목이있는 문자열에 대한 개체 래퍼를 제공합니다. 내장 메모리를 포함하여 기대할 수있는 이점 임의 길이 문자열 저장 관리, 유니 코드 지원, printf 스타일 형식화 유틸리티 등.그러한 문자열은 일반적으로 사용되는 Objective-C는 상수 값에서 NSString 객체 생성.이 속기를 사용하려면 당신이해야 할 일은 일반적인 큰 따옴표 문자열 앞에 다음 예와 같이 @ 기호 : 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top