首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.之间有什么区别?SKView?)那么.SKView)

.之间有什么区别?SKView?)那么.SKView)
EN

Stack Overflow用户
提问于 2016-12-16 08:49:16
回答 2查看 109关注 0票数 1

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

代码语言:javascript
复制
if let view = self.view as! SKView? {
        ...
    }

什么是(self.view as!SKView?)意思是?为什么他们不像这样写代码:

代码语言:javascript
复制
if let view = self.view as? SKView {
        ...
    }

有什么关系呢?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-16 08:56:24

案例1

self.view是强制传递给SKView? (a.k.a )的。Optional<SKView>)。如果此转换失败(当self.view实际上不是SKView?),则程序将崩溃,以防止进入不一致的状态。

如果结果SKView?不是nil,则安全地展开它并将其分配给view,否则将执行else案例(如果存在的话)。

案例2

self.view被安全地转换为SKView。这个表达式的结果是一个SKView。它将具有一个有效值(如果强制转换是可能的),或者如果不可能,则具有nil。不像第一个案例,它不会崩溃。

如果结果SKView?不是nil,则安全地展开它并将其分配给view,否则将执行else案例(如果存在的话)。

票数 1
EN

Stack Overflow用户

发布于 2016-12-17 02:00:01

代码语言:javascript
复制
if let view = self.view as? SKView { ... }

这意味着如果视图可以转换为SKView,那么就执行它,否则不要执行它。这是安全的,因为它不会崩溃的程序和建议。这就是问号的意思。它可以转换为一个SKView吗?

代码语言:javascript
复制
if let view = self.view as! SKView? { ... }

这真的不应该被使用。您是说视图应该强制转换到一个可选的SKView,如果可以打开SKView,它就能工作。就像另一个用户说的,它是重复的,即使它不会给出错误,也不应该使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41180417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档