Sobes.tech
Middle

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

sobes.tech Süni İntellekt

AI-dan cavab

iOS-də sinfin ilkinləşdirilməsi aşağıdakı kimi yaddaş ayırması ilə əlaqəlidir:

  1. Yaddaş ayırması: Sinifin (obyektin) nümunəsini yaratdıqda, icra mühiti həmin obyektin xüsusiyyətləri və digər məlumatlarını saxlamaq üçün yaddaş blokunu ayırır. Ayırılan yaddaşın ölçüsü sinifin quruluşundan, xüsusiyyətlərin növlərindən və sayından asılıdır.
  2. İnitializatorlar: Sinifin (init) initalizatorları, yaddaş ayırmasından sonra yeni obyektin xüsusiyyətlərinin başlanğıc dəyərlərini təyin etməkdən məsuldur. Bu proses obyektin düzgün vəziyyətdə istifadəyə hazır olmasını təmin edir.
  3. İstinadlar: Swift-də obyektlər istinad növüdür. Sinif nümunəsini yaratdığınız zaman, əslində obyektin saxlandığı yerə istinad alırsınız. Bu istinad obyektin xüsusiyyətlərinə və metodlarına giriş üçün istifadə olunur.
  4. ARC (Avtomatik İstinad Sayımı): ARC, sinif nümunəsinə olan güclü istinadların sayını avtomatik izləyir. Obyektdə güclü istinadların sayı sıfıra çatdıqda, ARC həmin obyekt üçün ayırılmış yaddaşı azad edir. İbtidai vəziyyətdə, güclü istinadların sayı artır.
  5. Deinit: Sinifin deinit metodu (destruktor) ARC obyekt üçün ayırılmış yaddaşı azad etməzdən əvvəl dərhal çağırılır. Bu, resursların azad olunması kimi təmizləmə işlərini həyata keçirmək üçün istifadə olunur.
class MyClass {
    let myProperty: Int // Yaddaş tələb edən xüsusiyyət
    
    init(value: Int) {
        self.myProperty = value // Yaddaş ayırmasından sonra xüsusiyyətin ilkinləşdirilməsi
        print("MyClass nümunəsi yaradıldı (yaddaş ayırıldı və ilkinləşdirildi).")
    }
    
    deinit {
        print("MyClass nümunəsi məhv edildi (yaddaş azad edildi).")
    }
}

// Sinif nümunəsi yaratmaq - yaddaş ayırması və init çağırışı
var instance: MyClass? = MyClass(value: 10)

// İstinadı azad etmək - ARC yaddaşın azad olunmasını izləməyə başlayır
instance = nil // İstinad sıfırlandıqda, ARC yaddaşı azad edə və deinit-i çağırə bilər