Junior — Middle
Millistes olukordades kasutatakse objekti nõrka viidet?
sobes.tech AI
Vastus AI-lt
Nõrk viide (weak reference) iOS-is kasutatakse tugevate viidete tsüklite (retain cycles) vältimiseks, mis võivad põhjustada mälu lekked. See ei suurenda objekti viidete loendurit, seega võib objekt olla vabastatud isegi siis, kui sellele on nõrk viide.
Tüüpilised nõrkade viidete kasutamise olukorrad:
- Delegaadid: sageli deklareeritakse kui
weak, et vältida tsüklit objekti ja selle delegaadi vahel. - Sulgud (closures): kui sulg haarab
self, tsükli vältimiseks, haaratakseself[weak self]abil. - Seosed objektide vahel, kus üks objekt omab teist, ja teine peab omama viidet ilma omamiseta.
Näide delegaadiga:
protocol SomeDelegate: AnyObject {
func didUpdate()
}
class SomeClass {
weak var delegate: SomeDelegate?
}
Sellisel viisil aitab nõrk viide hallata mälu ja vältida lekked.