Будет ли Objective-C runtime выпускать сохраненные ассоциативные ссылки для пользователя?
Когда некоторые коды, как это:
objc_setAssociatedObject (
obj,
&key,
val,
OBJC_ASSOCIATION_RETAIN
);
Нужно ли мне вызывать related
objc_setAssociatedObject (
obj,
&key,
nil,
OBJC_ASSOCIATION_RETAIN
);
Чтобы освободить сохраненную стоимость? Objective-C runtime автоматически освобождает ассоциативные ссылки в dealloc
или где-то еще?
1 ответ:
Связанные объекты будут освобождены, когда родительский объект будет освобожден. Смотрите документацию здесь, в частности этот пример:
В точке 1 строка
overview
все еще действительна, поскольку политикаOBJC_ASSOCIATION_RETAIN
указывает, что массив сохраняет Связанный объект. Однако, когда массив освобождается (в точке 2),overview
освобождается и в этом случае также освобождается.