Junior
Deinitializator nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Deinitializator (deinit) xüsusi bir metoddur və sinif nümunəsi yaddaşdan azad edilən zaman dərhal əvvəl çağrılır. Lazımi təmizləmə və ya yekunlaşdırma işlərini həyata keçirmək üçün istifadə olunur.
Əsas xüsusiyyətlər:
- Yalnız sinflərdə mövcuddur. Struktur və tərtibdə deinit yoxdur.
- Sinif üçün yalnız bir də ola bilər.
- Parametr qəbul etmir və dəyər qaytarmır.
- Avtomatik olaraq çağrılır. Açıqlama ilə çağrıla bilməz.
- Superklassdan irsən alınır. Subklassın deinit-i superklassın deinit-dən əvvəl çağrılır.
deinit üçün tipik vəzifələr:
- Resursların azad edilməsi (məsələn, faylları bağlamaq, bildirişləri ləğv etmək, şəbəkə sorğularını ləğv etmək).
- Digər obyektlərin və ya vəziyyətlərin təmizlənməsi.
İstifadə nümunəsi:
class FileHandler {
var fileDescriptor: Int32?
init(filePath: String) {
// Faylı açırıq
fileDescriptor = open(filePath, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR)
if fileDescriptor == -1 {
print("Faylı açmaq mümkün olmadı")
fileDescriptor = nil
} else {
print("Fayl açıldı, deskriptor: \(fileDescriptor!)")
}
}
deinit {
// Obrazı azad etməzdən əvvəl faylı bağlayırıq
if let fd = fileDescriptor {
close(fd)
print("Deskriptor ilə fayl bağlandı: \(fd)")
}
print("FileHandler nümunəsi deinitializə olundu.")
}
}
// Sinif nümunəsi yaradılır
var handler: FileHandler? = FileHandler(filePath: "mydata.txt")
// Fayl ilə işləmək
// Nümunəni azad etmək üçün referansı sıfırla
handler = nil // Burada `deinit` çağrılacaq
deinit Swift-in avtomatik referans sayımı (ARC) yaddaş idarəetmə mexanizmi ilə sıx bağlıdır. ARC obyektlərə olan referansları izləyir. Güclü referansların sayı sıfıra çatanda, ARC obyekti azad edir və onu azad etməzdən əvvəl onun deinit metodunu çağırır.