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