从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)?提前谢谢。
答案 0 :(得分:0)
ctx = UIGraphicsGetCurrentContext()
语句引用了UI上下文对象,如果失败(因为它是可选的),您将无法输入if
子句。如果成功,则可以使用该引用,并可以设置其属性。
答案 1 :(得分:0)
啊! Swift可选项的奇迹!这实际上是一个Swift安全解包模式。了解UIGraphicsGetCurrentContext()如何返回CGContext?
? ?
表示它可能返回nil,它是可选的。这个if let
结构让您安全地将UIGraphicsGetCurrentContext()解包到变量中,并在if
范围内安全地使用它。
您可以阅读有关此here的更多信息。
我希望这有帮助!