我正在尝试从类对象本身获取类的字符串名称。
// For instance
[NSArray className]; // @"NSArray"
我发现object_getClassName(id obj)
了,但这需要将实例传递给它,在我的情况下,这是不必要的工作。
那么如何从类对象而不是实例中获取字符串?
我正在尝试从类对象本身获取类的字符串名称。
// 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()
实现的。