为什么catagory可以增加成员方法,不可以增加成员变量

如果把类的实例看成一个c语言的结构体,isa指针就是这个结构体的第一个成员变量,而类的其它成员变量依次排列在结构体中
这里是我们验证,代码地址:oschina

https://git.oschina.net/Cshaonian/MyIsa.git

我们在@autoreleasepool处,设置断点,在控制台输入 p *child 我们可以看到

因为,对象在内存中的排布可以看成一个结构体,该结构体的大笑并不能动态的变化,所以无法在运行时给对象增加成员变量。

对应的类的方法定义都保存在类的可变区域中,在oc 1.0中我们看到定义方法的定义的列表是一个名为methodLists的指针的指针,,通过动态的修改这个指针的值,可以动态的为某个类增加成员方法。这个也是catagory实现的原理,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值