Middle
Sınıf nesnelerini güçlü referansla diziye nasıl saklayabiliriz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir sınıf nesnesi dizide varsayılan olarak güçlü referanslar aracılığıyla saklanır, eğer dizi sınıf türü öğeler içeriyorsa. [MyClass] veya Array<MyClass> dizisi, MyClass örneklerine güçlü referanslar tutacaktır.
Örnek:
class MyClass {
let id: Int
init(id: Int) {
self.id = id
print("MyClass \(id) oluşturuldu")
}
deinit {
print("MyClass \(id) serbest bırakıldı")
}
}
var güçlüReferansDizi: [MyClass] = []
for i in 0..<3 {
let obj = MyClass(id: i)
güçlüReferansDizi.append(obj) // Dizi güçlü referanslar tutar
}
print("Dizide \(güçlüReferansDizi.count) öğe var")
// Nesneler, dizide güçlü referanslar olduğu sürece serbest bırakılmaz
// Diziye `nil` atamak veya öğeleri kaldırmak, başka güçlü referanslar yoksa serbest bırakmaya yol açar.
// güçlüReferansDizi = [] // Tüm güçlü referansları serbest bırakma örneği
// güçlüReferansDizi.remove(at: 0) // Bir güçlü referansı serbest bırakma örneği
Swift'te, değer dizileri (struct) veya enum dizileri (enum) öğelerinin kopyalarını tutar. Ancak, eğer dizi sınıf örnekleri (class) içeriyorsa, bu örneklere güçlü referanslar tutar.