我有一个使用 Size Classes 的故事板的 swift 项目,这是一个符合 UITraitEnvironment 协议并实现了功能的 ViewController traitCollectionDidChange
。
当我第一次启动应用程序时traitCollectionDidChange
,这似乎是合理的——它允许开发人员处理应用程序提供的第一个大小类,但是previousTraitCollection
传递给它的变量是nil
. 我无法检查此值是否nil
为非可选,并且以任何方式访问它都会导致崩溃。在函数声明中将参数更改为可选会导致构建错误,抱怨我没有在协议中实现所需的方法。
现在我已经设法通过创建一个单独的函数来解决这个问题,该函数接受一个相同类型的可选变量,然后我可以检查它,但我想知道为什么会这样。
如果它对任何人都有用,这是我要覆盖的功能
override func traitCollectionDidChange(previousTraitCollection: UITraitCollection) {
// Accessing previousTraitCollection causes a crash
}
任何人都可以对此有所了解吗?