gpt4 book ai didi

swift - 大小类 - traitCollectionDidChange 崩溃并返回 nil 值

转载 作者:行者123 更新时间:2023-11-28 05:33:37 25 4
gpt4 key购买 nike

我有一个 swift 项目,其中包含一个使用 Size Classes 的 Storyboard,一个符合 UITraitEnvironment 协议(protocol)并实现了函数 traitCollectionDidChange 的 ViewController。

当我第一次启动应用程序时,traitCollectionDidChange 被调用,这似乎是合理的 - 它允许开发人员处理应用程序提供的第一个大小类,但是 previousTraitCollection 变量传递给它是 nil。我无法检查此值是否为 nil,因为它不是可选的,以任何方式访问它都会导致崩溃。在函数声明中将参数更改为可选会导致构建错误,并提示我没有在协议(protocol)中实现所需的方法。

现在我已经设法通过创建一个单独的函数来解决这个问题,该函数接受一个我可以检查的相同类型的可选变量,但我想知道为什么会这样。

如果它对任何人都有用,这是我要覆盖的功能

override func traitCollectionDidChange(previousTraitCollection: UITraitCollection) {
// Accessing previousTraitCollection causes a crash
}

任何人都可以阐明这一点吗?

最佳答案

您必须声明参数的类型是可选的,因为访问它会强制编译器尝试解压缩导致崩溃的地址。将其替换为:

override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
// Accessing previousTraitCollection causes a crash
}

关于swift - 大小类 - traitCollectionDidChange 崩溃并返回 nil 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378271/

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