您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页Object-c之objc_msgSend

Object-c之objc_msgSend

来源:二三娱乐

周知,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));

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

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务