gpt4 book ai didi

ios - 带有 "where"的协议(protocol)导致崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 06:25:52 24 4
gpt4 key购买 nike

<分区>

我想使用 Protocol 来隐藏 UIViewController 的子类类型。所以我创建了一个如下所示的 Protocol:

protocol Displayable where Self: UIViewController {
func display()
}

和具体类:

class DisplayableViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}

extension DisplayableViewController: Displayable {
func display() {
_ = view
}
}

一切顺利,直到我在运行时执行display():

class ViewController: UIViewController {

private var displayable: Displayable!

override func viewDidLoad() {
super.viewDidLoad()
displayable = DisplayableViewController()
displayable.display()
}
}

崩溃发生在 _ = view

Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)


去掉where Self: UIViewController或者让(displayable as?DisplayableViewController).display()解决这个问题,但是为什么呢?

我只希望 UIViewController 的子类符合它。

这是 demo重现它。

swift 版本:4.2

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