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-ის (enum) მასივები ინახავენ თავიანთი ელემენტების ასლებს. თუმცა, თუ მასივი შეიცავს კლასის ინстанციებს (class), ის ინახავს ამ ინстанციებზე ძლიერი მითითებებს.