gpt4 book ai didi

xcode - 在 Swift 中返回一个未包装的可选?

转载 作者:行者123 更新时间:2023-11-28 07:07:07 26 4
gpt4 key购买 nike

当我筛选 AVFoundation 的一些类讨论时,我偶然发现了以下内容:

class func defaultDeviceWithMediaType(mediaType: String!) -> AVCaptureDevice!

因为可选项对我来说是一个新概念,所以我有点困惑。

讨论表明该方法可以返回“具有给定媒体类型的默认设备,或者如果不存在具有该媒体类型的设备则返回 nil”。但是,如果它有可能返回 nil,为什么他们要在 return 语句中解包这个可选值呢?不应该是AVCaptureDevice吗?

然后,在查看使用上述方法的示例时,我发现以下内容:

 public lazy var device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)


public func hasFlash() -> Bool {
if let d = self.device {
return d.hasFlash
}
return false
}

据我所知,当你有一个可选的时,你会使用一个 if let 语句,但是因为类 defaultDeviceWithMediaType 返回一个未包装的变量,为什么有一个 如果让有必要吗?

非常感谢您。

最佳答案

隐式解包可选基本上是一个可选,在你使用它的任何地方都会得到一个 ! 。就是这样。
例如:

//this:
var number: Int? = ...
print(number!)

//is the same as this:
var number: Int! = ...
print(number)

一个隐式解包的可选项只是为了让你在每次使用它时都不需要解包,无论是 if let 还是 !,但它有nil 的可选性与普通可选的相同。

隐式解包选项的一种流行用法是用于 socket - 它们不能是非选项,因为我们不会在 VC 的 initinit 它们,但是我们以后肯定会有它们,所以将它们解开可以让我们避免做一些烦人的事情,比如 if let table = self.tableView....

关于xcode - 在 Swift 中返回一个未包装的可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30068200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com