原因
1. 在category里声明的属性,程序只生成属性的set、get方法的声明,不会生成属性的set、get方法的具体实现和属性的实例变量;
2. 在category的底层结构里没有ivars列表来存放成员变量,所以category无法直接添加成员变量;
目标
间接实现category好像有成员变量的属性使用效果
实现方式
关联对象 AssociatedObject
API
1.设置关联对象,objc_setAssociatedObject; 2.获取关联对象,objc_getAssociatedObject;
3.移除所有的关联对象,objc_removeAssociatedObjects;
4.关联策略及对应关系;
用法
在category的.h文件中声明属性
在category的.m文件中实现属性的set、get方法,引入runtime库,在set方法中设置关联对象,在get方法中获取关联对象。
注:@selecter() 方法返回的是函数地址,可以用来做key,_cmd 表示当前方法的selector