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:
- 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.
- İ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. - İ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.
- 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.
- Deinit: Sinifin
deinitmetodu (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