Sobes.tech
Junior — Middle

Vai jums ir pieredze atmiņas vai resursu noplūdes meklēšanā un novēršanā savos projektos?

sobes.tech AI

Atbilde no AI

Jā, iOS projektos esmu sastapis ar atmiņas noplūdēm, kas parasti saistītas ar cikliskām atsaucēm starp objektiem, piemēram, starp aizkavējumiem un klasēm. Šos noplūdes gadījumus es atklāju, izmantojot Xcode Instruments ar profileriem Leaks un Allocations.

Noplūdes es novērstu, izmantojot vājas (weak) vai bez īpašnieka (unowned) atsauces tur, kur tas bija nepieciešams, lai pārtrauktu noturēšanas ciklus. Tāpat es pārbaudīju resursu pareizu atbrīvošanu un paziņojumu noņemšanu.

Vājas atsauces piemērs aizkavējumā:

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

    func setupClosure() {
        closure = { [weak self] in
            guard let self = self else { return }
            print(self.view)
        }
    }
}