Objective-C运行时版本是否会为用户保留关联引用?

cxa*_*cxa 7 reference associative objective-c

当一些代码像这样:

objc_setAssociatedObject (
  obj,
  &key,
  val,
  OBJC_ASSOCIATION_RETAIN
);
Run Code Online (Sandbox Code Playgroud)

我需要打电话给相关的

objc_setAssociatedObject (
  obj,
  &key,
  nil,
  OBJC_ASSOCIATION_RETAIN
);
Run Code Online (Sandbox Code Playgroud)

释放保留值?Objective-C运行时是否在dealloc某处或某处自动释放关联引用?

Mik*_*ler 14

取消分配父对象时将释放关联对象.请参阅此处的文档,特别是此示例:

在第1点,字符串overview仍然有效,因为OBJC_ASSOCIATION_RETAIN策略指定数组保留关联的对象.然而,当阵列被释放时(在点2处)overview被释放,因此在这种情况下也被解除分配.