ios 关联对象 Associated Object

在Objective-C中,关联对象(Associated Object)是通过runtime函数实现的动态对象关联技术,允许开发者在运行时将任意对象关联到其他对象上。关联对象并不是直接存储在对象本身中,而是通过一个全局的关联对象哈希表来存储的。

具体来说,Objective-C的runtime库提供了以下三个函数来管理关联对象:

  1. objc_setAssociatedObject:将一个对象关联到另一个对象上;
  2. objc_getAssociatedObject:获取一个对象所关联的对象;
  3. objc_removeAssociatedObjects:移除一个对象所关联的所有对象。

这些函数使用一个唯一的关键字(key)来标识关联对象,并且关键字必须是一个静态变量地址,以便在多个方法之间共享。

当调用objc_setAssociatedObject函数时,Runtime会将关键字和关联对象的指针保存到全局的关联对象哈希表中。当调用objc_getAssociatedObject函数时,Runtime会根据对象和关键字从哈希表中查找关联对象的指针并返回它。当调用objc_removeAssociatedObjects函数时,Runtime会从哈希表中删除与对象相关联的所有关联对象。因此,关联对象的实际存储位置是由Objective-C的runtime库来管理的,而不是存储在对象本身中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值