2014-06-05 16 views
24

İnternette gezindikten sonra ve internette gezindikten sonra internette dolaştıktan sonra, Java'da bir arayüzün (java'da) veya protokoldeki (c nesnesinde) bir protokolün ne olduğunu bulmaya çalışırken yeni Swift dilini arıyorum. Apple, hala onu bulamıyorum.Hızlı bir şekilde java arabirimleri veya nesnel c protokolleri için eşdeğer nedir?

Bu bileşenin adı neyin hızlı olduğunu ve sözdiziminin ne olduğunu biliyor mu? Eğer sınıflar değil, aynı zamanda yapılar ve çeteleler üzerinde sadece bunları kullanabilir hariç

+4

Swift'de protokoller var. [Dokümanlar bağlantısı] (https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-XID_345) –

+5

"Protokoller "- Swift kitabının Sayfa 464'ü –

cevap

35

Protocols in Swift, objc çok benzeyen:

+0

Hata alıyorum. lütfen 'ViewController', ViewController'ın "SomeProtoco" 'yu ​​uyguladığım sınıfım olduğu' SomeProtocol 'protokolüne uymuyor. –

+2

MyClass'ınızda protokol yöntemlerini de uygulamanız gerekiyor. Bu yüzden neden hata yapıyorsunuz? Java ile aynı şekilde. Sınıfınızda bir Arabirim uyguladığınızda. Ayrıca soyut yöntemleri uygularsınız. – user1154390

9

hızlı here ilgili belgeler olduğu, hem de protokolleri vardır.

extension SomeProtocol { 
     // Provide a default implementation: 
     class func someTypeMethod() { 
      print("This implementation will be added to objects that adhere to SomeProtocol, at compile time") 
      print("...unless the object overrides this default implementation.") 
     } 
} 

Not:

class myClass: NSObject, SomeProtocol // Specify protocol(s) after the class type 

Ayrıca varsayılan (geçersiz kılınabilir) işlevi uygulaması ile bir protokol uzatabilirsiniz: Bir protokole Uyumlu

protocol SomeProtocol { 
    var fullName: String { get } // You can require iVars 
    class func someTypeMethod() // ...or class methods 
} 

farklı biraz varsayılan uygulamaları protokol tanımının kendisinde değil, uzantı yoluyla eklenmelidir - bir protokol somut bir nesne değildir, bu yüzden aslında eklenmiş yöntem gövdeleri olamaz. Varsayılan bir uygulamayı C stili bir şablon olarak düşünün; Aslında derleyici, bildirimi kopyalar ve protokole uyan her nesneye yapıştırır.