美文网首页
底层原理总结 — 对象的分类

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

作者: 踩坑小分队 | 来源:发表于2020-02-08 21:30 被阅读0次

OC 对象的分类

  • 1、instance对象(实例对象)

  • 2、class对象(类对象)

  • 3、meta-class(元类对象)描述class的对象

  • instance对象是通过类的alloc方法创建出来的对象,每次alloc都是不同的instance对象

instance对象的构成包括:

  • isa指针
  • 其他的成员变量<比如_age>
image.png
  • class 对象,类对象
    获取class对象的方式
#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

相关文章

网友评论

      本文标题:底层原理总结 — 对象的分类

      本文链接:https://www.haomeiwen.com/subject/ebbithtx.html