iOS/Objective-C:获取元类对象的正确方法

Unh*_*lig 10 metaclass objective-c objective-c-runtime ios

以下是获取元类的正确方法?

Class myMetaClass = objc_getMetaClass("NSString");
Run Code Online (Sandbox Code Playgroud)

要么:

Class myMetaClass = object_getClass([NSString class]);
Run Code Online (Sandbox Code Playgroud)
  • 它们有什么不同吗?

  • 正如第一个回答者在这里链接的另一篇文章所述:

请告诉我为什么(????) objc_getMetaClass();会在某些情况下详细破坏.

  • 在不同场景中使用它们的正确方法.

谢谢.

deh*_*len 2

区别在于,第二个函数返回指定类的对象,第二个函数返回指定类的元类的对象...:)

\n\n

如果类未注册,它们都会调用类处理程序回调来进行第二次检查。当您调用元类函数时,您将获得返回结果。

\n\n
\n

...(但是,每个类定义都必须有一个有效的元类定义,因此无论 xe2x80x99 是否有效,总是返回元类定义。)来自:Objective-C Runtime参考

\n
\n\n

我认为您真正的问题是:类和元类之间有什么区别?\n请看一下这个精彩的解释:\n什么是 Objective-C 中的元类

\n