iOS开发中经常用到的运行时的方法
1.关联对象(应用于分类中)
假如一个类的属性满足不了你,你有二个选择来添加属性
一是继承他的子类,添加新的属性,二是分类,使用关联对象来赋值
子类的缺点是,耦合性太高,假如有很多类都需要用到这个属性,都需要继承重新的类,分类相对于子类处理起来更完美
定义一个分类的属性 关联对象赋值2.交叉方法(系统不建议使用),如果单纯一个地方可以使用,经常调用的方法,不建议修改
交叉方法3.动态添加方法或者属性,获取方法列表或者属性列表
3.1 获取属性列表
获取属性列表3.2 获取方法列表
方法列表class_copyIvarList(<#Class _Nullable __unsafe_unretained cls#>, <#unsigned int * _Nullable outCount#>)//获取成员变量列表
class_copyProtocolList(<#Class _Nullable __unsafe_unretained cls#>, <#unsigned int * _Nullable outCount#>)// 协议列表
动态添加属性,方法,成员变量,协议
class_addIvar(<#Class _Nullable __unsafe_unretained cls#>, <#const char * _Nonnull name#>, <#size_t size#>, <#uint8_t alignment#>, <#const char * _Nullable types#>)//动态 添加成员变量
class_addMethod(<#Class _Nullable __unsafe_unretained cls#>, <#SEL _Nonnull name#>, <#IMP _Nonnull imp#>, <#const char * _Nullable types#>)// 动态添加方法
class_addProperty(<#Class _Nullable __unsafe_unretained cls#>, <#const char * _Nonnull name#>, <#const objc_property_attribute_t * _Nullable attributes#>, <#unsigned int attributeCount#>)//动态添加属性
class_addProtocol(<#Class _Nullable __unsafe_unretained cls#>, <#Protocol * _Nonnull protocol#>)// 动态添加协议
也可以获取方法名,属性名,具体实现,数据转模型,有时间会自己构造一个方法转模型的类
有什么需要修改的地方,请指出,以免误解别人,谢谢
代码地址:代码
网友评论