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.