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)
}
}
}