文章目录
OC对象 - 关联对象(如何给分类添加成员变量)
Category(分类)的底层结构中,没有成员变量(ivar),因此不能给分类添加成员变量;在分类里面声明的属性,只会生成 get/set 方法的声明,没有方法的实现
所以我们不能直接给分类添加成员变量,但是可以间接实现,那就是使用关联对象
1. 基本使用
1.1 提供的API
1.1.1 添加关联对象
void objc_setAssociatedObject(id object, const void * key, id value, objc_AssociationPolicy policy)
1.1.2 获得关联对象
id objc_getAssociatedObject(id object, const void * key)
1.1.3 移除所有关联对象
void objc_removeAssociatedObjects(id object)
1.1.3 修饰符
| objc_AssociationPolicy | 对应的修饰符 |
|---|---|
| OBJC_ASSOCIATION_ASSIGN | assign |
| OBJC_ASSOCIATION_RETAIN_NONATOMIC | strong, nonatomic |
| OBJC_ASSOCIATION_COPY_NONATOMIC | copy, nonatomic |
| OBJC_ASSOCIATION_RETAIN | strong, atomic |
| OBJC_ASSOCIATION_COPY | copy, atomic |
1.2 使用方法
- 创建
ZSXPerson类,以及它的分类ZSXPerson+Text ZSXPerson+Text.h中声明想要添加的属性ZSXPerson+Text.m中使用关联对象API实现 get/set 方法
ZSXPerson类:
@i

最低0.47元/天 解锁文章
828

被折叠的 条评论
为什么被折叠?



