IOS categoty,成员变量,属性实现的总结

本文总结了Objective-C中Category的实现原理,包括如何向原始类添加类方法和实例方法,以及成员变量和属性的处理方式。Category会将类方法添加到class的method list,实例方法按特定顺序插入,同时探讨了成员变量的ivar_offset和属性与成员变量的关系,以及在添加属性时对类布局的影响和计算实际地址的方法。
摘要由CSDN通过智能技术生成

我们首先看看关于类别的结构体:


从上面结构体中我们可以看到这几个属性:

category_name:类别的名字。

class_name:类别的类。

instance_methods:类别中的实例方法(-)。

class_methods:类别中的类方法(+)。

protocols:类别中的协议。

那么类别怎么往原始类中添加方法呢?

1.首先他将类别中的类方法添加到class的mehod class中。

2.然后将类别中的实例方法以倒序的方式添加到类别中的实例方法中,如果原本类中有方法a,b,新家的类别中有方法c,d。那么方法列表中保存方法的顺序为c,d,a,b。

3.当类别添加完毕后,回销毁原始的类别。

我们再来看看成员变量和属性的结构体。

先看成员变量:


上述结构体前面两个参数就不用说了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值