实例对象,类,元类

一个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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值