iOS面试题02_runtime

Runtime其实就是c、c++、汇编实现的api,调用OC中的方法,其实就是调用runtime的api方法,进而实现c语言函数的调用。

运行时特性:向编译后的类添加方法,转发消息,交换方法等。
核心功能:1>.把C中的结构体封装成OC中的类。2>.执行OC方法 消息机制 trigger执行c函数。

在程序运行过程中,动态的创建类,动态添加、修改这个类的属性和方法;

遍历一个类中所有的成员变量、属性、以及所有方法
消息传递、转发

Screen Shot 2020-09-07 at 11.56.11 PM.png

Screen Shot 2020-09-08 at 4.19.22 PM.png

Runtime的内容

Screen Shot 2020-09-08 at 4.33.18 PM.png

1.数据结构

(1).id就是实例对象 对应runtime中 objc_object结构体
里面的isa指向Class 类对象

(2).Class(类对象)对应runtime中的objc_class结构体---->objc_object


Screen Shot 2020-09-08 at 5.52.31 PM.png

(3).isa指向

Screen Shot 2020-09-08 at 4.48.54 PM.png

2.实例对象,类对象,元类对象

Screen Shot 2020-09-08 at 10.12.08 PM.png

3.消息传递

Screen Shot 2020-09-08 at 10.33.17 PM.png

4.消息转发机制(当没有实现方法时候触发)

Screen Shot 2020-09-08 at 10.44.52 PM.png

5.Method Swizzling(交换两个方法的实现)

Screen Shot 2020-09-08 at 11.01.04 PM.png

6.动态添加方法

Screen Shot 2020-09-08 at 11.07.30 PM.png

你可能感兴趣的:(iOS面试题02_runtime)