Sobes.tech
Middle

Πώς λειτουργούν οι μετρητές (retention counts) με ισχυρούς συνδέσμους στο iOS;

sobes.tech AI

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

Όταν αναθέτετε ένα αντικείμενο σε μια μεταβλητή με ισχυρή αναφορά, ο μετρητής αναφορών του αντικειμένου αυξάνεται κατά 1. Όταν η ισχυρή αναφορά μηδενίζεται ή βγαίνει από το πεδίο ορατότητας, ο μετρητής αναφορών μειώνεται κατά 1. Το αντικείμενο αποδεσμεύεται όταν ο μετρητής αναφορών φτάσει το μηδέν και δεν έχει πλέον ισχυρές αναφορές.

Παράδειγμα:

class MyObject {
    deinit {
        // Καλείται κατά την αποδέσμευση του αντικειμένου
        print("MyObject αποδεσμεύτηκε.")
    }
}

var object1: MyObject? = MyObject() // object1 - ισχυρή αναφορά, μετρητής αναφορών του MyObject == 1
var object2 = object1 // object2 - ισχυρή αναφορά, μετρητής αναφορών του MyObject == 2

object1 = nil // Η ισχυρή αναφορά object1 μηδενίζεται, μετρητής αναφορών του MyObject == 1
object2 = nil // Η ισχυρή αναφορά object2 μηδενίζεται, μετρητής αναφορών του MyObject == 0
// Το MyObject αποδεσμεύεται