如果把类的实例看成一个c语言的结构体,isa指针就是这个结构体的第一个成员变量,而类的其它成员变量依次排列在结构体中
这里是我们验证,代码地址:oschina
https://git.oschina.net/Cshaonian/MyIsa.git
我们在@autoreleasepool处,设置断点,在控制台输入 p *child 我们可以看到
因为,对象在内存中的排布可以看成一个结构体,该结构体的大笑并不能动态的变化,所以无法在运行时给对象增加成员变量。
对应的类的方法定义都保存在类的可变区域中,在oc 1.0中我们看到定义方法的定义的列表是一个名为methodLists的指针的指针,,通过动态的修改这个指针的值,可以动态的为某个类增加成员方法。这个也是catagory实现的原理,