Sobes.tech
Junior — Middle

Колдонмолоруңузда эс тутумдун агып кетишин кантип аныктайсыз жана оңдойсуз?

sobes.tech AI

AIден жооп

iOS тиркемелеринде эс тутум агып кетүүлөрүн аныктоо үчүн мен көбүнчө Xcode куралдарын колдонуп, мисалы, Leaks жана Allocations профилдери менен Instruments колдонуп жатам.

  1. Мен тиркемени Instruments аркылуу ишке киргизем жана реалдуу убакытта агып кетүүлөр пайда болобу деп көзөмөлдөйм.
  2. Мен чыгарылбай калган объекттерди жана алардын кармоо чынжырларын (retaining cycles) анализ кылам.
  3. Көп учурда, агып кетүүлөр күчтүү циклик шилтемелерден келип чыгат, мисалы, объекттер же жабдуулар ортосунда, ошондуктан weak жана unowned шилтемелердин колдонулушун текшерем.

Мисал катары, жабдууда retaining cycle'ди жокко чыгаруу:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            self?.doSomething()
        }
    }

    func doSomething() {
        print("Иш")
    }
}

Бул жерде [weak self] колдонуу объект жана жабдуунун ортосундагы күчтүү кармоо циклин алдын алат.

Ошондой эле, Xcode статикалык анализаторун (Product -> Analyze) колдонуу эс тутум маселелерин аныктоого жардам берет.