Junior — Middle
შეგიძლიათ ახსნათ Swift-ის გარღვევის მექანიზმი და როგორ მართავს იგი მეხსიერებას?
sobes.tech AI
პასუხი AI-სგან
Swift-შიში კლასიკური garbage collector (მოწმენდის აგროვებელი) არ არსებობს, როგორც ზოგ სხვა ენებში. ამის ნაცვლად, გამოიყენება ავტომატური მითითებების გამოთვლა (ARC - Automatic Reference Counting).
ARC ასე მუშაობს: თითოეულ ობიექტს მეხსიერებაში აქვს მითითებების გამოთვლის გამოთვლა, რომელიც იზრდება ახალი მითითების შექმნისას და მცირდება, როდესაც მითითება წაიშლება ან nil ხდება. როდესაც ობიექტის მითითებების გამოთვლის გამოთვლა მიაღწევს ნულს, ობიექტი ავტომატურად წაიშლება მეხსიერებიდან.
მაგალითი:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Иван")
var person2 = person1 // გამოთვლის გამოთვლა იზრდება
person1 = nil // გამოთვლა მცირდება, მაგრამ ობიექტი ჯერ კიდევ ცოცხალია, რადგან person2 მასზე მიუთითებს
person2 = nil // გამოთვლა მიაღწევს ნულს და ობიექტი წაიშლება
ამგვარად, მეხსიერების მართვა Swift-ში ავტომატურია, ხელით მოწოდების საჭიროება არ არის, რაც ზრდის შესრულებას და ამცირებს მეხსიერების გაჟონვის ალბათობას სწორად გამოყენებისას.