Sobes.tech
Middle

Yönetim yapısı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te yöntemlerin üç temel dağıtım tipi vardır:

  1. Doğrudan Dağıtım (Direct Dispatch): En hızlıdır. Derleyici, hangi yöntemin çağrılacağını derleme sırasında kesin olarak bilir. Varsayılan olarak yapılar, final-anahtar kelimesiyle belirtilmiş sınıflar, özel yöntemler için kullanılır.

    struct MyStruct {
        func directMethod() { // Doğrudan Dağıtım
            print("Direct")
        }
    }
    
  2. Tablo Dağıtımı (Table Dispatch): Sınıf yöntemleri (final olmayan) için kullanılır. Her sınıfın sanal yöntem tablosu (vtable) vardır ve her yöntemin benzersiz bir indeksi bulunur. Derleyici, çalışma zamanında vtable'a erişerek gerekli uygulamayı bulur. Çok biçimlilik sağlar.

    class MyClass {
        func tableMethod() { // Tablo Dağıtımı
            print("Table")
        }
    }
    
    class MySubClass: MyClass {
        override func tableMethod() { // Geçersiz kılınmış yöntem, tabloyu da kullanır
            print("Table override")
        }
    }
    
  3. Mesajlar aracılığıyla Dağıtım (Message Dispatch): En esnek, ancak en yavaş. @objc dynamic ile işaretlenmiş objc yöntemleri için kullanılır. Objective-C sistemi, çalışma zamanında yöntemi adından (seçici) bulur.

    @objc class MyObjcClass: NSObject {
        @objc dynamic func messageMethod() { // Mesajlar aracılığıyla Dağıtım (ObjC, dinamik)
            print("Message")
        }
    }
    
Dağıtım Türü Hız Esneklik (çok biçimlilik, dinamiklik) Varsayılan kullanım yeri
Doğrudan Hızlı Düşük Yapılar, final sınıflar/yöntemler, özel
Tablo tabanlı Orta Orta Sınıf yöntemleri
Mesajlar aracılığıyla Yavaş Yüksek @objc dynamic yöntemleri (Objective-C)