1.检查是否引入头文件 #import<objc/message.h> //runtime消息机制
2.如果成功引入头文件编译还是报错, 以下有两个解决方案供选择:
(1).在项目配置文件 -> Build Settings -> Enable Strict Checking of objc_msgSend Calls 这个字段设置为 NO(默认为YES)
(2)由于objc_msgSend函数本身是无返回值无参数的函数, 所以要给它强制转换类型, 代码如下:
Person *person = [[Person alloc]init];
((void (*) (id, SEL)) (void *)objc_msgSend)(person, sel_registerName("say"));
((void (*) (id, SEL)) (void *)objc_msgSend)(person, @selector(say));
注: @selector(say) 和 sel_registerName("say") 这两个其实是一样的 都是SEL类型