Sobes.tech
Junior — Middle

Nima uchun yopilishlar bilan ishlaydigan kodda o'z-o'ziga zaif (weak self) havolasini ishlatish tavsiya etiladi?

sobes.tech AI

AIdan javob

Yumshoq referens (weak self) dan foydalanish, kuchli referens tsikllarini (retain cycles) oldini olish uchun zarur bo'lib, bu xotira oqishlariga olib keladi.

Agar yopilish selfni kuchli referens sifatida ushlasa va self bu yopilishni o'z ichiga olsa (masalan, xususiyatda), ular bir-birini ushlab turadi va hech biri bo'shatilmaydi.

Yumshoq referensdan foydalanish misoli:

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

Bu yerda, self zaif ushlanadi, shuning uchun agar self obyekti yopilishdan oldin yo'q qilinsa, yopilish uni xotirada ushlab qolmaydi, bu esa oqishni oldini oladi.