分类里面添加成员变量, 分类里面是不能直接添加成员变量的,但是可以通过runtime间接添加成员变量。
为什么不能添加:
当你给分类设置属性的时候,分类不会给这个属性生成_XX
的成员变量,因为分类的结构中category_t的结构体中,只能存储,属性,方法、协议信息等,并没有能够存放成员变量的位置。
添加成员变量
- (void)setWeight:(double)weight{
objc_setAssociatedObject(self, @selector(weight), @(weight), OBJC_ASSOCIATION_ASSIGN);
}
- (double)weight{
return [objc_getAssociatedObject(self, @selector(weight)) doubleValue];
}
参数里面的self和@selector(weight)) 都是关联对象内部用来做key用的