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.
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) –
"Protocolli "- Pagina 464 del libro Swift –