问题
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 theOBJC_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