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.