Ссылается на объект в куче, но эта ссылка не учитывается при подсчете ссылок, когда объект освобождается из памяти и после этого вы пытаетесь использовать экземпляр по unowned ссылке, то ваша программа упадет. Редко используется, в основном, что бы разрушить ссылочные циклы (memory cycles).
Грубо говоря,
unowned
ссылка всегда хранит указатель на адрес в памяти. Даже если этот адрес уже не зарезервирован за вашим приложением, поэтому может быть краш неавторизированного доступа к участку памяти, которое не зарезервировано за нашим приложением.
// Captures a unowned reference to self
var Variable = { [ unowned self ] in
return self.myProp * 3
}()
-
Банковская карта хранит ссылку на человека, которому она принадлежит. Эта ссылка должна быть unowned, потому что логически банковская карта не может существовать без человека.
-
Легкость дебаггинга.
Использование unowned
вводит меньше накладных расходов, чем использование weak. Это потому, что weak переменные ссылаются на объект через side tables. Это означает, что есть еще один переход указателя для достижения объекта.
unowned
ссылки указывают непосредственно на объект, поэтому у них нет таких накладных расходов.
Мы устанавливаем weak ссылку на тот объект, который может уйти из памяти раньше, т.е. время жизни этого объекта должно быть меньше, чем время жизни объекта из которого мы обращаемся к weak
Мы устанавливаем unowned
ссылку на тот объект, чье время жизни >= времени жизни объекта из которого мы вызываем unowned
3.1.3.1.4.2 Strong Reference Theme | Back To iOSWiki Contents | 3.1.3.1.4.4 Weak Reference Theme