7

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?

cxa
  • 4,238
  • 26
  • 40

1 Answers1

14

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.

Slipp D. Thompson
  • 33,165
  • 3
  • 43
  • 43
Mike Weller
  • 45,401
  • 15
  • 131
  • 151