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.