我正在使用Swift,并注意CLLocationManager的location属性的定义:
注意在Swift中,它被定义为 CLLocation!。但是,据说
如果......
,此属性的值为 nil
有什么问题吗?
答案 0 :(得分:0)
CLLocation!
变量 是可选的,但它只是一个隐式解包的变量。正如The Swift Programming Language: The Basics所说:
[可选项]表示允许常量或变量具有“无值”。可以使用if语句检查可选项以查看是否存在值,并且可以使用可选绑定有条件地解包,以便在可选的值存在时访问它。
有时从程序的结构可以清楚地看出,在首次设置该值之后,可选项将始终具有值。在这些情况下,每次访问时都不需要检查和解包可选的值,因为可以安全地假设它始终具有值。
这些类型的期权被定义为隐式解包的期权。您可以通过在要使其成为可选类型之后放置感叹号(
String!
)而不是问号(String?
)来编写隐式展开的可选项。
因此,location
是可选的,但您不必在每次使用时都明确展开它,因为它是隐式解包的。