Cercando di utilizzare dispatch_async in cui ho bisogno di una chiamata lanciabile, ma la nuova gestione degli errori di Swift e le chiamate al metodo mi confondono, se qualcuno mi può mostrare come farlo correttamente, o punto io nella giusta direzione, lo apprezzerei molto.dispatch_async() con throwables swift 2 Xcode 7
Codice:
func focusAndExposeAtPoint(point: CGPoint) {
dispatch_async(sessionQueue) {
var device: AVCaptureDevice = self.videoDeviceInput.device
do {
try device.lockForConfiguration()
if device.focusPointOfInterestSupported && device.isFocusModeSupported(AVCaptureFocusMode.AutoFocus) {
device.focusPointOfInterest = point
device.focusMode = AVCaptureFocusMode.AutoFocus
}
if device.exposurePointOfInterestSupported && device.isExposureModeSupported(AVCaptureExposureMode.AutoExpose) {
device.exposurePointOfInterest = point
device.exposureMode = AVCaptureExposureMode.AutoExpose
}
device.unlockForConfiguration()
} catch let error as NSError {
print(error)
}
}
}
Attenzione:
: la conversione non valida dal funzione del tipo di lancio '() genera -> _' per non gettare tipo di funzione '@convention (block)() -> Void '
Credo che quello che hai trovato sia un bug, anche se non ne sono del tutto sicuro. Per sicurezza, lo sto archiviando. – matt
perfetto grazie! –
@matt non è un bug, la cattura deve essere esaustiva per non chiudere la chiusura (che non è, 'lasciare che l'errore come NSError' sia disponibile) - vedere la mia risposta qui -> http: // stackoverflow. it/questions/31599615/how-to-throw-errors-in-a-closure-in-swift/31613855 # 31613855 – fqdn