Junior
Swift'te weak bellek modifikasyonu nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
weak değiştiricisi, nesneler arasındaki güçlü referans döngülerini (reference cycles) kırmak için kullanılır; bir nesne diğerine güçlü bir referans tutarken, ve bu nesne de geri güçlü bir referansa sahipse.
weak'in temel özellikleri:
- Referans sayacını artırmaz:
weakkullanımı, nesne üzerindeki güçlü referans sayısını artırmaz. nilolabilir: Zayıf referans, opsiyonel (Optional) olup, referans aldığı nesne deinitializasyon sırasında otomatik olaraknilolur.- Parent/child ilişkilerinde kullanılır: Çocuk nesnenin, ebeveynine referans vermesi gereken durumlarda, güçlü referans döngülerini önlemek için sıkça kullanılır.
varolarak bildirilmelidir: Zayıf referansnilolabileceği için,letyerinevarolarak tanımlanmalıdır.
Kullanım örneği:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
print("\(name) başlatılıyor")
}
deinit {
print("\(name) sonlandırılıyor")
}
}
class Apartment {
let unit: String
weak var tenant: Person? // Zayıf referans
init(unit: String) {
self.unit = unit
print("Daire \(unit) başlatılıyor")
}
deinit {
print("Daire \(unit) sonlandırılıyor")
}
}
Apartment sınıfında weak var tenant: Person? olmadan, güçlü referans döngüsü oluşur ve Person ile Apartment örnekleri, başka güçlü referanslar kalmadığında bile deinitialization gerçekleşmez. weak sayesinde, Person örneği deinitializasyonu sırasında, Apartment içindeki tenant referansı otomatik olarak nil olur.