iOS解决objc_msgSend报错问题

2017-10-25  本文已影响0人  __life__

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类型

上一篇 下一篇

猜你喜欢

热点阅读