首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
objc_msgSend和_objc_msgForward这
[问答题]
objc_msgSend和
_objc_msgForward
这两个函数是用来做什么的?需要注意什么?一般在什么领域会用到他们俩?
添加笔记
求解答(0)
邀请回答
收藏(15)
分享
纠错
2个回答
添加回答
0
Muzzzzzy
1. objc_msgSend
objc_msgSend 是 Objective-C 消息系统的入口,它是使用汇编实现的,所有 Objective-C 的消息都会转换成使用
objc_msgSend 来进行消息发送。
一般不会直接使用
objc_msgSend 来进行方法调用,实际情况下也较少用到。
2.
_objc_msgForward
_objc_msgForward 是消息转发的入口,
它也是使用汇编实现的
。当在方法查找(loopUpImpOrForward
)时,没有查找到对应 Selector 的方法的 IMP 并且动态消息解析 (resolveInstanceMethod/resolveClassMethod)
失败的时候会返回
_objc_msgForward,代表需要
进行消息转发。通过把方法的实现指向
_objc_msgForward,可以使方法直接进行消息转发,例如 Aspect 是使用使用此技术来使 hook 的方法都进入消息转发,然后在 forwardInvocation 中来执行 AOP 部分的逻辑。JSPatch 同样也是此方式来动态的修改原方法的实现。
发表于 2020-03-28 21:32:22
回复(0)
0
牛客635313837号
obj_msgSend是发送消息
obj_msgForward是转发消息
发表于 2020-03-28 15:06:57
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
iOS工程师
安卓工程师
前端工程师
iOS
2019
百度
上传者:
小小
难度:
2条回答
15收藏
1515浏览
热门推荐
相关试题
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(3)
来自
职能类模拟题14
判断一个括号字符串是否匹配正确,如...
百度
2011
栈
Java工程师
C++工程师
评论
(34)
来自
百度2011研发工程师笔试卷
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(2)
来自
职能类模拟题14
明明的随机数
数组
评论
(3692)
来自
华为研发工程师编程题
已知a
40
=...
京东
职能
2019
财务
保险
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题