为什么我们可以在初始化时自己访问变量?

时间:2016-06-15 10:13:16

标签: ios swift3

从raywenderlich文章中,我看到了这段代码:

 // new way, Swift 3
 if let ctx = UIGraphicsGetCurrentContext() {

  let rectangle = CGRect(x: 0, y: 0, width: 512, height: 512)
    ctx.setFillColor(UIColor.blue().cgColor)
    ctx.setStrokeColor(UIColor.white().cgColor)
    ctx.setLineWidth(10)
    ctx.addRect(rectangle)
    ctx.drawPath(using: .fillStroke)

    UIGraphicsEndImageContext()
}

为什么我们可以在初始化时访问变量(ctx)?提前谢谢。

2 个答案:

答案 0 :(得分:0)

ctx = UIGraphicsGetCurrentContext()语句引用了UI上下文对象,如果失败(因为它是可选的),您将无法输入if子句。如果成功,则可以使用该引用,并可以设置其属性。

答案 1 :(得分:0)

啊! Swift可选项的奇迹!这实际上是一个Swift安全解包模式。了解UIGraphicsGetCurrentContext()如何返回CGContext??表示它可能返回nil,它是可选的。这个if let结构让您安全地将UIGraphicsGetCurrentContext()解包到变量中,并在if范围内安全地使用它。

CGContext is optional

您可以阅读有关此here的更多信息。

我希望这有帮助!