1. 首先可以给系统的类扩展属性,这个属性是没有getter和setter方法的,需要实现,用objc_setAssociated...和objc_getAssociated... 某部分代码只与这个类有关,就完全可以把这部分代码抽取到分类中。在第3条demo的优化中也用到了这两个方法
2. 还可以方法交换,调用这个方法走的是另外一个方法,Method m1 = Class_getINstanceMethod... Method m2 = Class_getINstanceMethod... Method_getExchangeImplementation(m1, m2); 可以参考demo:https://github.com/shimenyimeng/Runtime-MethodExchange
3. 动态获取类的属性,用于字典转模型,建立NSObject的分类方法。其实也就是给NSObject添加分类方法,其他模型调用这个分类方法,在方法中返回模型的属性名称的数组(注意C字符串转化为OC字符串以及释放对象) 可以参考demo:https://github.com/shimenyimeng/Runtime-NSDictionary-to-Model