Junior — Middle
Дар кадом ҳолатҳо бояд дар дохили пӯшиш (closure) истиноди заиф (weak) истифода шавад?
sobes.tech AI
Ҷавоб аз AI
Дарчинҳои заиф (weak) дар дохили пӯшишҳо (closures) дар iOS барои пешгирӣ кардани циклҳои ишораҳои қавӣ (retain cycles) истифода мешаванд, ки метавонанд ба хориҷшавии хотира оварда расонанд. Ин одатан муҳим аст, вақте ки пӯшиш объект (масалан, self) мегирад ва аз ҷониби он нигоҳ дошта мешавад, ки як ишораи қавӣ байни онҳо эҷод мекунад.
Барои ишора ба self дар дохили пӯшиш истифода баред weak, агар пӯшиш ҳамчун хусусияти объект нигоҳ дошта шавад ё метавонад дарозтар аз даъвати функсия зиндагӣ кунад, то аз нигоҳ доштани объект дар хотира пас аз озод кардани он пешгирӣ кунад.
Масал дар Swift:
class ViewController {
var completion: (() -> Void)?
func setup() {
completion = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Амали иҷро шуд")
}
}
Ин ҷо [weak self] аз цикл қавӣ байни ViewController ва пӯшиши completion пешгирӣ мекунад.