Biraz test ettim Swift ile bir swizzling ve yalnızca NSObject süper sınıf olduğunda (doğrudan veya daha ileri) veya '@objc' dekorasyonunu kullanarak çalıştığını gördüm. Aksi takdirde, C ++ gibi statik ve vtable gönderme stilini izleyecektir.
Cocoa / NSObject temel sınıfı olmadan bir Swift sınıfı tanımlamak normal midir? Endişeleniyorsam, bu, yöntem durdurma ve çalışma zamanı iç gözlemi gibi Objective-C dinamizminin çoğundan vazgeçmek anlamına gelir.
Dinamik çalışma zamanı davranışı, özellik gözlemcileri, Temel Veriler, Yöne Yönelik Programlama , Yüksek Sıralı Mesajlaşma , analitik ve günlükleme çerçeveleri ve benzeri özelliklerin merkezinde yer alır.
Objective-C'nin yöntem çağırma tarzını kullanmak, bir yöntem çağrısına yaklaşık 20 makine kodu işlenen ekler, bu nedenle belirli durumlarda ( küçük gövdeli yöntemlere yapılan birçok sıkı çağrı ) C ++ stili statik ve vtable gönderimi daha iyi performans gösterebilir.
Ancak genel 95-5 kuralı göz önüne alındığında ( performans kazanımlarının% 95'i kodun% 5'ini ayarlamadan gelir ), güçlü dinamik özelliklerle başlamak ve gerektiğinde sertleşmek mantıklı değil mi?