Objective-C对象模型
2016-11-17 11:31
295 查看
Objective-C是一门面向对象的编程语言,每一个对象都是一个类的实例。XCode中打开objc.h可以看到如下定义:
每个对象包含一个isa指针,指向该对象的类。XCode中打开runtime.h可以看到类的定义:
类也包含一个isa指针。可以看出,类也是一个对象。那么类的类是什么呢?在OC中,类的类称为元类(metaclass)。
元类也是一个对象,也有isa指针。元类的isa指针指向元类的类,根元类(root metaclass)。
根元类也有isa指针,只是根元类的isa指针指向自己。上图说话。
这里,可以把Root class看成NSObject。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #4cbf57 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff; min-height: 13.0px }
span.s1 { }
span.s2 { color: #c2349b }
/// An opaque type that represents an Objective-C class. typedef struct objc_class *Class; /// Represents an instance of a class. struct objc_object { Class isa OBJC_ISA_AVAILABILITY; }; /// A pointer to an instance of a class. typedef struct objc_object *id;
每个对象包含一个isa指针,指向该对象的类。XCode中打开runtime.h可以看到类的定义:
struct objc_class { Class isa OBJC_ISA_AVAILABILITY; #if !__OBJC2__ Class super_class OBJC2_UNAVAILABLE; const char *name OBJC2_UNAVAILABLE; long version OBJC2_UNAVAILABLE; long info OBJC2_UNAVAILABLE; long instance_size OBJC2_UNAVAILABLE; struct objc_ivar_list *ivars OBJC2_UNAVAILABLE; struct objc_method_list **methodLists OBJC2_UNAVAILABLE; struct objc_cache *cache OBJC2_UNAVAILABLE; struct objc_protocol_list *protocols OBJC2_UNAVAILABLE; #endif } OBJC2_UNAVAILABLE;
类也包含一个isa指针。可以看出,类也是一个对象。那么类的类是什么呢?在OC中,类的类称为元类(metaclass)。
元类也是一个对象,也有isa指针。元类的isa指针指向元类的类,根元类(root metaclass)。
根元类也有isa指针,只是根元类的isa指针指向自己。上图说话。
这里,可以把Root class看成NSObject。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #4cbf57 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff; min-height: 13.0px }
span.s1 { }
span.s2 { color: #c2349b }
相关文章推荐
- Objective-C 对象和消息模型
- Objective-C对象模型及应用
- Objective-C的对象模型与运行时
- Objective-C对象模型及应用
- Objective-C对象模型及应用
- python写一段自动生成Objective-C模型对象的脚本
- Objective-C 对象模型
- Objective-C的对象模型与运行时
- Objective-C对象模型
- Objective-C的对象模型
- Objective-C对象模型及应用
- Objective-C的对象模型
- Objective-C对象模型--类对象和元类对象
- Objective-C对象模型及应用
- Objective-C 对象和消息模型
- Objective-C对象模型及应用
- Objective-C对象模型及应用
- Objective-C对象模型及应用
- Objective-C 对象和消息模型
- Objective-C的对象模型和runtime机制