Junior — Middle
შესაძლებელია თუ არა მექანიზმის განხორციელება, რომელიც ობიექტებს უქმნის ზუსტ კავშირებს, ისე რომ მათი ამოღება მტვრის შეგროვებლის მიერ არ აიძულოს?
sobes.tech AI
პასუხი AI-სგან
ხოლო, iOS-ში (და Swift-ში) არსებობს სუსტი მითითებების (weak references) მექანიზმი, რომელიც საშუალებას აძლევს ობიექტების მონიტორინგს, მათ მეხსიერებაში შენახვის გარეშე და თავიდან აიცილოს მათი წაშლა გარჩევის (ARC) მიერ.
სუსტი მითითება არ ზრდის ობიექტის მითითებების რაოდენობას, ამიტომ როდესაც ძლიერი მითითებები აღარ რჩება, ობიექტი თავისუფლდება მეხსიერებიდან.
Swift-ში სუსტი მითითების გამოყენების მაგალითი:
class Person {
let name: String
init(name: String) {
self.name = name
}
}
class Apartment {
weak var tenant: Person? // სუსტი მითითება
}
var person: Person? = Person(name: "Ivan")
var apartment: Apartment? = Apartment()
apartment?.tenant = person
person = nil // ობიექტი Person წაიშლება, რადგან ძლიერი მითითებები აღარ რჩება
print(apartment?.tenant) // nil
ასე, სუსტი მითითებები საშუალებას აძლევს ობიექტების მონიტორინგს, მათი წაშლის ხელშესაშლელად.