Swift yerel temel sınıf veya NSObject
Dışarı Swift ile isa swizzling bazı test ettim, ve sadece NSObject süper sınıf (doğrudan veya daha fazla), veya kullanarak olduğunda çalışır bulundu '@objc' dekorasyon. Aksi takdirde statik - taban-Merkez stili, C gibi takip edecek .
Kakao/NSObject bir temel sınıf olmadan Hızlı bir sınıf tanımlamak için normal mi? Eğer öyle ise bu Objective-C, yöntem durdurma gibi dinamizmini çok yukarıda ve çalıştırma içgözlem demek endişeliyim.
Çalışma zamanı dinamik davranış özellikleri özellik gözlemciler gibi, Temel Veri, Aspect Oriented Programming, Higher Order Messaging, analitik ve günlük çerçeveler çok yer alıyor.
Yöntem çağırma kullanarak Objective-C tarzı 20 makine kodu bu yüzden bazı durumlarda bir yöntem çağrısı için işlenen, etrafında ekler (çok sıkı küçük gövdeli yöntemleri çağırır) C tipi statik ve taban daha iyi gönderme gerçekleştirin.
Ama genel 95-5 kuralı verilirPerformans artışı • % kodu %5 ayarlama), duygusu güçlü, dinamik özellikleri ile baÅŸlayıp nerede sertleÅŸmesine deÄŸil mi gerekli?
CEVAP
NSObject amacı olan Swift sınıfları:
- olan Objective-C sınıfları kendilerini
- kullanım aramalar için
objc_msgSend()
(En) yöntemleri - (en) yöntemi uygulamaları için Objective-C çalışma zamanı meta verileri sağlar
NSObject alt sınıfları değil, Swift sınıfları:
- Objective-C sınıfları vardır, ama NSObject uyumluluk için yöntemleri sadece bir avuç uygulamak
- onların yöntemleri için çağrı (varsayılan)
objc_msgSend()
kullanmayın - sağlamaz Objective-C çalışma zamanı yöntem uygulamaları (varsayılan) için meta verileri
Swift sınıflara NSObject sen Objective-C esneklik aynı zamanda Objective-C performans zamanı. NSObject eğer Objective-C ihtiyacın olursa ... performansı kaçınarak esneklik.
Düzenleme:
Xcode 6 beta 6, dinamik özniteliği görünür. Bu bize bir dinamik dağıtım yöntemi kullanması gerektiğini Swift istemek için izin verir, ve bu nedenle ele geçirilmesine destek verecek.
public dynamic func foobar() -> AnyObject {
}
Arayüz vs Temel sınıf...
En iyi yöntem: kurucu sınıf alanları v...
C , sanal bir temel sınıf nedir?...
*.h veya *.hes sınıf tanımları...
Bir temel sınıf'In sanal işlev İ&...