我刚刚建立了一个SpriteKit演示应用程序。
我不在下面的代码下
if let view = self.view as! SKView? {
...
}
做什么(自认为!斯科维尤?)意思是?
为什么他们不这样写代码:
if let view = self.view as? SKView {
...
}
有什么区别?
谢谢!
最佳答案
案例1self.view
强制转换为SKView?
(也称为Optional<SKView>
)。如果此转换失败(当self.view
实际上不是SKView?
,则程序将崩溃以防止进入不一致状态。
结果SKView?
然后安全地展开,如果不是view
,则分配给nil
,否则执行else
案例(如果有)。
案例2self.view
被安全地转换为SKView
。这个表达式的结果是aSKView
。它将有一个有效值(如果可以进行转换),或者如果不可能进行转换,它将有一个nil
的值。与第一个案例不同,它不会崩溃。
结果SKView?
然后安全地展开,如果不是view
,则分配给nil
,否则执行else
案例(如果有)。
关于swift - (as!SKView?)和(as!SKView)有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41180417/