131

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

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

我发现object_getClassName(id obj)了,但这需要将实例传递给它,在我的情况下,这是不必要的工作。

那么如何从类对象而不是实例中获取字符串?

4

3 回答 3

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

您甚至可以以另一种方式返回:

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
于 2010-02-25T06:04:04.527 回答
2

这是一种不同的方法,只需稍微少一点打字:

NSString *name = [NSArray description];
于 2012-12-28T22:56:47.943 回答
2

考虑这个替代方案:

const char *name = class_getName(cls);

它要快得多,因为它不必分配 NSString 对象并将 ASCII 转换为任何NSString表示形式。就是这样NSStringFromClass()实现的。

于 2017-09-26T18:11:59.127 回答