Sobes.tech
Junior — Middle

Môžete vysvetliť, čo znamená používanie slabého odkazu na self v uzáveroch?

sobes.tech AI

Odpoveď od AI

Použitie slabého odkazu (weak reference) na self v uzávierkach v iOS (Swift) pomáha predísť cyklom udržiavania (retain cycles), ktoré vedú k únikom pamäti. Keď uzávierka zachytí self ako silný odkaz a self obsahuje tento uzávier, udržiavajú sa navzájom a pamäť sa neuvoľní.

Príklad:

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

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

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

Tu [weak self] znamená, že vo vnútri uzávierky bude self slabou referenciou, a ak objekt bude zničený, referencia sa stane nil, čím sa predíde únikom pamäti.