Junior — Middle
Бөлүнгөн эс тутумдун жоготуусу эмнеде жана ал кандайча колдонмодо пайда болушу мүмкүн?
sobes.tech AI
AIден жооп
iOS тиркемесинде эс тутумдун агып кетиши (memory leak) — бул тиркеме керек эмес объекттерге шилтемелерди сактап калуу менен, эс тутум бошотулбай калганда жана убакыт өткөн сайын ресурстар көбөйгөндө пайда болот.
Себептери:
- Объекттердин ортосунда циклик шилтемелер (retain cycles), өзгөчө ARC (Автоматтык шилтеме эсептөө) колдонулганда.
- self менен капталган closures колдонуу, алсыз шилтемелер (weak/self) колдонулбаганда.
- Ресурстарды туура эмес башкаруу, мисалы, делегаттарды бошотпоо.
Closure менен retain cycle мисалы:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // weak эмес selfди каптоо
}
}
}
Анын алдын алуу үчүн [weak self] колдонуш керек:
closure = { [weak self] in
guard let self = self else { return }
print(self)
}
Xcode инструменттери аркылуу (Instruments — Leaks) дайыма анализ жүргүзүү эс тутумдун агып кетишин аныктоого жана алдын алууга жардам берет.