gpt4 book ai didi

Objective-C 使用动态绑定(bind),但是如何呢?

转载 作者:太空狗 更新时间:2023-10-30 03:57:07 26 4
gpt4 key购买 nike

我知道 Objective-C 对所有方法调用都使用动态绑定(bind)。这是如何实现的? objective-c 是否在编译之前“转换为 C 代码”并且只对所有内容使用 (void*) 指针?

最佳答案

从概念上讲,发生的事情是有一个调度程序库(通常称为 Objective C 运行时),编译器会像这样转换:

[myObject myMethodWithArg:a andArg:b ];

进入

//Not exactly correct, but close enough for this
objc_msgSend(myObject, "myMethodWithArg:andArg:", a, b);

然后运行时处理所有绑定(bind)和分派(dispatch),找到合适的函数,并使用这些参数调用它。简单地说,您可以将其视为散列查找;当然,实际情况要复杂得多。

还有很多与方法签名等相关的问题(C 不对类型进行编码,因此运行时需要处理它)。

关于Objective-C 使用动态绑定(bind),但是如何呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697093/

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