Middle
Чӣ гуна метавон объектҳои синфҳоро дар массив бо истиноди қавӣ нигоҳ дошт?
sobes.tech AI
Ҷавоб аз AI
Объектҳои класа дар массив ба таври пешфарз бо истифода аз истинодҳои қавӣ нигоҳ дошта мешаванд, агар массив элементҳои навъи класа дошта бошад. Массив [MyClass] ё Array<MyClass> ба объектҳои MyClass истинодҳои қавӣ дорад.
Масалан:
class MyClass {
let id: Int
init(id: Int) {
self.id = id
print("MyClass \(id) сохта шуд")
}
deinit {
print("MyClass \(id) озод карда шуд")
}
}
var массиви истинодҳои қавӣ: [MyClass] = []
for i in 0..<3 {
let obj = MyClass(id: i)
массиви истинодҳои қавӣ.append(obj) // Массив нигоҳ медорад истинодҳои қавӣ
}
print("Массив дорои \(массиви истинодҳои қавӣ.count) унсурҳо")
// Нақшҳо то он даме ки истинодҳои қавӣ дар массив вуҷуд доранд, озод намешаванд
// Воҳид кардани `nil` ба массив ё хориҷ кардани унсурҳо, агар дигар истинодҳои қавӣ набошанд, озодшавӣ меояд.
// массиви истинодҳои қавӣ = [] // Намунаи озод кардани ҳама истинодҳои қавӣ
// массиви истинодҳои қавӣ.remove(at: 0) // Намунаи озод кардани як истинод қавӣ
Дар Swift, массивҳои арзишҳо (struct) ё enumeration (enum) нусхаҳои унсурҳои худро нигоҳ медоранд. Аммо, агар массив дорои намунаҳои класа (class) бошад, он истинодҳои қавӣ ба ин намунаҳоро нигоҳ медорад.