gpt4 book ai didi

swift - 继承符合协议(protocol)的类

转载 作者:行者123 更新时间:2023-11-30 14:13:53 26 4
gpt4 key购买 nike

我不明白为什么 Xcode Playground 崩溃,这是我的基本设置

protocol Shootable {
func shoot()
}

class BaseMissile: Shootable {

var damage = 0

func shoot() {
println("Pew pew for \(damage) damage")
}
}

class Missile1: BaseMissile {

override init() {
super.init()
damage = 1
}

}

protocol Targetable {
var life: Int {get set}
}

class BaseSpaceship: Targetable {

var life = 0
var currentMissile: BaseMissile!

func printHealth() {
println("My current life: \(life)")
}

}

class Spaceship1: BaseSpaceship {


override init() {
super.init()
life = 1
currentMissile = Missile1()
}
}

var spaceship = Spaceship1()
spaceship.printHealth()
spaceship.currentMissile.shoot()

特别是最后一行spaceship.currentMissile.shot()导致 Playground 崩溃。如果我将 var currentMissile: BaseMissile!BaseSpaceship 移动到 Spaceship1 它可以工作,但这是处理此问题的可接受方法吗?

最佳答案

我猜发生这种情况是因为 BaseSpaceship 类没有初始化器,并且 var currentMissile: BaseMissile! 不能为零。所以你要么应该通过替换来选择它!和 ?或者给它一个默认值。

关于swift - 继承符合协议(protocol)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434990/

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