CLLocationManager的location属性可以是nil,但它不是可选变量

时间:2014-11-15 05:51:47

标签: ios swift

我正在使用Swift,并注意CLLocationManager的location属性的定义: enter image description here

注意在Swift中,它被定义为 CLLocation!。但是,据说

  

如果......

,此属性的值为 nil

有什么问题吗?

1 个答案:

答案 0 :(得分:0)

CLLocation!变量 是可选的,但它只是一个隐式解包的变量。正如The Swift Programming Language: The Basics所说:

  

[可选项]表示允许常量或变量具有“无值”。可以使用if语句检查可选项以查看是否存在值,并且可以使用可选绑定有条件地解包,以便在可选的值存在时访问它。

     

有时从程序的结构可以清楚地看出,在首次设置该值之后,可选项将始终具有值。在这些情况下,每次访问时都不需要检查和解包可选的值,因为可以安全地假设它始终具有值。

     

这些类型的期权被定义为隐式解包的期权。您可以通过在要使其成为可选类型之后放置感叹号(String!)而不是问号(String?)来编写隐式展开的可选项。

因此,location是可选的,但您不必在每次使用时都明确展开它,因为它是隐式解包的。