Protocols
Adopting a protocol is like signing a contract to implement every method on the list.
import UIKit protocol Souschef { func chop(vegetable: String) -> String func rinse(vegetable: String) -> String } class Roommate: Souschef { var hungry = true var name: String init(hungry:Bool, name: String){ self.hungry = hungry self.name = name } func chop(vegetable: String) -> String { return "She's choppin' \(vegetable)!" } func rinse(vegetable: String) -> String { return "The \(vegetable) is so fresh and so clean" } }
class DinnerCrew { var members: [Souschef] init(members: [Souschef]){ self.members = members } }
protocol DirtyDeeds { func cheat() func steal() } class Minion: DirtyDeeds { var name: String init(name:String){ self.name = name } func cheat(){ println("Mwa haha!") } func steal(){ println("Mwa haha!") } } class DinnerCrew { var members: [Souschef] init(members: [Souschef]){ self.members = members } } protocol Souschef { func chop(vegetable: String) -> String func rinse(vegetable: String) -> String } var deviousDinnerCrew = DinnerCrew(members: [Minion]())
Andrew Bancroft’s Swift blog
http://www.andrewcbancroft.com/