Sobes.tech
Junior — Middle

რის შემთხვევაში ითვლება, რომ ცვლადი დაკარგა აქტუალობა და ამოღებულია მეხსიერებიდან?

sobes.tech AI

პასუხი AI-სგან

iOS-ში, ცვლადი მიიჩნევა მოძველებულად და შეიძლება ამოიღოს მეხსიერებიდან, როდესაც მასზე აღარ არსებობს ძლიერი მითითებები (strong references). ეს ხდება ავტომატური მეხსიერების მართვის ARC (Automatic Reference Counting) საშუალებით.

მთავარი შემთხვევები, როდესაც ობიექტი ამოიღება მეხსიერებიდან:

  • ყველა ძლიერი მითითება ობიექტზე წაშლილია ან nil-ად არის დაყენებული.
  • ობიექტი აღარ არის სხვა ობიექტის მიერ შენახული.

მაგალითად, თუ გაქვთ ცვლადი, რომელიც მითითებულია ობიექტზე და მას უქმნით nil-ს ან გამოდის მასშტაბიდან, მითითებების გამრავლება მცირდება. როდესაც ის მიაღწევს ნულს, ობიექტი გათავისუფლდება.

class MyClass {}

var obj: MyClass? = MyClass()  // მითითებების რაოდენობა = 1
obj = nil                      // მითითებების რაოდენობა = 0, ობიექტი ამოღებულია

ასე, ცვლადი ხდება მოძველებული, როდესაც მასზე აღარ არსებობს ძლიერი მითითებები, და ობიექტის მეხსიერება გათავისუფლებულია.