Objective-C 类 ->字符串如:[NSArray className] -> @“NSArray”

发布于 2024-08-23 02:00:24 字数 218 浏览 6 评论 0原文

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

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

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

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

I am trying to get a string name of a class from the class object itself.

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

I have found object_getClassName(id obj) but that requires an instance be passed to it, and in my case that is needless work.

So how can I get a string from a class object, and not an instance?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狼性发作 2024-08-30 02:00:25
NSString *name = NSStringFromClass ([NSArray class]);

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

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
NSString *name = NSStringFromClass ([NSArray class]);

You can even go back the other way:

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
爱给你人给你 2024-08-30 02:00:25

这是一种稍微减少输入量的不同方法:

NSString *name = [NSArray description];

Here's a different way to do it with slightly less typing:

NSString *name = [NSArray description];
亣腦蒛氧 2024-08-30 02:00:25

考虑这个替代方案:

const char *name = class_getName(cls);

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

Consider this alternative:

const char *name = class_getName(cls);

It's much faster, since it doesn't have to alloc NSString object and convert ASCII to whatever NSString representation is. That's how NSStringFromClass() is implemented.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文