1.给系统的方法添加额外的功能
- 给系统的方法添加分类
- 自己实现一个带有扩展功能的方法
- 交换方法,只需要交换一次
2.动态添加属性
- 给一个类添加属性,其实本质就是给这个类添加关联, 并不是直接把这个值得内存空间添加到类的内存空间
- objc_setAssociatedObject
- objc_getAssociatedObject
3.实现字典转模型的自动转换
- 利用运行时,遍历模型中的所有属性, 根据模型的属性名,去字典中查找对应的值,给模型的属性赋值
4.method swizzling(方法交换)
- 利用method_exchangeImplementations交换两个方法实现
- 利用class_replaceMethod替换方法的实现
- 利用method_setImplementation来直接设置某个方法的IMP