Sobes.tech
Junior — Middle

Hogyan lehet gyenge hivatkozást készíteni egy programozási nyelvben?

sobes.tech MI

Válasz az MI-től

iOS (Swift) környezetben a gyenge hivatkozás létrehozásához a weak kulcsszót használjuk. A gyenge hivatkozás nem növeli az objektum referencia számlálóját, ezáltal segít elkerülni a memória ciklusokat és szivárgásokat.

Példa:

class Person {
    var name: String
    weak var apartment: Apartment? // gyenge hivatkozás

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

class Apartment {
    let unit: String
    var tenant: Person? // erős hivatkozás

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

// Használat:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john

Ebben a példában a Person tartalmaz egy gyenge hivatkozást az Apartment-re, hogy elkerülje a memória ciklusokat. Ha mindkét hivatkozás erős lenne, az objektumok nem szabadulnának fel a memóriából.

Fontos: a gyenge hivatkozásoknak opcionálisnak kell lenniük (?), mivel a rájuk hivatkozó objektum törölhető.