美文网首页
iOS应用runtime的四种用法

iOS应用runtime的四种用法

作者: Smile_Later | 来源:发表于2017-12-13 00:20 被阅读0次

    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#>)// 动态添加协议

    也可以获取方法名,属性名,具体实现,数据转模型,有时间会自己构造一个方法转模型的类

    有什么需要修改的地方,请指出,以免误解别人,谢谢

    代码地址:代码

    相关文章

      网友评论

          本文标题:iOS应用runtime的四种用法

          本文链接:https://www.haomeiwen.com/subject/dqdoixtx.html