當我通過一些針對AVFoundation的課堂討論的篩選,我偶然發現了以下內容:在Swift中返回一個Unwrapped Optional?
class func defaultDeviceWithMediaType(mediaType: String!) -> AVCaptureDevice!
因爲自選項目是一個新的概念對我來說,我有點糊塗了。
討論中說,此方法可以返回「給定媒體類型的默認設備,或者如果沒有設備具有該媒體類型,則返回零。」但是,如果有可能返回零,爲什麼在返回語句中打開這個可選項?它不應該是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
返回一個未包裝的變量,爲什麼需要if let
?
非常感謝你提前。