Junior
Šta je weak modifikator memorije u Swift-u?
sobes.tech АИ
Одговор од АИ
Modifikator weak se koristi za prekidanje ciklusa jakih referenci između objekata, kada jedan objekat ima jaku referencu na drugi, a taj objekat zauzvrat ima jaku referencu nazad.
Glavne karakteristike weak:
- Ne povećava brojač referenci: Korišćenje
weakne povećava broj jakih referenci na objekat. - Može biti
nil: Slaba referenca je opcionalna (Optional) i automatski postajenilkada objekat na koji se odnosi bude deinitializovan. - Koristi se za roditelj/dete odnose: Često se primenjuje kada dete objekat ima referencu na svog roditelja, da bi se izbegli ciklusi jakih referenci.
- Mora biti deklarisana kao
var: Pošto slaba referenca može postatinil, mora biti promenljiva (var), a ne konstanta (let).
Primer upotrebe:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
print("\(name) se inicijalizuje")
}
deinit {
print("\(name) se deinitializuje")
}
}
class Apartment {
let unit: String
weak var tenant: Person? // Slaba referenca
init(unit: String) {
self.unit = unit
print("Stan \(unit) se inicijalizuje")
}
deinit {
print("Stan \(unit) se deinitializuje")
}
}
Bez weak var tenant: Person? u klasi Apartment, došlo bi do ciklusa jakih referenci, i instance Person i Apartment ne bi bile deinitializovane kada više ne budu imale druge jake reference. Zahvaljujući weak, kada se instanca Person deinitializuje, referenca tenant u instanci Apartment automatski postaje nil.