protocol UIImagePickerControllerDelegate : NSObjectProtocol {
@optional func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!)
@optional func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: NSDictionary!)
@optional func imagePickerControllerDidCancel(picker: UIImagePickerController!)
}
究竟意味着什么!在这种情况下?
答案 0 :(得分:5)
它被称为Implicitly Unwrapped Optional。
有时从程序的结构中可以明确看出一个可选的意愿 在首次设置该值之后,始终有一个值。在这些情况下,它 有助于删除检查和解包可选值的需要 每次访问它,因为它可以安全地假设有一个 一直都很重要。
通常,在Swift中访问Objective-C API时,您会看到很多这些Implicitly Unwrapped Optionals,因为Objective-C中的指针可能为零。这意味着变量必须是可选的,但为了使API更像Objective-C,我们希望处理它就像它不是可选的。
隐式展开的选项看起来像普通(非可选)变量一样工作,但如果它们在尝试使用它们时确实是nil
,则会出现运行时错误,整个程序将被停止。所以要谨慎使用它们并小心它们。