Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 354
cxa Avatar asked May 25 '11 09:05

cxa


1 Answers

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.

like image 130
Mike Weller Avatar answered Nov 08 '22 22:11

Mike Weller