Sobes.tech
Junior — Middle

Projelerinde Unowned türünde referans değişkenleri kullandınız mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, iOS projelerinde unowned türünde referans değişkenleri kullandım.

unowned, referans sayacını artırmayan, ancak referans verilen nesnenin kullanım sırasında her zaman var olacağını varsayan zayıf bir referans türüdür.

Bu, güçlü referans döngülerini önlemek için faydalıdır, örneğin kapanışlarda veya nesneler arasında karşılıklı referanslar söz konusu olduğunda, bir nesnenin diğerinden daha uzun süre yaşayacağı garanti edildiğinde.

unowned kullanımı örneği:

class Person {
    let name: String
    var apartment: Apartment?
    
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    unowned let tenant: Person
    
    init(unit: String, tenant: Person) {
        self.unit = unit
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt

Burada, tenant unowned olarak ilan edilmiştir çünkü daire, kiracı olmadan var olmamalıdır ve bu, güçlü referans döngüsünü engeller.