图2
分析:
Person *p = [[Person alloc] init];
- 根据代码
[Person alloc]
方法会先在堆中创建Person的类对象,类对象里存放着所有属性、对象方法和isa指针。 - Person的类对象的创建是根据Person的元类对象创建的,元类对象里存放着类方法和isa指针;Person的类对象的isa指针指向Person的元类对象。
- Person的元类对象的创建是根据Person的根元类对象创建的,根元类对象里存放着isa指针和
new
方法;Person的根元类对象的isa指针指向自己,根元类对象也就是NSObject。 - 根据Person的类对象创建出Person实例对象,实例对象里存放着对象属性和isa指针;Person实例对象的isa指针指向Person的类对象。
- 代码
[[Person alloc] init]
方法中的init将对象返回。 - 存放在栈中的局部变量p指向堆中的实例对象。
网友评论