Published on

Swiftda Deinitialization

Authors

Deinitialization β€” bu class instancelarini ular kerak bo'lmaganda xotiradan o'chirish jarayoni. Bu tizim tomonidan band qilingan xotira joyini bo'shatadi.

Deinitializer yaratish uchun deinit kalit so'zidan foydalanamiz. Masalan,

class Race {
  ...

  // deinitializer yaratish
  deinit {
    // deinitialization bajarish
    ... 
  }
} 

Bu yerda deinit β€” Race classining deinitializeri.

Deinitializerlar haqida o'rganishdan oldin Swift Initializer mavzusini o'rgangan bo'lishingiz kerak.

Misol:

// class e'lon qilish
class Race {
  var laps: Int     // aylanishlar soni

  // initializer e'lon qilish
  init() {
    laps = 5
    print("Poyga yakunlandi")
    print("Jami aylanishlar:", laps)
  }

  // deinitializer e'lon qilish
  deinit {
    print("Xotira bo'shatildi")
  }
}

// instance yaratish
var result: Race? = Race()

// obyektni xotiradan o'chirish
result = nil

Natija:

Poyga yakunlandi
Jami aylanishlar: 5
Xotira bo'shatildi

Yuqoridagi misolda:

  1. Race classi ichida deinitializer yaratdik.
deinit {
  print("Xotira bo'shatildi")
}
  1. Keyin Race classidan instance yaratdik va uni result nomli Race turli o'zgaruvchiga tayinladik.
// instance yaratish
var result: Race? = Race()

Bu yerda Race? β€” result optional ekanligini bildiradi, ya'ni u ikki xil qiymat saqlashi mumkin:

  • Race turidagi qiymatlar
  • nil qiymati
  1. Nihoyat, result ga nil qiymatini tayinladik:
// instanceni xotiradan o'chirish
result = nil

Bu instanceni xotiradan o'chiradi. Deinitializer class instancesi xotiradan o'chirilishidan oldin avtomatik ravishda chaqiriladi. Va ichidagi operator bajariladi.

Eslatma:

  • Swiftda deinitializerlardan faqat instancelarni qo'lda xotiradan o'chirmoqchi bo'lganimizda foydalanamiz. Aks holda, Swift avtomatik ravishda xotiradan o'chirishni amalga oshiradi.
  • Deinitializerlar faqat classlar bilan ishlatiladi, structlar bilan emas.
  • Har bir classda faqat bitta deinitializer bo'lishi mumkin.