Will Objective-C runtime release retained associative references for user?

喜夏-厌秋 提交于 2019-12-09 04:53:19

问题


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:


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.



来源:https://stackoverflow.com/questions/6122600/will-objective-c-runtime-release-retained-associative-references-for-user

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!