Sobes.tech
Junior

Czym są modyfikatory pamięci strong?

sobes.tech AI

Odpowiedź od AI

Modyfikator strong w Swift wskazuje, że odwołanie do obiektu zwiększa licznik odwołań do tego obiektu o jeden. Oznacza to, że obiekt będzie przechowywany w pamięci tak długo, jak istnieje co najmniej jedno silne odwołanie do niego.

Domyślnie używany jest dla typów referencyjnych (klas). Przypisanie nil do zmiennej z modyfikatorem strong zmniejsza licznik odwołań. Gdy licznik odwołań osiągnie zero, obiekt zostanie zwolniony z pamięci.

Przykład:

class Person {
    var name: String
    init(name: String) {
        self.name = name
        print("\(name) jest inicjalizowany")
    }
    deinit {
        print("\(name) jest deinitializowany")
    }
}

var reference1: Person?
var reference2: Person?

reference1 = Person(name: "Alice") // Licznik odwołań do Alice: 1
reference2 = reference1           // Licznik odwołań do Alice: 2

reference1 = nil                   // Licznik odwołań do Alice: 1
reference2 = nil                   // Licznik odwołań do Alice: 0, Alice jest deinitializowana