Pau*_*aul 2 macos objective-c objective-c-runtime ios
在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;
Run Code Online (Sandbox Code Playgroud)
真的是这个C函数:
void foo(id self, SEL _cmd, id sender);
Run Code Online (Sandbox Code Playgroud)
指向数据的指针指的是self参数.通过指向对象的指针,编译器生成对任何实例变量的所有引用self.
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |