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