objc_setAssociatedObject(phoneLbl, @"phoneNumberKey", salesmanPhoneNum, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
使用场景
常用于给系统类(如 UIView、UILabel 等)动态添加自定义数据,特别是在分类(Category)中无法添加属性时使用。
方法解析
函数: objc_setAssociatedObject()
作用: 给现有对象动态添加关联值(类似添加属性)
参数说明
- phoneLbl - 要关联的对象(UILabel 实例)
- @"phoneNumberKey" - 关联的键(标识符)
- salesmanPhoneNum - 要关联的值
- OBJC_ASSOCIATION_RETAIN_NONATOMIC - 内存管理策略
内存管理策略
策略 说明
OBJC_ASSOCIATION_ASSIGN 弱引用,不保留对象
OBJC_ASSOCIATION_RETAIN_NONATOMIC 强引用,非原子性
OBJC_ASSOCIATION_COPY_NONATOMIC 拷贝,非原子性
OBJC_ASSOCIATION_RETAIN 强引用,原子性
OBJC_ASSOCIATION_COPY 拷贝,原子性
对应读取方法
objc
// 读取关联对象
id salesmanId = objc_getAssociatedObject(phoneLbl, @"phoneNumberKey");
// 移除关联对象
objc_setAssociatedObject(phoneLbl, @"phoneNumberKey", nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC);