在类别中是无法使用成员变量的 所以需要利用runtime的运行时原理来模拟成员变量
首先导入头文件 <Objct/runtime.h>
声明对象
@progress (n,s)NSString *qipa;
然后再get set方法中
static
char NSStringKey
运行时模拟成员变量
#pragma mark --运行时模拟成员变量
-(void)setQipa:(NSString *)qipa{
//手动实现键值观察 通知系统该值即将改变
[self willChangeValueForKey:@"NSStringKey"];
//将两个对象进行关联 被关联对象 关键字 关联对象 关联策略
objc_setAssociatedObject(self, &NSStringKey, qipa, OBJC_ASSOCIATION_ASSIGN);
//手动实现键值观察 通知系统该值已经改变
[self didChangeValueForKey:@"NSStringKey"];
}
#pragma mark --运行时获取关联成员变量
-(NSString *)qipa{
//获取关联对象
return objc_getAssociatedObject(self, &NSStringKey);
}
#pragma mark --运行时断开成员变量 不建议使用
//-(void)remove{
// objc_removeAssociatedObjects(self);
//}
这样就可以在分类中使用成员变量了