gpt4 book ai didi

ios - 为什么我的简单 swift 委托(delegate)和协议(protocol)设置不起作用?

转载 作者:搜寻专家 更新时间:2023-10-31 22:52:48 26 4
gpt4 key购买 nike

我正在尝试快速掌握委托(delegate)和协议(protocol)的概念。所以我用两个具体类 BlueRayMediaDVDMedia 实现了我自己的 PlayableMedia 协议(protocol),如下所示:

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

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

最佳答案

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

所以这是可行的:

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

关于ios - 为什么我的简单 swift 委托(delegate)和协议(protocol)设置不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24504455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com