Выбор ответа Junior ARC и циклы ссылок спрашивают часто обновлено

Разница между weak и unowned

Вопрос

Чем unowned отличается от weak?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: unowned не опциональна и не обнуляется: после освобождения крэш. Обе ссылки не увеличивают счётчик сильных ссылок. weak всегда опциональная и становится nil после освобождения объекта. unowned предполагает, что объект живёт не меньше ссылки: она не опциональна, и обращение к освобождённому объекту это…

Варианты ответа

  1. unowned удерживает объект, как сильная ссылка, а weak нет
  2. unowned работает только со структурами, а weak с классами
  3. unowned не опциональна и не обнуляется: после освобождения крэшправильный ответ
  4. unowned обнуляется так же, как weak, но работает быстрее

Разбор

Обе ссылки не увеличивают счётчик сильных ссылок. weak всегда опциональная и становится nil после освобождения объекта. unowned предполагает, что объект живёт не меньше ссылки: она не опциональна, и обращение к освобождённому объекту это гарантированный trap. Обе применимы только к классам. Классический пример unowned: Customer и CreditCard, где карта не существует без владельца.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.