简介
我们都知道OC的底层是通过runtime来进行消息发送的,而runtime是由汇编、C、C++提供给OC运行时的功能的一套api。
方法的本质是什么?
首先我们创建一个Person类,并且在Person里面定义一个sayHello方法,然后在main函数初始化Psreson并调用sayHello方法。最后打开终端,并进入到当前main.m的上一级文件夹,用clang将main.m编译成main.cpp(clang -rewrite-objc main.m)。打开main.cpp,并且看到最下面代码:
objc_msgSend的实践
-
首先我们在Build Settings里面关闭一下严格核查,否则会出现编译参数的问题
-
模拟4种消息发送
总结
方法的本质就是objc_msgSend。