Sobes.tech
Middle

Siniflərin başlanması yaddaş ayırması ilə necə əlaqəlidir?

sobes.tech Süni İntellekt

AI-dan cavab

Sınıfın bir nesnesinin başlatılması sırasında, onun saxlanması üçün yaddaş ayrılır. Bu proses aşağıdakı addımları əhatə edir:

  1. Həcmin hesablanması: Sistem, sinif nümunəsinin bütün xüsusiyyətləri və metadataları (məsələn, virtual metodlar cədvəlinə göstərici) üçün lazım olan yaddaş miqdarını müəyyən edir.
  2. Yaddaş tələbi: Sistem, lazım olan ölçüdə yaddaşı yığışdırmaq üçün sorğu göndərir.
  3. Yaddaş ayırma: Əgər kifayət qədər boş yer varsa, yığışdırma yaddaş blokunu ayırır və ona göstərici qaytarır.
  4. init çağırışı: Ayırılmış yaddaşa göstərici alındıqdan sonra, sistem müvafiq sinifin (init) başlanğıc vəziyyətini tənzimləmək üçün çağırır. İnit başa çatdıqda, əlavə resurslar ayırmaq və ya digər obyektlər yaratmaq mümkündür.
  5. Nümunənin geri qaytarılması: İnit işi tamamlayır və sistem yaradılmış və initsializasiya olunmuş sinif nümunəsinə istinad qaytarır.

Ayırılmış yaddaş, obyekt azad edilənə qədər (Memory Management System tərəfindən) istifadə üçün saxlanılır (Automatic Reference Counting - ARC iOS-da).

Nümunə:

class MyClass {  
    var number: Int  
    var text: String  

    init(number: Int, text: String) {  
        // Bu mərhələdə, nümunə üçün yaddaş artıq ayrılmışdır.  
        self.number = number // Xüsusiyyətə təyin etmə  
        self.text = text     // Xüsusiyyətə təyin etmə  
        // İnit tamamlandıqda, obyekt istifadəyə hazırdır.  
    }  
}  

// MyClass nümunəsinin yaradılması.  
// Bu, yaddaş ayırma və init() çağırışını əhatə edir.  
let myObject = MyClass(number: 42, text: "Hello")