iOS 开发之 runtime运行时模拟成员变量

来源:互联网 发布:淘宝网发货地址不一样 编辑:程序博客网 时间:2024/06/05 11:47
在类别中是无法使用成员变量的 所以需要利用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);

//}

这样就可以在分类中使用成员变量了

1 0
原创粉丝点击