Sobes.tech
Junior — Middle

Kas teil on kogemusi mälu või ressursside lekkide otsimisel ja kõrvaldamisel oma projektides?

sobes.tech AI

Vastus AI-lt

Jah, iOS projektides olen ma memori lekkedega kokku puutunud, mis tavaliselt on seotud tsükliliste viidetega objektide vahel, näiteks sulgude ja klasside vahel. Nende lekkide tuvastamiseks kasutasin Xcode Instruments tööriistu koos Leaks ja Allocations profiilidega.

Lekkide parandamiseks kasutasin nõrku (weak) või omandita (unowned) viiteid seal, kus see oli vajalik, et katkestada hoidmis tsüklid. Samuti kontrollisin ressursside õiget vabastamist ja teavitustest loobumist.

Nõrga viite näide sulgus:

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

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