gpt4 book ai didi

ios - objc_msgSend() 传递了 "a pointer to the reciever' s 数据是什么意思”?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:28:54 25 4
gpt4 key购买 nike

在 Apple 的 ObjC 运行时指南中,它描述了 objc_msgSend() 函数对动态调度的作用:

  1. It first finds the procedure (method implementation) that the selector refers to. Since the same method can be implemented differently by separate classes, the precise procedure that it finds depends on the class of the receiver.
  2. It then calls the procedure, passing it the receiving object (a pointer to its data), along with any arguments that were specified for the method.
  3. Finally, it passes on the return value of the procedure as its own return value.

我在第二步就搞糊涂了,里面提到了“接收对象(指向它的数据的指针)”

那是什么?

谁能给我一个例子来澄清一下?

最佳答案

这里会详细解释: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() 传递了 "a pointer to the reciever' s 数据是什么意思”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com