Swift 中的属性定义到底有什么区别:
var window: UIWindow?
对比
var window: UIWindow
我读过它基本上是一个“可选”,但我不明白它的用途。
这是创建一个名为 window 的类属性,对吗?那么'?'有什么需要?
Swift 中的属性定义到底有什么区别:
var window: UIWindow?
对比
var window: UIWindow
我读过它基本上是一个“可选”,但我不明白它的用途。
这是创建一个名为 window 的类属性,对吗?那么'?'有什么需要?
这 ?identifier 表示该变量是可选的,这意味着它的值可以是 nil。如果您的代码中有一个值,将其声明为非可选允许编译器在构建时检查它是否有机会变为 nil。
您可以在 if 语句中检查它是否为 nil:
var optionalName: String? = "John Appleseed"
if optionalName {
// <-- here we know it's not nil, for sure!
}
许多要求参数为非 nil 的方法将声明它们明确需要一个非可选值。如果您有一个可选值,您可以通过解包将其转换为非可选值(例如UIWindow?
-> UIWindow
)。展开的主要方法之一是语句:if let
var greeting = "Hello!"
// at this point in the code, optionalName could be nil
if let name = optionalName {
// here, we've unwrapped it into name, which is not optional and can't be nil
greeting = "Hello, \(name)"
}
请参阅Swift 编程语言,第 11 页的简要介绍,或第 46 页的更详细的描述。
UIWindow?
表示该值可能不存在。它要么是一个UIWindow
实例,要么什么都不是。