博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分类添加属性
阅读量:4932 次
发布时间:2019-06-11

本文共 738 字,大约阅读时间需要 2 分钟。

#import "ClassA.h"@interface ClassA (test)@property(cpoy,nonatomic)NSString *str;-(void)test1;@end
分类不可以直接添加属性,但是如果你直接添加属性则会报错。如上,如果为ClassA 添加属性,再编译时不会报错,但是再运行阶段就会找不到实例变量str。

2015-03-02 08:19:32.300 Study[978:303] -[ClassA setStr:]: unrecognized selector sent to instance 0x100202e50

如果我们需要必须要添加属性时,我们可以采用关联引用添加。

#import "ClassA+test.h"#import 
@implementation ClassA (test)static NSString *strKey;//添加关联引用的Key,其地址唯一即可,将self与其地址添加关联,关联的内容就是需要添加的属性。-(NSString *)str{ return objc_getAssociatedObject(self, &strKey);//取出关联内容}-(void)setStr:(NSString *)str{ objc_setAssociatedObject(self, &strKey, str, OBJC_ASSOCIATION_COPY);//设置关联}-(void)test1{ NSLog(@"ok"); }@end

转载于:https://www.cnblogs.com/dengzhuli/p/4415564.html

你可能感兴趣的文章
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
先行者长虹佳华超融合市场沙龙在京举行
查看>>
建立备份策略的重要性
查看>>
小白用户如何轻松上云 -我的轻量应用服务器探索记
查看>>
BCG与阿里研究院等联合揭秘中国互联网经济:成功的关键是什么?
查看>>
发力IoT领域 Marvell注重生态系统发展
查看>>
数据中心网络布线工程必备七大件
查看>>
20个问题揭穿冒牌数据科学家
查看>>
你应该知道的 RPC 原理
查看>>
Ubuntu安装词典
查看>>
KVM虚拟机在线添加网卡
查看>>
Spring解析
查看>>
支付宝签约教程及注意事项
查看>>
Linux Glibc溢出漏洞凶猛来袭 可让***者获取操作系统的控制权限
查看>>
设计模式之原则
查看>>
Maven修改全局和局部JDK版本
查看>>
设计模式——组合模式(Composite Pattern)
查看>>
java设计模式之——代理模式
查看>>
php页面防止重复提交
查看>>
Perl DBI模块的例子
查看>>