【发布时间】:2014-07-01 15:33:40
【问题描述】:
我正在尝试快速掌握委托和协议的概念。所以我实现了我自己的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()
我在操场控制台上得到(没有结果)。我做错了什么?
【问题讨论】:
-
我不确定,但您确定这也是代表问题吗?我认为这只是一个协议问题。您的委托协议,即
PlayabeMedia具有 no 委托属性。仅供参考,只要您有协议,就不需要委托。虽然无论你有代表,你都必须有一个协议
标签: ios delegates swift protocols