objc_msgSend 的定义为:为某个类对象发送消息,并返回一个值。
objc_msgSend(id _Nullable self, SEL _Nonnull op, ...)
第一个参数:消息接受的对象实例
第二个参数:执行的方法
... 其他参数
我们可以吧OC代码通过编译选项-rewrite-objc选项转换为c代码(objc_msgSend)
ClassA的有个方法为method
- (void)method:(int)arg{
}
ClassA *obj = [[ClassA alloc]init];
[obj method:10];
转换为objc_msgSend方法:
ClasssA *obj = objc_msgSend(objc_getClass("ClassA"),sel_registerName("alloc"));
obj = objc_msgSend(obj,sel_registerName("init"));
obj = objc_msgSend(obj,sel_registerName("method"),10);