是什么让Swift的"可选"比Objective-C的"nil"更安全?

Pra*_*kar 13 pointers objective-c optional swift

Apple似乎声称Optional Swift 中的类型比nilObjective-C 更安全,但我不明白为什么会这样.

实现中哪些显着差异Optional更安全nil,以及这将如何影响我的代码?

Joe*_*ang 2

nil我总是在使用变量之前检查它是否存在以避免出现问题。然而,令我惊讶的是,偶尔仍然会发生一个值作为 出现nil——或者有时我只是忘记检查。

当我用 Swift 编写越来越多的代码后,我发现使用可选变量确实提供了很多便利,可以避免忽略对nil值的检查。我真的不记得任何由于nil变量访问而导致的崩溃(除非我强制展开某些变量;所以不要强制展开,除非你知道自己在做什么)。

另外,我曾经在很多地方写过很多这样的代码:

if (obj != nil) {
    obj.property = ...
}
Run Code Online (Sandbox Code Playgroud)

现在我可以简单地这样做

 obj?.property = ...
Run Code Online (Sandbox Code Playgroud)

代码现在看起来干净清晰。你不也喜欢吗?