我刚刚建立了一个SpriteKit演示应用程序。
我不在下面的代码下

if let view = self.view as! SKView? {
        ...
    }

做什么(自认为!斯科维尤?)意思是?
为什么他们不这样写代码:
if let view = self.view as? SKView {
        ...
    }

有什么区别?
谢谢!

最佳答案

案例1
self.view强制转换为SKView?(也称为Optional<SKView>)。如果此转换失败(当self.view实际上不是SKView?,则程序将崩溃以防止进入不一致状态。
结果SKView?然后安全地展开,如果不是view,则分配给nil,否则执行else案例(如果有)。
案例2
self.view被安全地转换为SKView。这个表达式的结果是aSKView。它将有一个有效值(如果可以进行转换),或者如果不可能进行转换,它将有一个nil的值。与第一个案例不同,它不会崩溃。
结果SKView?然后安全地展开,如果不是view,则分配给nil,否则执行else案例(如果有)。

关于swift - (as!SKView?)和(as!SKView)有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41180417/

10-11 04:34