Class和id-01

1.结构体 objc_class

 1 struct objc_class {
 2     Class isa  OBJC_ISA_AVAILABILITY;
 3 
 4 #if !__OBJC2__
 5     Class super_class                                        OBJC2_UNAVAILABLE;
 6     const char *name                                         OBJC2_UNAVAILABLE;
 7     long version                                             OBJC2_UNAVAILABLE;
 8     long info                                                OBJC2_UNAVAILABLE;
 9     long instance_size                                       OBJC2_UNAVAILABLE;
10     struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;
11     struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;
12     struct objc_cache *cache                                 OBJC2_UNAVAILABLE;
13     struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;
14 #endif

2.指向结构objc_class的指针类型 Class

3.结构体objc_object里面包含成员变量 Class isa

4.指向结构体objc_object的指针类型 id

 1 #if !OBJC_TYPES_DEFINED
 2 /// An opaque type that represents an Objective-C class.
 3 typedef struct objc_class *Class;
 4 
 5 /// Represents an instance of a class.
 6 struct objc_object {
 7     Class isa  OBJC_ISA_AVAILABILITY;
 8 };
 9 
10 /// A pointer to an instance of a class.
11 typedef struct objc_object *id;
12 #endif
原文地址:https://www.cnblogs.com/fkunlam/p/4377613.html