Sobes.tech
Junior — Middle

Ποια βήματα πρέπει να ακολουθηθούν για την σωστή καταστροφή ενός αντικειμένου ή πόρου;

sobes.tech AI

Απάντηση από AI

Για σωστό τερματισμό ενός αντικειμένου ή απελευθέρωση πόρων στο iOS, πρέπει να ακολουθήσετε τα παρακάτω βήματα:

  1. Απελευθερώστε τους σχετικούς πόρους — για παράδειγμα, κλείστε αρχεία, σταματήστε χρονόμετρα, ακυρώστε αιτήματα δικτύου.
  2. Καταργήστε παρατηρητές και ειδοποιήσεις — αν το αντικείμενο είναι εγγεγραμμένο σε ειδοποιήσεις ή KVO, πρέπει να απογραφεί για να αποφευχθούν διαρροές.
  3. Μηδενίστε τις ισχυρές αναφορές — αν υπάρχουν κυκλικές αναφορές, διακόψτε τες ώστε το ARC να μπορεί να ελευθερώσει τη μνήμη.
  4. Εκτελέστε καθαρισμό στη μέθοδο 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 καταστράφηκε")
    }
}

Έτσι, ο σωστός τερματισμός διασφαλίζει την απελευθέρωση πόρων και αποτρέπει διαρροές μνήμης.