Будут ли в выпуске Objective-C сохранены ассоциативные ссылки для пользователя? - PullRequest
7 голосов
/ 25 мая 2011

Когда некоторые коды такие:

objc_setAssociatedObject (
  obj,
  &key,
  val,
  OBJC_ASSOCIATION_RETAIN
);

Нужно ли звонить родственникам

objc_setAssociatedObject (
  obj,
  &key,
  nil,
  OBJC_ASSOCIATION_RETAIN
);

чтобы освободить оставшуюся стоимость? Выполняет ли во время выполнения Objective C автоматические ссылки в dealloc или где-то еще?

1 Ответ

14 голосов
/ 25 мая 2011

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

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

...