底层原理总结 — 对象的分类

2020-02-08  本文已影响0人  踩坑小分队

OC 对象的分类

instance对象的构成包括:

  • isa指针
  • 其他的成员变量<比如_age>
image.png
#import <objc/runtime.h>
Person *per = [[Person alloc] init];
per->_age = 10;

Class class1 = [Person class];
Class class2 = [per class];
Class class3 = object_getClass(per);
        
NSLog(@"class1 = %p",class1);
NSLog(@"class2 = %p",class2);
NSLog(@"class3 = %p",class3);

打印结果

class1 = 0x100001348
class2 = 0x100001348
class3 = 0x100001348

对于类对象来说,他们是同一个类对象,每个类在内存中有且只有一个class对象
class对象主要存储的是:

  • isa指针
  • superclass指针
  • 类的属性信息<@property>
  • 类的对象信息<对象方法等>
  • 类的协议信息
  • 类的成员变量信息
  • ..........
image.png

meta-class(元类对象)
获取方式:

Class perMetaClass = object_getClass([Person class]);

perMetaClass是Person类的meta-class<元类对象>
meta-class对象和class对象的内存结构是一样的,但是用途不一样,在内存中

存储的信息主要包括

  • isa指针
  • superclass指针
  • 类的 类方法 信息
image.png
上一篇 下一篇

猜你喜欢

热点阅读