Sobes.tech
Junior — Middle

Miért ajánlott gyenge hivatkozást (weak self) használni a zárványokat tartalmazó kódban?

sobes.tech MI

Válasz az MI-től

A gyenge hivatkozás (weak self) használata szükséges a erős hivatkozási ciklusok (retain cycle) megelőzése érdekében, amelyek memória szivárgáshoz vezetnek.

Amikor egy closure erős hivatkozásként fogja meg self-et, és self tartalmazza ezt a closure-t (például egy tulajdonságban), kölcsönösen tartják egymást, és egyik objektum sem szabadul fel.

Gyenge hivatkozás használatának példája:

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

Itt, self gyengén van megfogva, így ha a self objektumot megsemmisítik a closure végrehajtása előtt, a closure nem fogja tartani a memóriában, ezáltal megelőzve a memória szivárgást.