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.