Sobes.tech
Middle

Sınıf başlatma işlemi bellek tahsisiyle nasıl ilişkilidir?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS'ta sınıfın başlatılması aşağıdaki şekilde bellek tahsisi ile ilgilidir:

  1. Bellek Tahsisi: Bir sınıf örneği (nesne) oluşturulduğunda, çalışma zamanı bu nesnenin özellikleri ve diğer verilerini depolamak için bir bellek bloğu tahsis eder. Tahsis edilen bellek boyutu, sınıfın yapısına bağlıdır, özelliklerin türleri ve sayısı dahil.
  2. İnitiyalizatörler: Sınıfın (init) başlatıcıları, bellek tahsisinden sonra yeni nesnenin özelliklerinin başlangıç değerlerini belirlemekle sorumludur. Bu süreç, nesnenin kullanıma uygun doğru durumda olmasını sağlar.
  3. Referanslar: Swift'te nesneler referans tipleridir. Bir sınıf örneği oluşturduğunuzda, aslında nesnenin depolandığı bellek konumuna bir referans alırsınız. Bu referans, nesnenin özelliklerine ve metodlarına erişmek için kullanılır.
  4. ARC (Otomatik Referans Sayımı): ARC, bir sınıf örneğine olan güçlü referansların sayısını otomatik olarak izler. Bir nesneye olan güçlü referans sayısı sıfıra düştüğünde, ARC bu nesne için tahsis edilen belleği serbest bırakır. Başlatma, güçlü referans sayısını artırır.
  5. Deinit: Sınıfın deinit metodu (desinitalizatör), ARC belleği serbest bırakmadan hemen önce çağrılır. Kaynakları serbest bırakmak gibi temizlik işlemleri yapmak için kullanılır.
class MyClass {
    let myProperty: Int // Bellek gerektiren özellik
    
    init(value: Int) {
        self.myProperty = value // Bellek tahsisinden sonra özelliğin başlatılması
        print("MyClass örneği oluşturuldu (bellek tahsis edildi ve başlatıldı).")
    }
    
    deinit {
        print("MyClass örneği yok edildi (bellek serbest bırakıldı).")
    }
}

// Sınıf örneği oluşturma - bellek tahsisi ve init çağrısı
var instance: MyClass? = MyClass(value: 10)

// Referansı serbest bırakma - ARC bellek serbest bırakmayı izlemeye başlar
instance = nil // instance referansı sıfırlandığında, ARC belleği serbest bırakabilir ve deinit'i çağırabilir