Sobes.tech
Junior — Middle

Swift'te kodda `unowned` operatörünün kullanıldığı bir örnek verebilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te unowned operatörü, zayıf bir referans ilan etmek için kullanılır ve bu referansın gösterdiği nesnenin erişim sırasında her zaman var olduğunu varsayar. Bu, güçlü referans döngülerini önlemek için faydalıdır, örneğin kapanışlar veya birbirine referans veren nesnelerle çalışırken, bir nesnenin diğerinden daha uzun süre yaşaması garanti edildiğinde.

unowned kullanımıyla ilgili bir örnek:

class Person {
    let name: String
    var apartment: Apartment?

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

    lazy var printApartment = { [unowned self] in
        if let apt = self.apartment {
            print("\(self.name) dairede yaşıyor \(apt.number)")
        } else {
            print("\(self.name) daireye sahip değil")
        }
    }
}

class Apartment {
    let number: Int
    unowned let tenant: Person

    init(number: Int, tenant: Person) {
        self.number = number
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt1 = Apartment(number: 101, tenant: john)
john.apartment = apt1

john.printApartment() // Çıktı: John dairede yaşıyor 101

Burada, unowned Apartment'tan Person'a referans için kullanılır, böylece güçlü referans döngüsü önlenir ve Person'ın Apartment'tan daha uzun yaşaması varsayılır.