Junior — Middle
Ի՞նչ քայլեր պետք է ձեռնարկվեն օբյեկտի կամ ռեսուրսի ճիշտ ոչնչացման համար։
sobes.tech AI
Պատասխան AI-ից
iOS-ում օբյեկտի ճիշտ ոչնչացումը կամ ռեսուրսների ազատումը պետք է կատարվի հետևյալ քայլերով՝
- Կապակցված ռեսուրսները ազատել — օրինակ, փակել ֆայլերը, կանգնեցնել ժամացույցները, չեղարկել ցանցային հարցումները:
- Դիտորդներ և ծանուցումներ հեռացնել — եթե օբյեկտը գրանցված է ծանուցումների կամ KVO-ի համար, պետք է դուրս գրանցվել, որպեսզի խուսափել հիշողության լիքներից:
- Կանխատեսելի կապերը զրոյացնել — եթե կա ցիկլային կապեր, դրանք կոտրեք, որպեսզի ARC-ը կարողանա ազատել հիշողությունը:
- Մաքրման աշխատանքներ կատարել
deinitմեթոդում — Swift-ում,deinit-ը օգտագործվում է վերջին գործողությունները կատարել օբյեկտի ոչնչացման նախորդ:
Օրինակ՝
class MyResource {
var timer: Timer?
init() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
print("Tick")
}
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: .someNotification, object: nil)
}
@objc func handleNotification() {
// մշակել
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource ոչնչացվեց")
}
}
Այսպիսով, ճիշտ ոչնչացումը ապահովում է ռեսուրսների ազատումը և կանխում հիշողության լիքները։