Objective-C에서 객체가 어떤 클래스에 있는지 테스트하려면 어떻게 해야 합니까?
Objective-C에서 객체가 특정 클래스의 인스턴스인지 테스트하려면 어떻게 해야 합니까?객체 a가 클래스 b의 인스턴스인지 클래스 c의 인스턴스인지 확인하려고 합니다. 어떻게 해야 합니까?
개체가 클래스 a의 인스턴스인지 테스트하는 방법
[yourObject isKindOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of
// given class or an instance of any class that inherits from that class.
또는
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
개체의 클래스 이름을 가져오려면NSStringFromClass
함수:
NSString *className = NSStringFromClass([yourObject class]);
or objective-c 런타임 api의 c-function:
#import <objc/runtime.h>
/* ... */
const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);
편집: In Swift
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
사용할 수도 있습니다.
NSString *className = [[myObject class] description];
모든 NS 객체에 대해
의미하는 것은 Apple 설명서의 KindOfClass입니다.
클래스 클러스터로 표시되는 개체에 이 메서드를 사용할 때는 주의하십시오.클래스 클러스터의 특성으로 인해 반환되는 개체가 항상 예상한 유형이 아닐 수 있습니다.클래스 클러스터를 반환하는 메서드를 호출하는 경우 메서드에서 반환하는 정확한 유형이 해당 개체에 대해 수행할 수 있는 작업을 가장 잘 나타냅니다.예를 들어 메소드가 NSArray 개체에 포인터를 반환하는 경우 다음 코드에 표시된 것처럼 배열이 변경 가능한지 확인하기 위해 이 메소드를 사용해서는 안 됩니다.
// DO NOT DO THIS!
if ([myArray isKindOfClass:[NSMutableArray class]])
{
// Modify the object
}
코드에서 이러한 구조체를 사용하는 경우 실제로 수정해서는 안 되는 개체를 수정해도 괜찮다고 생각할 수 있습니다.이렇게 하면 개체가 변경되지 않을 것으로 예상되는 다른 코드에 문제가 발생할 수 있습니다.
특정 클래스를 확인하려면 다음을 사용할 수 있습니다.
if([MyClass class] == [myClassObj class]) {
//your object is instance of MyClass
}
클래스의 이름을 알고 싶으면 전화하세요:-
id yourObject= [AnotherClass returningObject];
NSString *className=[yourObject className];
NSLog(@"Class name is : %@",className);
실행 시간도 확인할 수 있습니다.코드와 내부(lldb) 콘솔 쓰기에 중단점 하나를 삽입합니다.
(lldb) po [yourObject class]
이렇게.
언급URL : https://stackoverflow.com/questions/2055940/how-do-i-test-which-class-an-object-is-in-objective-c
'programing' 카테고리의 다른 글
다트에서 두 개의 목록을 결합하려면 어떻게 해야 합니까? (0) | 2023.04.26 |
---|---|
엑셀 파일 작업을 위한 간단하고 신뢰할 수 있는 C 라이브러리는 무엇입니까? (0) | 2023.04.26 |
변수에 표준 오차를 저장하는 방법 (0) | 2023.04.26 |
문자열 형식을 사용하여 WPF XAML 바인딩에 문자열 추가 (0) | 2023.04.26 |
컨트롤러 기반 대 컨트롤러 for ASP에서 파생된 이유NET Core 웹 API? (0) | 2023.04.26 |