Objective-C 신규 정보kindof 키워드
일부 기술 웹 사이트에서kindof는 일반적으로 범주에 사용됩니다. 예를 들어 NSArray
__kindof class_name 본뜻은 이 종류를class 로 지정하는 것입니다name 또는 classname의 하위 클래스, 컴파일러에게 둘 다 어울릴 수 있음을 알려 줍니다.현재 컴파일러 형식 검사가 일치하는 경우 C11 표준의 범용과 결합하여 사용하는 경우가 있습니다!C11의generic selection 표현식의 형식 일치는 컴파일러가 컴파일할 때 일치하기 때문에 실행할 때의 동작이 없습니다. (예를 들어 int[n] 형식이 아닌 경우)kindof class_name 형식으로 더 넓은 범위의 유형을 일치시킵니다.다음 코드는 다음과 같습니다.
@interface MyObject : NSObject
@end
@implementation MyObject
@end
@implementation ViewController
- (void)viewDidLoad {
MyObject *obj = [[MyObject alloc] init];
int x = _Generic(obj, int:0, NSString*:1, NSObject*:2, default:-1);
NSLog(@"x1 = %d", x);
x = _Generic(obj, int:0, float:1, __kindof NSObject*:2, default:-1);
NSLog(@"x2 = %d", x);
[obj release];
}
@end
컴파일러가 컴파일할 때 검사를 하기 때문에 여기 두 번째Generic에서는 NSString*을 사용할 수 없습니다. 그렇지 않으면 컴파일러는 NSString*와 를kindof NSObject* 둘 다 호환되는 유형이므로 일치 오류가 발생합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.