## Unowned reference

Ссылается на объект в [куче](/3%20Memory%20and%20Concurrency/3.1%20Memory/3.1.2%20RandomAccessMemory/3.1.2.3%20Heap.md), но эта ссылка не учитывается при подсчете ссылок, когда объект освобождается из памяти и после этого вы пытаетесь использовать экземпляр по unowned ссылке, то ваша программа упадет. Редко используется, в основном, что бы разрушить ссылочные циклы (memory cycles).

> Грубо говоря, `unowned` ссылка всегда хранит указатель на адрес в памяти. Даже если этот адрес уже не зарезервирован за вашим приложением, поэтому может быть краш неавторизированного доступа к участку памяти, которое не зарезервировано за нашим приложением.

```swift
// Captures a unowned reference to self
var Variable = { [ unowned self ] in
     return self.myProp * 3
}()
```

### Пример корректного использования:

1) Банковская карта хранит ссылку на человека, которому она принадлежит. Эта ссылка должна быть unowned, потому что логически банковская карта не может существовать без человека.

2) Легкость дебаггинга.

### Производительность

Использование `unowned` вводит меньше накладных расходов, чем использование [weak](./3.1.3.1.4.4%20Weak.md). Это потому, что [weak](./3.1.3.1.4.4%20Weak.md) переменные ссылаются на объект через [side tables](./3.1.3.1.4.5%20SideTables.md). Это означает, что есть еще один переход указателя для достижения объекта.

`unowned` ссылки указывают непосредственно на объект, поэтому у них нет таких накладных расходов.

## Unowned vs Weak

Мы устанавливаем [weak](./3.1.3.1.4.4%20Weak.md) ссылку на тот объект, который может уйти из памяти раньше, т.е. время жизни этого объекта должно быть меньше, чем время жизни объекта из которого мы обращаемся к [weak](./3.1.3.1.4.4%20Weak.md)

Мы устанавливаем `unowned` ссылку на тот объект, чье время жизни >= времени жизни объекта из которого мы вызываем `unowned`

---

[3.1.3.1.4.2 Strong Reference Theme](./3.1.3.1.4.2%20Strong.md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) | [3.1.3.1.4.4 Weak Reference Theme](./3.1.3.1.4.4%20Weak.md)
