Middle — Middle+
El lehet-e tekinteni a gyenge hivatkozást opcionálisnak, vagy másképp viselkedik?
sobes.tech MI
Válasz az MI-től
A Swiftben a gyenge hivatkozás olyan hivatkozás, amely nem növeli a hivatkozásszámlálót a rá mutató objektumon. Mindig opcionálisként van deklarálva, mert a rá mutató objektum törölhető a memóriából, és ilyenkor a gyenge hivatkozás automatikusan nil lesz.
Más szóval, a gyenge hivatkozás úgy viselkedik, mint egy opcionális: tartalmazhat értéket vagy nil-t. Ez fontos annak elkerülése érdekében, hogy hozzáférjünk egy már felszabadított objektumhoz.
Példa:
class Person {
var name: String
init(name: String) { self.name = name }
}
var person: Person? = Person(name: "Alex")
weak var weakPerson: Person? = person
print(weakPerson?.name) // Optional("Alex")
person = nil
print(weakPerson?.name) // nil, mivel az objektum törölve lett
Így a gyenge hivatkozás mindig opcionális, és automatikusan nil lesz az objektum törlésekor.