36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
struct objc_sparsearray *dtable;
Class *subclass_list;
void *sibling_class;
struct objc_protocol_list *protocols;
void *gc_object_type;
unsigned long abi_version;
void *ivar_offsets;
void *properties;
};
struct objc_object {
Class isa;
};
struct objc_selector {
|
|
>
>
>
>
>
>
>
>
>
|
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
struct objc_sparsearray *dtable;
Class *subclass_list;
void *sibling_class;
struct objc_protocol_list *protocols;
void *gc_object_type;
unsigned long abi_version;
void *ivar_offsets;
struct objc_property_list *properties;
};
enum objc_abi_class_info {
OBJC_CLASS_INFO_CLASS = 0x001,
OBJC_CLASS_INFO_METACLASS = 0x002,
OBJC_CLASS_INFO_NEW_ABI = 0x010,
OBJC_CLASS_INFO_SETUP = 0x100,
OBJC_CLASS_INFO_LOADED = 0x200,
OBJC_CLASS_INFO_INITIALIZED = 0x400
};
struct objc_object {
Class isa;
};
struct objc_selector {
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
unsigned offset;
};
struct objc_ivar_list {
unsigned count;
struct objc_ivar ivars[1];
};
#ifdef __OBJC__
@interface Protocol
{
@public
#else
typedef struct {
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
unsigned offset;
};
struct objc_ivar_list {
unsigned count;
struct objc_ivar ivars[1];
};
#define OBJC_PROPERTY_READONLY 0x01
#define OBJC_PROPERTY_GETTER 0x02
#define OBJC_PROPERTY_ASSIGN 0x04
#define OBJC_PROPERTY_READWRITE 0x08
#define OBJC_PROPERTY_RETAIN 0x10
#define OBJC_PROPERTY_COPY 0x20
#define OBJC_PROPERTY_NONATOMIC 0x40
#define OBJC_PROPERTY_SETTER 0x80
struct objc_property {
const char *name;
unsigned char attributes;
BOOL synthesized;
struct {
const char *name;
const char *type;
} getter, setter;
};
struct objc_property_list {
unsigned count;
struct objc_property_list *next;
struct objc_property properties[1];
};
#ifdef __OBJC__
@interface Protocol
{
@public
#else
typedef struct {
|