为什么我的简单swift委托和协议设置不起作用?

时间:2014-07-01 07:14:40

标签: ios delegates swift protocols

我试图在swift中掌握委托和协议的概念。所以我已经实现了我自己的PlayableMedia协议,其中包含两个具体的类BlueRayMediaDVDMedia,如下所示:

@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()

我在游乐场控制台得到(没有结果)。我做错了什么?

2 个答案:

答案 0 :(得分:2)

好的,我犯的一个简单错误就是使用@protocol而不只是protocol

这样可行:

protocol PlayableMedia {
    func play()
    func stop()
}

答案 1 :(得分:0)

游乐场内的println()不起作用。 添加一些其他表达式,例如let x = 5