关于Objc中的类和元类

最近又翻开关于类和元类这个有点鸡生蛋的问题(~~),到底这个元类和类是什么关系呢?我找到那张有名的class diagram图的原文,查看了一下。

类和元类

Classes and metaclasses这篇文章主要为我们阐述在OC面向对象思想中,对象,类和元类的关系,类作为对象的角度去看OC是如何管理对象、类、元类之间的关系的。

首先上图:

class diagram.png

如上图,对象是由按照类所定义的各个属性和方法“制造”的,类作为对象的模板,也可看成是对象。正如工厂里面的模子也是要专门制作模子的机器生产,元类(meta class)就是设计、管理(class)的角色。所以图上直观的表现出类和元类平行的父类链,表明实例方法和类方法都是并行继承的,每个对象都响应了根类的方法。

注意点

需要弄清的有两点:
1. 所谓的元类就是根类的元类的一个实例,而根元类的实例就是它自己。
2. 根元类的父类是根类。

类的图解.png

关于这两点,原文是这样描述的:

A metaclass is an instance of the root class's metaclass; the root metaclass is itself an instance of the root metaclass.

所谓的元类就是根类的元类的一个实例。

第二点: And the root metaclass's superclass is the root class,就说名根元类(Root Class meta)的父类是根类(Root Class class).可以看到图中的根元类(Root Class meta)的superclass是指向根类(Root Class class)的。

后续关注

  • isa指针的作用
  • 类在堆上的内存分配

总结

理解类与元类的关系有利理解OC面向对象的思想,了解类的继承关系。对类这个概念更加熟悉。

如有不对,欢迎拍砖~

参考文章:

Classes and metaclasses

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,899评论 0 9
  • 翻译参考链接:[objc 解释]:类和元类 英文原文:[objc explain]: Classes and me...
    kakukeme阅读 4,669评论 0 51
  • 首先说明,这篇文章几乎都是抄录的别人的博客,简书文章,在此总结,只是为了方便记忆和以后阅读,如果有什么失礼的地方,...
    LiYaoPeng阅读 10,615评论 1 14
  • 参考文章 清晰理解Objective-C元类object_getClass(obj)与[obj class]的区别...
    黑化肥发灰阅读 4,654评论 0 51
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 6,634评论 0 7

友情链接更多精彩内容