在Apple的《 ObjC运行时指南》中,它描述了objc_msgSend()
函数对动态调度的作用:
不同的类,它找到的精确过程有所不同
取决于接收器的类别。
该方法。
在第二步中,我感到困惑,其中提到了“接收对象(指向其数据的指针)
那是什么?
有人可以给我说明一下吗?
最佳答案
这将对其进行详细说明:http://www.friday.com/bbum/2009/12/18/objc_msgsend-part-1-the-road-map/
简而言之,每个Objective-C方法实际上都是一个C函数,具有两个强制性参数,然后将任何参数传递给该方法。
即这个:- (void) foo:sender;
- (void) foo:(id)sender;
确实是这个C函数:
void foo(id self, SEL _cmd, id sender);
指向数据的指针是
self
参数。通过指向对象的指针,编译器生成对self
的任何实例变量的所有引用。关于ios - 将objc_msgSend()传递给“收件人数据的指针”是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21219177/