iOS底层原理——Objective-C的本质

2021-08-28  本文已影响0人  秃头少女_

一、Objective-C的本质

1、OC的本质

OC代码的底层实现其实都是C/C++代码,编译器先把OC代码转换成C/C++代码,接着转成汇编语言,最后转成机器语言最终运行在手机上;所以OC代码的本质其实就是C/C++代码;


OC对象转换过程

2、Objective-C的对象、类主要是基于C/C++的什么数据结构实现的?

Objective-C的面向对象都是基于C/C++的数据结构实现的

3、手动将Objective-C代码转换成C/C++代码

其中:main.m是要编译的文件(带后缀名)main.cpp是要生成的C++文件;

二、OC对象的分类

1.instance对象(实例对象)
2.class对象(类对象)
3.meta-class对象(元类对象)

1、instance(实例对象)

instance对象就是通过类alloc出来的对象,每次调用alloc都会产生新的instance对象;
instance对象在内存中存储着信息包括:

2、class(类对象)

使用class出来的对象(类对象)
每个类在内存中有且只有一个class对象
注意:class方法返回的一直是类对象,所以哪怕这样写还是会返回类对象
Class objectMetaClass2 = [[[NSObject class] class] class];
class对象在内存中存储的信息

3、meta-class(元类对象)

objectMetaClass是NSObject的meta-class对象(元类对象),每个类在内存中有且只有一个meta-class对象
Class objectMetaClass = object_getClass(objectClass5);
meta-class对象和class对象的内存结构是一样的,但是用途不一样,在内存中存储的信息主要包括

class对象的superclass指针

meta-class对象的superclass指针

isa、superclass的总结

isa和superclass指向流程
上一篇下一篇

猜你喜欢

热点阅读