Objective-C class-> string like: [ NSArray className ]->@“ NSArray”

我尝试从类对象本身获取类的字符串名称。

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

我已经找到了 object_getClassName(id obj),但是这需要向它传递一个实例,在我的例子中,这是不必要的工作。

那么我怎样才能从类对象和 没有实例中获得一个字符串呢?

59855 次浏览
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()的实现方式。