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:
-
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") } } -
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") } } -
Mesajlar aracılığıyla Dağıtım (Message Dispatch): En esnek, ancak en yavaş.
@objc dynamicile 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) |