Objective-C:检索 Class 实例的超类的首选方法

发布于 2024-11-30 14:08:35 字数 262 浏览 0 评论 0原文

我想知道以下两种方法中哪一种是检索 Class 变量的超类的正确方法或首选方法:

  1. Class getSuperclass(Class cls) { return [cls superclass]; }

  2. Class getSuperclass(Class cls) { return class_getSuperclass(cls); } }

I am wondering which of the two following methods is the correct or preferred one to retrieve the superclass of a Class variable:

  1. Class getSuperclass(Class cls) { return [cls superclass]; }

  2. Class getSuperclass(Class cls) { return class_getSuperclass(cls); }

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

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

发布评论

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

评论(3

若有似无的小暗淡 2024-12-07 14:08:35

好吧,文档关于class_getSuperclass()< /代码> 说这个:

你通常应该使用 NSObject 的超类方法而不是这个
功能

所以,我会选择 1 号门。

Well, the docs on class_getSuperclass() say this:

You should usually use NSObject‘s superclass method instead of this
function

So, I'd go with door #1.

当梦初醒 2024-12-07 14:08:35

接受的答案在技术上是正确的(是的,这就是文档所说的),但它是一个错误的答案。

[*超类]存在于属于以下对象子类的对象中
NSObject。

是的,这是您日常使用的大部分课程。

然而...您可能会遇到许多类,它们不是 NSObject 子类。

简单的例子:如果您迭代“所有加载的类”(例如使用 objc_getClassList),那么如果您使用 [Class superclass] 方法,许多返回的类将使您的应用程序崩溃。

The accepted answer is technically correct (yes, that's what the docs say), and yet it's an incorrect answer.

[* superclass] only exists for objects that are subclasses of
NSObject.

Yes, that's most of the classes you use day to day.

However ... there are many classes you might encounter which are not NSObject subclasses.

Easy example: if you iterate over "all loaded classes" (e.g. using objc_getClassList), then many of the returned classes will crash your app if you use the [Class superclass] method.

虐人心 2024-12-07 14:08:35

我确信它们是完全相同的,这意味着 NSObjectsuperclass 是通过 class_getSuperclass 实现的。我不确定,但我敢打赌,一定要喝啤酒。

I am positive they are absolutely identical, meaning that NSObject's superclass is implemented via class_getSuperclass. I am not sure, but I'd bet a beer on it.

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