Sobes.tech
Junior — Middle

Jak można zrobić słabe odniesienie w języku programowania?

sobes.tech AI

Odpowiedź od AI

W iOS (Swift) do tworzenia słabej referencji używa się słowa kluczowego weak. Słaba referencja nie zwiększa licznika odwołań do obiektu, co pomaga unikać cykli zatrzymania i wycieków pamięci.

Przykład:

class Person {
    var name: String
    weak var apartment: Apartment? // słaba referencja

    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    var tenant: Person? // silna referencja

    init(unit: String) {
        self.unit = unit
    }
}

// Użycie:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john

W tym przykładzie Person zawiera słabą referencję do Apartment, aby uniknąć cyklu zatrzymania między Person a Apartment. Gdyby obie referencje były silne, obiekty nie zostałyby zwolnione z pamięci.

Ważne: słabe referencje powinny być opcjonalne (?), ponieważ obiekt, na który się odwołują, może zostać usunięty.