2014-06-05 7 views
24

Ho cercato il nuovo linguaggio Swift cercando di trovare l'equivalente per un'interfaccia (in java) o un protocollo (in oggettivo-c) in Swift, dopo aver navigato su Internet e cercato nel libro fornito da Apple, non riesco ancora a trovarlo.Qual è l'equivalente delle interfacce java o dei protocolli dell'obiettivo c in swift?

Qualcuno sa qual è il nome di questo componente in swift e qual è la sua sintassi?

+4

Ci sono protocolli in Swift. [Link Documenti] (https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Lingue/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-XID_345) –

+5

"Protocolli "- Pagina 464 del libro Swift –

risposta

35

Protocols in Swift sono molto simili a objc, tranne loro è possibile utilizzare non solo sulle classi, ma anche su strutture e enumerazioni.

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

conforme a un protocollo è un po 'diverso:

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

è anche possibile estendere un protocollo con un default (superabile) implementazione della funzione:

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.") 
     } 
} 

Nota: implementazioni predefinite deve essere aggiunto tramite l'estensione e non nella stessa definizione del protocollo: un protocollo non è un oggetto concreto, quindi non può in realtà avere allegati del metodo. Pensa a un'implementazione predefinita come modello in stile C; essenzialmente il compilatore copia la dichiarazione e la incolla in ogni oggetto che aderisce al protocollo.

+0

Ho ricevuto un errore. per favore aiutate ViewController non conforme al protocollo 'SomeProtocol' dove ViewController è la mia classe in cui ho implementato il "SomeProtoco" –

+2

È necessario implementare anche i metodi del protocollo in MyClass. Ecco perché si sta verificando l'errore. Allo stesso modo in Java. Quando implementi un'interfaccia nella tua classe. Implementa anche i metodi astratti. – user1154390

9

rapida ha protocolli pure, here è la relativa documentazione: