Junior — Middle
Ajratilgan xotira yo'qotilishi nima va u qanday qilib ilovada yuzaga kelishi mumkin?
sobes.tech AI
AIdan javob
iOS ilovasida xotira oqishi (memory leak) — bu ilova endi kerak bo‘lmagan ob’ektlarga havolalarni saqlab qolishda davom etadigan holat bo‘lib, bu xotira bo‘shatilmasligiga va vaqt o'tishi bilan ko‘proq resurslar sarflanishiga olib keladi.
Sabablari:
- Ob’ektlar o‘rtasida tsiklik havolalar (retain cycles), ayniqsa ARC (Avtomatik Referenslar Hisobi) ishlatilganda.
- self ni yutib olgan yopilishlar (closures) va zaif havolalar (weak/self) bo‘lmagan holda.
- Resurslarni noto‘g‘ri boshqarish, masalan, delegatlarni bo‘shatmaslik.
Yopilish bilan retain cycle misoli:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // weak bo‘lmagan holda self ni yutib olish
}
}
}
Buning oldini olish uchun [weak self] dan foydalanish kerak:
closure = { [weak self] in
guard let self = self else { return }
print(self)
}
Xcode asboblari yordamida (Instruments — Leaks) muntazam tahlil qilish xotira oqishini aniqlash va bartaraf etishga yordam beradi.