Sobes.tech
Junior — Middle

Кадом усулҳоро барои ошкор кардани шикастҳои хотира дар лоиҳаҳои худ истифода мебаред?

sobes.tech AI

Ҷавоб аз AI

Барои ёфт кардани шикасти хотира дар лоиҳаҳои iOS, одатан ман истифода мекунам усулҳои зерин:

  • Истифодаи асбоби Instruments (хусусан Leaks ва Allocations) барои назорат кардани истифодаи хотира ва муайян кардани шикастҳо.
  • Таҳлили даврҳои ишораҳои қавӣ (retain cycles) бо ёрии Debugger-и графи хотира дар Xcode.
  • Санҷиши истифодаи дурусти ишораҳои заиф (weak) ва беҳуқуқ (unowned) дар closure ва делегатҳо.

Масалан: агар объект A объект B-ро нигоҳ дорад, ва B дар closure A-ро нигоҳ дорад бе weak, даврҳои нигоҳдорӣ пайдо мешаванд ва хотира озод намешавад.

class ViewController {
    var closure: (() -> Void)?
    func setup() {
        closure = { [weak self] in
            print(self?.description ?? "No self")
        }
    }
}

Ин истифодаи [weak self] пешгирӣ мекунад шикастро.