Posts List

iOS Runtime探究系列1 - 消息转发底层原理

iOS Runtime探究系列1 - 消息转发底层原理

本篇主要通过对ios 底层库 objc(runtime)的探究,浅析OC中消息转发的过程 [TOC] 1. oc 中的方法调用是如何转化成消息的? 我们熟知的OC中的方法调用是通过方括号的,如下: [instance1 testMsgSend] 底层是将这种调用方式转化成消息机制了,这一步是依赖于编译器的,接下来我们通过clang的 -rewrite-objc 来看下编译成C++代码的结果。 ​ main.m 文件内容 #import <UIKit/UIKit.h> #import "AppDelegate.h" #import "LWXClass.h" int main(int argc, char * argv[]) { NSString * appDelegateClassName; @autoreleasepool { // Setup code that might create autoreleased objects goes here. appDelegateClassName = NSStringFromClass([AppDelegate class]); LWXClass *instance1 = [[LWXClass alloc] init]; [instance1 testMsgSend]; } return UIApplicationMain(argc, argv, nil, appDelegateClassName); } 下面我们通过clang将.m文件编译成C++文件: xcrun -sdk iphonesimulator clang -rewrite-objc main.

技术文章

iOS 相关 iOS Runtime探究系列1 - 消息转发底层原理