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:
- 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.
- Yaddaş tələbi: Sistem, lazım olan ölçüdə yaddaşı yığışdırmaq üçün sorğu göndərir.
- 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.
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.- 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")