Sobes.tech
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) дайыма анализ жүргүзүү эс тутумдун агып кетишин аныктоого жана алдын алууга жардам берет.