Sobes.tech
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.