Classes events in Swift
Forums:
//In Swift there are no events type
protocol GameListener {
func gameStarted(name: String)
}
class Game {
private var listeners: [GameListener] = []
func addListener(listener: GameListener) {
listeners.append(listener)
}
var name: String
func Start() {
for listener in listeners {
listener.gameStarted(name)
}
}
init (name: String) {
self.name = name
}
}
class Statistic: GameListener {
var startsCount: Int = 0
var lastGame: String = ""
func gameStarted(name: String) {
startsCount++
lastGame = name
}
}
let statistic = Statistic()
let heroes = Game(name: "Heroes")
let doom = Game(name: "Doom")
//subscribe to events
heroes.addListener(statistic);
doom.addListener(statistic);
doom.Start();
heroes.Start();
//statistic.lastGame is "Heroes"
//statistic.startsCount is 2
- Log in to post comments