Middle
51
questionbank

В чем разница между анонс-ссылкой и вик-ссылкой?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Анонс-ссылка (unowned reference) не увеличивает счетчик ссылок на объект и используется, когда жизненные циклы двух объектов тесно связаны, и один не может существовать без другого, но при этом нет циклической зависимости. Анонс-ссылка гарантированно указывает на существующий объект, поэтому она всегда неопциональна.

Вик-ссылка (weak reference) также не увеличивает счетчик ссылок на объект. Она используется, когда ссылка может в какой-то момент стать нулевой, так как объект, на который она ссылается, может быть освобожден. Вик-ссылка всегда опциональна (weak var).

Пример:

swift

В данном случае weak var tenant: Person? предотвращает retain cycle между Person и Apartment.

Пример анонс-ссылки:

swift

В этом примере unowned let customer: Customer используется, так как кредитная карта не может существовать без владельца (Customer), и гарантировано, что customer будет действительным, пока существует CreditCard.