Junior — Middle
Swiftтеги жабык (closure) ичинде cyclик шилтемелерди алдын алуу үчүн weak self колдонуу керек болгон учурга мисал келтире аласызбы?
sobes.tech AI
AIден жооп
Swiftте циклдик шилтеменин пайда болушу, эгер объект өзүн өзү каптаса жана бул каптама ошол эле объектте сакталса, бул өз ара кармоого жана эс тутумдун агып кетишине алып келет. Булдан сактануу үчүн weak self колдонулат.
Мисал: сизде ViewController классы бар жана ал асинхрондуу операцияны каптамасы менен баштайт. Эгер каптамада түз эле self колдонулса, анда ViewController каптаманын кармап калуусунан сакталат жана жабылгандан кийин бошотулбайт.
class ViewController: UIViewController {
func fetchData() {
networkRequest { [weak self] data in
guard let self = self else { return }
self.updateUI(with: data)
}
}
func updateUI(with data: Data) {
// интерфейсти жаңылоо
}
}
Бул жерде, weak self күчтүү циклдик шилтемени алдын алат, анткени каптама self-ти алсыз кармайт жана объектти кармабайт, бул аны бошотууга мүмкүндүк берет.