Sobes.tech
Junior — Middle

Кога е подходящо да използвате слаба препратка с 'weak let'?

sobes.tech AI

Отговор от AI

Слабка препратка с помощта на weak let в Swift се използва за предотвратяване на цикли от силни препратки (retain cycles), особено в closures и делегати. Тя е подходяща, когато обектът, към който се отнася, може да бъде деинициализиран, и не искате да го държите в паметта.

Например, в 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 предотвратява задържането на self от closure, което позволява ViewController да бъде освободен от паметта, когато вече не е необходим.