Sobes.tech
Junior — Middle

Jaké chování se očekává při deklaraci proměnné user s použitím slabé reference pomocí weak var user = User()?

sobes.tech AI

Odpověď od AI

V jazyce Swift deklarace proměnné pomocí weak var user = User() vytváří slabé odkazování na objekt User. To znamená, že odkaz nezvyšuje čítač odkazů objektu, a pokud již neexistují žádné silné odkazy na tento objekt, bude objekt uvolněn (odstraněn z paměti).

V tomto případě, pokud je user jediným odkazem na objekt User, pak ihned po jeho vytvoření bude objekt uvolněn a user bude rovno nil.

Příklad:

class User {}

weak var user = User() // user bude ihned nil, protože nejsou žádné silné odkazy

print(user) // nil

Proto jsou slabé odkazy obvykle deklarovány jako volitelné (weak var user: User?) a používají se k prevenci cyklů udržování, například v delegátech.