您的位置:首页 > 移动开发 > IOS开发

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

2015-12-16 10:24 302 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/fantianminios/article/details/50324201 在类别中是无法使用成员变量的 所以需要利用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);

//}

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: