Will Objective-C runtime release retained associat

2019-03-16 04:34发布

When some codes like this:

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

Do I need to call related

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

to release the retained value? Does Objective-C runtime auto release the associative references in dealloc or somewhere?

1条回答
Evening l夕情丶
2楼-- · 2019-03-16 05:06

Associated objects will be released when the parent object is deallocated. See the documentation here, specifically this example:

At point 1, the string overview is still valid because the OBJC_ASSOCIATION_RETAIN policy specifies that the array retains the associated object. When the array is deallocated, however (at point 2), overview is released and so in this case also deallocated.

查看更多
登录 后发表回答