objc_msgSend的用法

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);

你可能感兴趣的:(IOS)