gpt4 book ai didi

ios - 对协议(protocol)感到困惑

转载 作者:可可西里 更新时间:2023-11-01 01:42:41 24 4
gpt4 key购买 nike

我有几个继承自 SKNode 的类。它们都有一个 setup() 方法。它们彼此非常不同。

我制定了这样的协议(protocol):

protocol LevelProtocol {   
func setup(level: Int)
}

我的两个类看起来像这样:

class Puzzle: SKNode, LevelProtocol {
func setup(level: Int) {do something}

class Action: SKNode, LevelProtocol {
func setup(level: Int) {do something}

在我的主类中,我需要在一个变量中使用这些类之一。如何正确定义此变量?

我已经试过了:

var lvl: LevelProtocol
if myLevel > 5 {
lvl = Puzzle()
else {
lvl = Action()
}

lvl.setup(myLevel)
self.addChild(lvl)

但是编译器说 LevelProtocol 不能转换为 SKNode我知道我做错了什么,只是不明白到底是什么。

最佳答案

我不太擅长 Swift,但我认为你可以尝试 self.addChild(lvl as SKNode)

另一种解决方案:

嗯,我想,那你需要重新设计继承。尝试使类 Level 继承自 SKNode 并在那里只声明一个方法 setup 并将其主体留空。然后,您创建类 PuzzleAction 派生自 Level 并拥有它们自己的 setup 实现。那么你的代码是:

var lvl: Level
if myLevel > 5 {
lvl = Puzzle()
}
else {
lvl = Action()
}

lvl.setup(myLevel)
self.addChild(lvl)

关于ios - 对协议(protocol)感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812941/

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