Sobes.tech
Junior — Middle

Դու ունե՞ս փորձ՝ որոնելու և վերացնելու հիշողության կամ ռեսուրսների թափոնները քո նախագծերում։

sobes.tech AI

Պատասխան AI-ից

Այո, iOS նախագծերում ես հանդիպել եմ հիշողության արտահոսքի, որոնք սովորաբար կապված են օբյեկտների միջև ցիկլային հղումներով, օրինակ՝ փակման և դասերի միջև։ Այդ արտահոսքերը հայտնաբերելու համար օգտագործել եմ Xcode-ի Instruments գործիքները՝ Leaks և Allocations պրոֆիլներով։

Ես ուղղել եմ արտահոսքերը՝ կիրառելով թույլ (weak) կամ առանց սեփականության (unowned) հղումներ այնտեղ, որտեղ դա անհրաժեշտ էր՝ պահման ցիկլերը կտրելու համար։ Նույնպես ստուգել եմ ռեսուրսների ճիշտ ազատումը և ծանուցումների դուրս գրանցումը։

Թույլ հղման օրինակ փակման մեջ՝

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

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