Будет ли 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 7

1 ответ:

Связанные объекты будут освобождены, когда родительский объект будет освобожден. Смотрите документацию здесь, в частности этот пример:

В точке 1 строка overview все еще действительна, поскольку политика OBJC_ASSOCIATION_RETAIN указывает, что массив сохраняет Связанный объект. Однако, когда массив освобождается (в точке 2), overview освобождается и в этом случае также освобождается.