一个objc对象任何进行内存布局(考虑有父类的情况)
2016-07-03 本文已影响1101人
纳木错_grace
1,所有父类的成员变量和自己的成员变量都会存放在该对象所对应的存储空间中。
2,每个对象内部都有一个isa指针,指向他的类对象,类对象中存放着本身对象的a,对象方法列表(对象能够接收的消息列表,保存在它所对应的类对象中)b,成员变量的列表。c,属性列表。类对象内也有一个isa指针指向元对象(meta class),元对象内部存放的是类方法列表,类对象内部还有哦一个superclass的指针,指向他的父类对象
每个Objective-C对象都有相同的结构 :如下图:
3,根对象就是NSObject,他的superclass指针指向nil
4,类对象既然称为对象,那它也是一个实例,类对象中也有一个isa指针指向他的元类(meta class),即类对象是元类的实例,元类内部存放的是类方法列表,根元类的isa指针指向自己,superclass指针指向NSObject类。
一个objc对象的isa指针指向他的类对象,从而可以找到对象上的方法
objc中的类方法和实例方法有什么本质区别和联系
类方法:
1,类方法是属于类对象的 2,类方法只能通过类对象调用 3,类方法中的self是类对象 4,类方法中不能访问成员变量 5,类方法可以调用其他的类方法 6,类方法中不能直接调用对象方法
实例方法:
1,实例方法是属于实例对象的 2,实例方法只能通过实例对象调用,3,实例方法中的self是实例对象 4,实例方法中可以访问成员变量 5,实例方法中直接调用实例方法6,实例方法中可以直接调用类方法(通过类名)