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 καταστράφηκε")
}
}
Έτσι, ο σωστός τερματισμός διασφαλίζει την απελευθέρωση πόρων και αποτρέπει διαρροές μνήμης.