iOS解决objc_msgSend报错问题

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9
  • 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 O...
    专业男神经阅读 4,406评论 0 2
  • 早晨三点半就从家出发,赶往机场。孩子们兴致勃勃地来到机场。 在飞机上。 座了三个小时飞机,终于到达呼伦贝尔大草原机...
    哪凉快去哪呆着去阅读 1,607评论 0 0
  • ༈ ས་ག་ཟླ་བའི་ཚེས་༢༩ཉིན་ནི་རྗེ་བཙུན་བསྟན་པའི་འཁོར་ལོ་བསམ་བ...
    单珍益西阅读 3,382评论 0 0
  • 电车没电了,需要充电;手机没电了,需要充电;知识更新太快,我们也需要充电。 两天的经典诵读学习,充电很多,...
    行走的教育阅读 2,600评论 0 1

友情链接更多精彩内容