class、object_getClass、objc_getClass、objc_getMetaClass区别

在Objective-C的类型结构中,有几个比较重要的概念:Object(实例),Class(类),Metaclass(元类),Rootclass(根类),Rootclass‘s metaclass(根元类),且这些都是对象。

对于class、object_getClass、objc_getClass这三种方法,全部返回CLass类对象;objc_getMetaClass方法返回元类对象。


直接代码测试:

打印结果:

总结:

1、如果是instance实例对象,返回class对象;

2、如果是class类对象,返回meta-class对象;

3、如果是meta-class元类对象,返回NSObject(基类)的meta-class对象

4、objc_getMetaClass 获取元类MetalClass

5、objc_getClass 获取对应类Class

6、object_getClass 获取 object 的isa指针对象


二、object_getClass(obj)与[obj class]的区别

打印结果如下:

总结:

object_getClass(obj)与[obj class]打印结果一样;获得的isa指针指向的类对象(即指向类对象的指针,即对应的类)。

希望以上内容能帮到你们,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容