Skip to content

Commit 0e7b5e2

Browse files
committedAug 2, 2015
完善解答19. 一个objc对象如何进行内存布局?(考虑有父类的情况)
1 parent b2fd898 commit 0e7b5e2

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed
 

‎01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md

+10-3
Original file line numberDiff line numberDiff line change
@@ -1074,17 +1074,24 @@ objc在向一个对象发送消息时,runtime库会根据对象的isa指针找
10741074

10751075

10761076
###19. 一个objc对象如何进行内存布局?(考虑有父类的情况)
1077+
10771078
- 所有父类的成员变量和自己的成员变量都会存放在该对象所对应的存储空间中.
10781079
- 每一个对象内部都有一个isa指针,指向他的类对象,类对象中存放着本对象的
10791080

10801081

1081-
1. 对象方法列表
1082+
1. 对象方法列表(对象能够接收的消息列表,保存在它所对应的类对象中)
10821083
2. 成员变量的列表,
10831084
2. 属性列表,
10841085

1085-
它内部也有一个isa指针指向元对象(meta class),元对象内部存放的是类方法列表,类对象内部还有一个superclass的指针,指向他的父类对象
1086+
它内部也有一个isa指针指向元对象(meta class),元对象内部存放的是类方法列表,类对象内部还有一个superclass的指针,指向他的父类对象。
1087+
1088+
![enter image description here](http://i.imgur.com/7mJlUj1.png)
1089+
1090+
- 根对象就是NSobject,它的superclass指针指向nil
1091+
1092+
- 类对象既然称为对象,那它也是一个实例。类对象中也有一个isa指针指向它的元类(meta class),即类对象是元类的实例。元类内部存放的是类方法列表,根元类的isa指针指向自己,superclass指针指向NSObject类。
1093+
10861094

1087-
- 根对象就是NSobject
10881095

10891096
如图:
10901097
![enter image description here](http://i.imgur.com/w6tzFxz.png)

0 commit comments

Comments
 (0)
Please sign in to comment.