gpt4 book ai didi

objective-c - 什么是类?

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:19 25 4
gpt4 key购买 nike

来自标题:

typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;

我确实知道 id 是什么。它是一个只有一个成员的结构:isa,来自 Class 类型。 Class 被重定向到 obj_class,或者什么?而 obj_class 似乎是一个僵尸。无法弄清楚它是什么。那么现实中的Class是什么?只是一个普通的旧结构?里面有什么?

最佳答案

是的,Class 是一个 struct,它包含特定类所需的所有信息。它是您如何在 C 等默认不允许的环境中实现面向对象的范例。

我建议你看看Object-Oriented Programming with ANSI C (PDF),它以非常复杂的方式解释了如何在 C 中实现面向目标。

通常 Class 结构将包含如下内容:

    Class super_class   
const char *name
long version
long info
long instance_size
struct objc_ivar_list *ivars
struct objc_method_list **methodLists
struct objc_cache *cache
struct objc_protocol_list *protocols

我指的是 ObjectiveC 本身(在 /usr/include/objc/runtime.h 中)。这就是 UNTIL ObjC 2.0 类的定义方式。这只是给你一个想法..

需要此结构以允许 RTTI、动态调用和继承,否则您将不需要知道您在运行时使用的是哪个对象(具有指向其 Class 定义的指针)。

请记住,ObjC 是 C 的超集,因此它的每个功能都通过在其上构建复杂的 OOP 来利用 C。

关于objective-c - 什么是类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2976579/

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