我试图在swift中掌握委托和协议的概念。所以我已经实现了我自己的PlayableMedia
协议,其中包含两个具体的类BlueRayMedia
和DVDMedia
,如下所示:
@protocol PlayableMedia {
func play()
func stop()
}
class BlueRayMedia:PlayableMedia {
func play() {
println("BlueRayMedia is playing")
}
func stop() {
println("BlueRayMedia has stopped playing")
}
}
class DVDMedia:PlayableMedia {
func play() {
println("DVD is playing")
}
func stop() {
println("DVD has stopped playing")
}
}
所以现在我有一个使用此设置的DVDPlayer
类:
class DVDPlayer {
var media:PlayableMedia // delegate property
init(media:PlayableMedia){
self.media = media
}
func didStartPlaying() {
media.play()
}
func didStopPlaying() {
media.stop()
}
}
但是当我尝试使用它时:
var dvdPlayer:DVDPlayer = DVDPlayer(media: BlueRayMedia())
dvdPlayer.didStartPlaying()
我在游乐场控制台得到(没有结果)。我做错了什么?
答案 0 :(得分:2)
好的,我犯的一个简单错误就是使用@protocol
而不只是protocol
这样可行:
protocol PlayableMedia {
func play()
func stop()
}
答案 1 :(得分:0)
游乐场内的println()不起作用。 添加一些其他表达式,例如let x = 5