常用的地方
1. 动态交换两个方法的实现(特别是实现 交换系统方法的实现)
2. 动态添加对象的成员变量和成员方法
3. 获得某个类的所有成员变量,成员方法
应用: OC最实用的runtime总结 //暂时先写自己需要的这块
二. 在分类中设置属性,给任何一个对象设置属性
在这里先要解释一个属性和成员变量区别,(因为我开始学习的时候,编译器已从GCC转换为LLVM(low level virtual machine),所以自己也是傻傻分不清楚,可能理解有偏差,勿喷)
通常情况下@property 相当于 声明ivar + 生成set get方法
而在分类里,只是生成 set get方法, 不会生成成员变量 必须实现set和get方法
可见这个成员变量不存在,
参数object:源对象,给哪个对象设置属性
参数key:一个属性对应一个key,可根据key取出值,建议用char类型,节省字节
参数value:给属性设置的值
参数policy: 存储策略,(assion,copy,retain(strong))
将值(value)跟对象(object)关联起来(将值存储到对象里)
有一个具体的应用,详情控制器继承于Base控制器
调起,
给button增加事件 动态给这个属性赋值
当点击的时候触发红框下面的方法,根据key取出 block ,并执行block