《底层02:OC对象的分类 - instance对象-class
2019-08-12 本文已影响26人
不够果断是种癌
本文参考《小码哥底层原理学习视频》。
在Objective-C中的对象,简称OC对象,主要分为以下三种:
![](https://img.haomeiwen.com/i11097195/4ca62e41079b1f0a.png)
我们底层01里面讲到的是实例对象。
接着我们首先看一下实例对象:
![](https://img.haomeiwen.com/i11097195/ec4f55d214b5141f.png)
再接下来我们看一下类对象:
01.获取类对象:
![](https://img.haomeiwen.com/i11097195/44bba07c45ce3b96.png)
02.上面这个三个对像的指针存储的内存地址是一样的吗?
![](https://img.haomeiwen.com/i11097195/e12faa75d88e5a84.png)
03.类对象里面储存哪些信息?
![](https://img.haomeiwen.com/i11097195/df4093320ad4f663.png)
最后我们看一下元类对象:
01.怎么获取元类对象?
![](https://img.haomeiwen.com/i11097195/2919ac5d40be1c68.png)
02.元类对象储存着什么?
![](https://img.haomeiwen.com/i11097195/f50f9a538584c4e3.png)
03.怎么判断一个对象是否是元类对象?
![](https://img.haomeiwen.com/i11097195/58f8a58583293a1a.png)
再接下来我们看一下objct_getClass的内存实现,老规矩同样是下载源码找到最新的源码(objc-runtime)。
![](https://img.haomeiwen.com/i11097195/92c1cbcd84b39a78.png)
接下来我们再看看objc_getClass
![](https://img.haomeiwen.com/i11097195/ec891d54781edf20.png)
深入:
![](https://img.haomeiwen.com/i11097195/4f42e244c3267e25.png)
再深入:
![](https://img.haomeiwen.com/i11097195/e12090fd61868dd2.png)
继续深入:
![](https://img.haomeiwen.com/i11097195/cb7846acfa513470.png)
再深入:
![](https://img.haomeiwen.com/i11097195/03ca3f0ba75c505d.png)
结论:你将类名传给我,我返回一个类对象给你.
最后总结一下:
![](https://img.haomeiwen.com/i11097195/098e625b432dea94.png)