Sobes.tech
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) камтыса, ал ошол үлгүлөргө күчтүү шилтемелерди сактайт.