实例对象,类,元类

一个NSObject对象占用多少内存?
一个指针变量所占用的大小(64bit,8个字节。32bit,4个字节)

对象的isa指针指向哪里?
instance对象的isa指向class对象
class对象的isa指向meta-class对象
meta-class对象的isa指向基类的meta-class对象

OC的类信息存放在哪里?
成员变量的具体值存放在instance对象
对象方法、协议、属性、成员变量信息存放在class对象
类方法信息存放在meta-class对象


image.png
Snip20180324_4.png

元类对象的判别
NSObject *object = [[NSObject alloc] init];
Class objectClass = [NSObject class];
struct mj_objc_class *objectClass2 = (__bridge struct mj_objc_class *)objectClass;
Class objectMetaClass = object_getClass(objectClass);
NSLog(@"%d %d", class_isMetaClass(objectClass), class_isMetaClass(objectMetaClass));

    NSLog(@"%p %p %p", object, objectClass, objectMetaClass);
    // NSObject的class对象:0x00007fffa7a32140
    // NSObject的instance对象的isa:0x001dffffa7a32141
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,767评论 0 9
  • Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的...
    有一种再见叫青春阅读 609评论 0 3
  • 本文基于objc4-709源码进行分析。关于源码编译:objc - 编译Runtime源码objc4-706 ob...
    WeiHing阅读 858评论 1 3
  • 概述 常说Objective-C是一门动态语言,那么问题来了,这个动态表现在那些方面呢? 其实最主要的表现就是Ob...
    Jack_lin阅读 2,263评论 2 36
  • 曾经学过电影,蒙太奇的长镜头都成了笑谈 姜文的风格还是王家卫的风格 镜头下发现,张国荣和梁朝伟主演,一边颓唐的点烟...
    紫拉加一阅读 481评论 15 2