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 განადგურდა")
}
}
ამ გზით, სწორი განადგურება უზრუნველყოფს რესურსების გათავისუფლებას და მეხსიერების ნაკადების თავიდან აცილებას.