Junior — Middle
Je možné implementovať slabé uzávery v programovacom jazyku?
sobes.tech AI
Odpoveď od AI
V iOS (Swift, Objective-C) sú uzávierky (closures) zvyčajne pevne spojené s kontextom, v ktorom boli vytvorené, zachytávajúc premenné a objekty. Avšak je možné implementovať slabšie spojené uzávierky pomocou slabých odkazov (weak) vo vnútri uzávierky, aby sa predišlo silným cyklom udržiavania.
Príklad v Swift:
class MyClass {
var value = 10
func doSomething() {
let closure: () -> Void = { [weak self] in
guard let self = self else { return }
print(self.value)
}
closure()
}
}
Tu je self zachytené slabým odkazom, čo umožňuje vyhnúť sa udržiavaniu objektu MyClass uzávierkou, ak bol objekt už uvoľnený.
Takže, slabšie spojené uzávierky sú možné a široko používané na správu pamäti a prevenciu únikov.