📄 objc.h
字号:
} ivar_list[1]; /* Variable length structure. */} IvarList, *IvarList_t;/* * The compiler generates one (or more) of these structures for a class that * has methods defined in its specification. * * The implementation of a class can be broken into separate pieces in a file * and categories can break them across modules. To handle this problem is a * singly linked list of methods. */typedef struct objc_method Method;typedef Method* Method_t;typedef struct objc_method_list { struct objc_method_list* method_next; /* This variable is used to link a method list to another. It is a singly linked list. */ int method_count; /* Number of methods defined in this structure. */ struct objc_method { SEL method_name; /* This variable is the method's name. It is a char*. The unique integer passed to objc_msgSend is a char* too. It is compared against method_name using strcmp. */ const char* method_types; /* Description of the method's parameter list. Useful for debuggers. */ IMP method_imp; /* Address of the method in the executable. */ } method_list[1]; /* Variable length structure. */} MethodList, *MethodList_t;/* * The compiler generates one of these structures for each class. * * This structure is the definition for meta classes. By definition a meta * class is the class's class. Its most relevant contribution is that its * method list contain the class's factory methods. * * This structure is generated by the compiler in the executable and used by * the run-time during normal messaging operations. Therefore some members * change type. The compiler generates "char* const" and places a string in * the following member variables: class_pointer and super_class. */typedef struct objc_metaClass { struct objc_metaClass* class_pointer; /* Pointer to Object meta class. */ struct objc_metaClass* super_class; /* Pointer to meta class's super class. NULL for Object. */ const char* name; /* Name of the meta class. */ long version; /* Unknown. */ long info; /* Bit mask. See class masks defined above. */ long instance_size; /* Always 0 except for Object. Should be ignored. */ IvarList_t ivars; /* Always NULL except for Object. Should be ignored. */ MethodList_t methods; /* Linked List of factory methods for the class. */ struct record ** cache; /* Pointer to factory method dispatch table. */} MetaClass, *MetaClass_t;/* * The compiler generates one of these structures for each class. * * This structure is the definition for classes. * * This structure is generated by the compiler in the executable and used by * the run-time during normal messaging operations. Therefore some members * change type. The compiler generates "char* const" and places a string in * the following member variables: super_class. */typedef struct objc_class { MetaClass_t class_pointer; /* Pointer to the class's meta class. */ struct objc_class* super_class; /* Pointer to the super class. NULL for class Object. */ const char* name; /* Name of the class. */ long version; /* Unknown. */ long info; /* Bit mask. See class masks defined above. */ long instance_size; /* Size in bytes of the class. The sum of the class definition and all super class definitions. */ IvarList_t ivars; /* Pointer to a structure that describes the instance variables in the class definition. NULL indicates no instance variables. Does not include super class variables. */ MethodList_t methods; /* Linked list of instance methods defined for the class. */ struct record ** cache; /* Pointer to instance method dispatch table. */} Class, *Class_t;/* * The compiler generates one of these structures for each category. A class * may have many categories and contain both instance and factory methods. */typedef struct objc_category { const char* category_name; /* Name of the category. Name contained in the () of the category definition. */ const char* class_name; /* Name of the class to which the category belongs. */ MethodList_t instance_methods; /* Linked list of instance methods defined in the category. NULL indicates no instance methods defined. */ MethodList_t class_methods; /* Linked list of factory methods defined in the category. NULL indicates no class methods defined. */} Category, *Category_t;/* * Structure used when a message is send to a class's super class. The * compiler generates one of these structures and passes it to * objc_msgSuper. */typedef struct objc_super { id receiver; /* Id of the object sending the message. */ Class_t class; /* Object's super class. */} Super, *Super_t;/* * _alloc points to the function, called through class_createInstance, used * to allocate memory for new instances. */extern id (*_alloc)(Class_t);/* * _dealloc points to the function, called through object_dispose, used to * free instances. */extern id (*_dealloc)(id);/* * _realloc points to the function, called through object_realloc, used to * reallocate memory for an object */extern id (*_realloc)(id, unsigned int);/* * _copy points to the function, called through object_copy, used to create * an exact copy of an object. */extern id (*_copy)(id);/* * _error points to the function that the run-time system calls in response * to an error. By default, it prints formatted error messages to the * standard error stream and calls abort to produce a core file. */extern void (*_error)(id object, const char *fmt, va_list ap);#ifdef __cplusplus}#endif#endif /* not __objc_INCLUDE_GNU */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -