Junior — Middle
Kde a ako sú slabé odkazy implementované v systémoch správy pamäte?
sobes.tech AI
Odpoveď od AI
V iOS sú slabé odkazy (weak references) implementované na úrovni systému správy pamäte Automatic Reference Counting (ARC). Používajú sa na prevenciu cyklov silných odkazov, ktoré môžu viesť k únikom pamäte.
Slabý odkaz nezvyšuje čítač odkazov objektu, takže objekt môže byť uvoľnený aj v prípade, že na neho existujú slabé odkazy. Po uvoľnení objektu sa slabé odkazy automaticky nastavujú na nil.
Implementácia:
- V Objective-C a Swift sú slabé odkazy deklarované pomocou kľúčového slova
__weak(Objective-C) aleboweak(Swift). - ARC sleduje silné a slabé odkazy a uvoľňuje objekt, keď nie sú žiadne silné odkazy.
Príklad v Swift:
class Person {
weak var delegate: SomeDelegate? // slabý odkaz
}
Týmto spôsobom sú slabé odkazy implementované v kompilátore a počas behu ARC, čo zabezpečuje automatické riadenie pamäti bez cyklických držaní objektov.