Junior — Middle
Çöp toplayıcının nesneleri kaldırmasını engellemeden, zayıf referanslar kullanarak nesneleri izleyen bir mekanizma uygulamak mümkün mü?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, iOS'ta (ve Swift'te) zayıf referanslar (weak references) mekanizması vardır; bu, nesneleri takip etmeye olanak tanır, onları bellekte tutmadan ve çöp toplayıcıdan (ARC) kaldırılmalarını engellemeden.
Zayıf bir referans, nesnenin referans sayacını artırmaz, bu nedenle güçlü referanslar kalmadığında nesne bellekten serbest bırakılır.
Swift'te zayıf referans kullanımı örneği:
class Person {
let name: String
init(name: String) {
self.name = name
}
}
class Apartment {
weak var tenant: Person? // zayıf referans
}
var person: Person? = Person(name: "Ivan")
var apartment: Apartment? = Apartment()
apartment?.tenant = person
person = nil // Person nesnesi silinecek, çünkü güçlü referans kalmadı
print(apartment?.tenant) // nil
Bu şekilde, zayıf referanslar nesneleri takip etmeye olanak tanır, nesnelerin silinmesini engellemeden.