THIS IS ELLIE

오브젝티브씨 isKindOfClass 본문

개발/Objective-C

오브젝티브씨 isKindOfClass

Ellie Kim 2020. 4. 6. 11:38

isKindOfClass는 해당 클래스의 인스턴스인지 또는 해당 클래스에서 상속된 클래스 인스턴스인지 확인할 때 사용합니다.

YES, NO인 부울 값을 리턴해줍니다.

 

아래와 같이 선언되어 있습니다.

- (BOOL)isKindOfClass:(Class)aClass;

파라미터 aClass는 검사할 Objective-C 클래스를 나타내는 클래스 오브젝트입니다.

aClass 해당 클래스이거나 상속받은 클래스 인스턴스면 YES를 리턴하고, 아니면 NO를 리턴합니다.

 

예를 들어서

아래의 코드는 YES를 리턴합니다. Foundation에서 NSArchiver클래스는 NSCoder을 상속받기 때문입니다.

NSMutableData *myData = [NSMutableData dataWithCapacity:30];
id anArchiver = [[NSArchiver alloc] initForWritingWithMutableData:myData];
if ( [anArchiver isKindOfClass:[NSCoder class]] )
    ...

하지만 아래와 같이 클래스 클러스트로 표시되는 객체에서 이 메소드를 사용하려면 주의해야 합니다.

// DO NOT DO THIS!
if ([myArray isKindOfClass:[NSMutableArray class]])
{
    // Modify the object
}

클래스 클러스터의 특성으로 인해 예상한 유형의 오브젝트가 아닐 수 있기 때문입니다.

 

스위프트에서는 is로 클래스를 확인할 수 있습니다.

if touch.view is UIPickerView {
    // touch.view is of type UIPickerView
}

 

https://developer.apple.com/documentation/objectivec/1418956-nsobject/1418511-iskindofclass?language=objc

반응형

'개발 > Objective-C' 카테고리의 다른 글

문자열 포맷 지정  (0) 2020.04.22
Objective-C 프로퍼티 속성  (0) 2020.03.26
KVO (Key Value Observing)  (0) 2020.02.24
Objective-C id 타입  (0) 2020.02.20
조건문와 반복문  (0) 2020.02.12