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) же энумдар (enum) массивдери өз элементтеринин көчүрмөлөрүн сактайт. Бирок, эгер массив класс үлгүлөрүн (class) камтыса, ал ошол үлгүлөргө күчтүү шилтемелерди сактайт.