Objective-C Runtime 中的关联对象(Associated Object) 方法

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);

posted @ 2025-10-13 13:44  代码只是一种思想  阅读(11)  评论(0)    收藏  举报