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

2024-01-05

当有些代码是这样的时候:

objc_setAssociatedObject (
  obj,
  &key,
  val,
  OBJC_ASSOCIATION_RETAIN
);

需要打电话给相关人员吗

objc_setAssociatedObject (
  obj,
  &key,
  nil,
  OBJC_ASSOCIATION_RETAIN
);

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


当父对象被释放时,关联的对象将被释放。查看文档here https://web.archive.org/web/20120818164935/http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocAssociativeReferences.html,特别是这个例子:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐