Sobes.tech
Junior — Middle

Millal on sobiv kasutada nõrka viidet 'weak let' abil?

sobes.tech AI

Vastus AI-lt

Nõrk viide weak let Swiftis kasutatakse tugevate viidete tsüklite (retention cycles) vältimiseks, eriti sulgudes ja delegaatides. See sobib olukordades, kus viidatud objekt võib deinitialiseeruda ning te ei soovi seda mäluhoidlas hoida.

Näiteks sulgus, mis haarab self, et vältida mälulekkeid, kasutab nõrka viidet:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            guard let self = self else { return }
            self.doSomething()
        }
    }

    func doSomething() {
        print("Tegevus")
    }
}

Siin takistab weak self hoidmist sulgus, võimaldades ViewController-il vabastada mälu, kui see enam ei ole vajalik.