gpt4 book ai didi

objective-c - 动态类型、Objective-C,它是如何工作的?

转载 作者:太空狗 更新时间:2023-10-30 03:23:33 25 4
gpt4 key购买 nike

我对 Objective-C 中的动态类型是如何工作的很感兴趣。我一直在研究“id”类型,我知道它的作用以及如何使用它,但我很好奇......这些功能是如何在幕后实现的?

您无法在编译时确定/解决任何问题,只能在运行时进行。我想它可以简单地指向内存中某个对象的第一个字节,但是类签名是如何存储的呢?它如何知道它当前指向的是什么以及它如何为所指向对象的类实现各种 getter?

最佳答案

“在引擎盖下”,可以这么说,所有 Objective-C 对象都是 C 结构,带有指向表示其类型的 Class 对象的指针。 id 是指向最基本结构的指针,它看起来像这样:

struct objc_object {
Class isa;
}

id 被编译器特殊对待,因为编译器不会像您使用强类型变量时那样警告您该对象可能不会响应任何选择器。

当您在任何对象上调用一个方法时,它会遵循指向 Class 对象的 isa 指针,并在该 Class 对象中查找您尝试调用的方法的选择器的实现函数。

关于objective-c - 动态类型、Objective-C,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5555855/

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