## Weak reference

Ссылается на объект в [куче](/3%20Memory%20and%20Concurrency/3.1%20Memory/3.1.2%20RandomAccessMemory/3.1.2.3%20Heap.md), но эта ссылка не учитывается при подсчет ссылок, когда объект освобождается из памяти weak ссылка установливается в nil (обозначая что объект уже освободился из памяти). Соответственно weak ссылки принадлежит к типу [Optional](/5%20Swift/5.3%20DataRepresentations/5.3.1%20DataTypes/5.3.1.4%20ValueTypes/5.3.1.4.3%20Enumeration/Optional.md) так как могут установлены в nil. 

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

Есть еще одна важная вещь о  слабых  ссылках: после освобождения экземпляра соответствующая переменная станет нулевой (nil). Это хорошо, потому что если мы получим доступ к переменной, указывающей куда-то, где не осталось ни одного экземпляра. Поскольку только опциональные переменные могут стать нулевыми, каждая слабая переменная должна быть необязательной.


## [Side Tables](./3.1.3.1.4.5%20SideTables.md)

Как только мы начинаем ссылаться на объект слабо weak reference, то создается боковая таблица или [side table](./3.1.3.1.4.5%20SideTables.md), и теперь объект вместо сильного счетчика ссылок хранит ссылку на боковую таблицу. Сама боковая таблица также имеет ссылку на объект.

## Unowned vs Weak

Мы устанавливаем `weak` ссылку на тот объект, который может уйти из памяти раньше, т.е. время жизни этого объекта должно быть меньше, чем время жизни объекта из которого мы обращаемся к `weak`

Мы устанавливаем [unowned](./3.1.3.1.4.3%20Unowned.md) ссылку на тот обхект, чье время жизни >= времени жизни объекта из которого мы вызываем [unowned](./3.1.3.1.4.3%20Unowned.md)

---

[3.1.3.1.4.3 Unowned Reference Theme](./3.1.3.1.4.3%20Unowned.md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) | [3.1.3.1.4.5 Side Tables Theme](./3.1.3.1.4.5%20SideTables.md)
