美文网首页
Object-c之objc_msgSend

Object-c之objc_msgSend

作者: xgou | 来源:发表于2016-04-08 16:08 被阅读79次

周知,Object-c他的方法是通过消息转发来实现的,其底层就是是objc_msgSend,所以我们的所有selector都可以通过objc_msgSend来直接分发消息。

但如果面对

- (void)write;

我们直接去写objc_msgSend([self class],@selector(write)),其实编译器是过不了的,因为objc_msgSend的定义OBJC_EXPORT void objc_msgSend(void /* id self, SEL op, ... */ )是这样的,就是不需要传参数,如果你那样写了,会过不了语法分析的。所以只能强制转下这个objc_msgSend如:

((void(*)(id,SEL))objc_msgSend)([self class],@selector(write));

这样才行可以。别的就类推了。

相关文章

网友评论

      本文标题:Object-c之objc_msgSend

      本文链接:https://www.haomeiwen.com/subject/etmvlttx.html