Sobes.tech
Middle

Sinif obyektlərini güclü istinadla massivdə necə saxlamaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Sınıf obyektləri massivdə güclü referanslar vasitəsilə saxlanılır, əgər massiv sinif tipi elementlər ehtiva edirsə. [MyClass] və ya Array<MyClass> massivləri MyClass nümunələrinə güclü referanslar saxlayacaq.

Misal:

class MyClass {
    let id: Int
    init(id: Int) {
        self.id = id
        print("MyClass \(id) yaradıldı")
    }
    deinit {
        print("MyClass \(id) sərbəst buraxıldı")
    }
}

var güclüReferanslarMassivi: [MyClass] = []

for i in 0..<3 {
    let obj = MyClass(id: i)
    güclüReferanslarMassivi.append(obj) // Massiv güclü referanslar saxlayır
}

print("Massivdə \(güclüReferanslarMassivi.count) element var")

// Obyektlər, massivdə güclü referanslar olduğu müddətcə sərbəst buraxılmayacaq
// Massivə `nil` təyin etmək və ya elementləri silmək, başqa güclü referanslar yoxdursa, sərbəst buraxılmağa səbəb olacaq.

// güclüReferanslarMassivi = [] // Bütün güclü referansların sərbəst buraxılması nümunəsi
// güclüReferanslarMassivi.remove(at: 0) // Bir güclü referansın sərbəst buraxılması nümunəsi

Swift-də, dəyər tiplərindən (struct) və ya enum-lərdən (enum) ibarət massivlər elementlərinin nüsxələrini saxlayır. Ancaq, əgər massiv sinif nümunələrini (class) ehtiva edirsə, o, bu nümunələrə güclü referanslar saxlayır.