Swift yerel temel sınıf veya NSObject | Netgez.com
SORU
5 HAZÄ°RAN 2014, PERÅžEMBE


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
5 HAZÄ°RAN 2014, PERÅžEMBE


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 {
}

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZÄ°RAN 2006
  • jagadambarecords

    jagadambarec

    13 AÄžUSTOS 2008
  • TitaniumBackup

    TitaniumBack

    10 EYLÃœL 2011