Junior — Middle
Koje se ponašanje očekuje pri deklarisanju promenljive user koristeći slabu referencu sa weak var user = User()?
sobes.tech АИ
Одговор од АИ
U Swift-u, deklaracija promenljive pomoću weak var user = User() stvara slabu referencu na objekat User. To znači da referenca ne povećava brojač referenci objekta, i ako više nema jakih referenci na taj objekat, on će biti dezinicijalizovan (uklonjen iz memorije).
U ovom slučaju, ako je user jedina referenca na objekat User, onda odmah nakon kreiranja objekta, on će biti oslobođen, a user će postati nil.
Primer:
class User {}
weak var user = User() // user će odmah postati nil, jer nema jakih referenci
print(user) // nil
Zato se slabe reference obično deklaršu kao opcionalne (weak var user: User?) i koriste za sprečavanje cikličnih referenci, na primer, u delegatima.