0

从 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)本身?提前致谢。

4

2 回答 2

0

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

于 2016-06-15T10:18:56.280 回答
0

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

CGContext 是可选的

您可以在此处阅读有关此内容的更多信息。

我希望这有帮助!

于 2016-06-15T10:21:54.017 回答