我注意到了一些方法,主要是在协议中有一个!在他们的参数.例如来自UIImagePickerControllerDelegate的这些:
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!)
}
Run Code Online (Sandbox Code Playgroud)
究竟意味着什么!在这种背景下?
它被称为Implicitly Unwrapped Optional.
有时从程序的结构中可以清楚地看出,在首次设置该值之后,可选项将始终具有值.在这些情况下,每次访问时都不需要检查和解包可选的值,因为可以安全地假设它始终具有值.
通常,在Swift中访问Objective-C API时,您会看到许多这些Implicitly Unwrapped Optionals,因为Objective-C中的指针可能为零.这意味着变量必须是可选的,但为了使API更像Objective-C,我们希望将它视为不可选.
隐式解包的选项看起来和正常(非可选)变量一样工作,但如果它们确实nil在您尝试使用它们时,您将收到运行时错误并且整个程序将被停止.因此,请谨慎使用它们并小心它们.
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |