[objective-c] Objective-C 클래스-> 문자열 : [NSArray className]-> @“NSArray”

클래스 객체 자체에서 클래스의 문자열 이름을 가져 오려고합니다.

// For instance
[NSArray className]; // @"NSArray"

나는 그것을 찾았 object_getClassName(id obj)지만 인스턴스가 전달되어야하며 내 경우에는 불필요한 작업입니다.

그렇다면 인스턴스가 아닌 클래스 객체에서 문자열을 어떻게 얻을 수 있습니까?



답변

NSString *name = NSStringFromClass ([NSArray class]);

다른 방법으로 되돌아 갈 수도 있습니다.

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];


답변

타이핑을 약간 줄이면 다른 방법이 있습니다.

NSString *name = [NSArray description];


답변

이 대안을 고려하십시오.

const char *name = class_getName(cls);

NSString 객체를 할당하고 ASCII를 NSString표현으로 변환 할 필요가 없으므로 훨씬 빠릅니다 . 그것이 NSStringFromClass()구현되는 방법 입니다.


답변