什么是objc_setAssociatedObject()?在什么情况下应使用它?
在我进行的一个项目中,原始作者选择使用它objc_setAssociatedObject(),但我并不确定100%做什么,或者为什么他们决定使用它。 我决定进行查找,但是不幸的是,文档对其用途的描述不是很明确。 objc_setAssociatedObject 使用给定的键和关联策略为给定的对象设置关联值。 void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy) 参数 object 关联的源对象。 key 关联的密钥。 value 与对象的键相关联的值。传递nil以清除现有的关联。 policy 协会的政策。有关可能的值,请参见“关联对象行为”。 那么,该功能的作用到底是什么?在什么情况下应使用它? 阅读答案后进行编辑 那么下面的代码有什么意义呢? Device *device = [self.list objectAtIndex:[indexPath row]]; DeviceViewController *next = [[DeviceViewController alloc] initWithController:self.controller device:device item:self.rootVC.selectedItem]; objc_setAssociatedObject(device, &kDeviceControllerKey, next, OBJC_ASSOCIATION_RETAIN); 如果设备已经是实例变量,将其与视图控制器相关联又有什么意义呢?