J'ai rencontré le même problème. Lorsque je l'ai reproduit à nouveau et connecté à une vraie machine pour le débogage, j'ai défini un point d'arrêt global et j'ai constaté que le crash s'était produit dans le cadre de la fenêtre d'alerte personnalisée. Après avoir fouillé, j'ai découvert qu'il n'y avait pas de pointeur nul dans alertWindow. La raison est évidente. Un crash s'est produit lors de l'utilisation de l'interface utilisateur. La raison était que l'interface utilisateur n'était pas exploitée sur le thread principal. Retournez au code et voyez le jugement d'appeler l'état de la caméra
let authStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
switch authStatus {
case .NotDetermined:
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted) in
if (granted) {
//第一次用户接受
if let tmp = handle {
tmp()
}
}else{
//用户拒绝 *** 问题在这里,如果第一次用户拒绝了,回调并不在主线程。(注意,此时的case分支在用户并未决定里)
if let tmp = limitHandle {
dispatch_async(dispatch_get_main_queue(), {
tmp()
})
}
}
})
case .Restricted: // 无法访问
dLog("没有设备")
case .Denied: // 用户拒绝
if let tmp = limitHandle {
dispatch_async(dispatch_get_main_queue(), {
tmp()
})
}
case .Authorized: // 开启授权
if let tmp = handle {
tmp()
}
}
Ce problème peut être résolu en plaçant le rappel là où l'utilisateur décide en premier s'il accepte d'utiliser l'album dans le fil de discussion principal.
J'ai rencontré le même problème.
Lorsque je l'ai reproduit à nouveau et connecté à une vraie machine pour le débogage, j'ai défini un point d'arrêt global et j'ai constaté que le crash s'était produit dans le cadre de la fenêtre d'alerte personnalisée.
Après avoir fouillé, j'ai découvert qu'il n'y avait pas de pointeur nul dans alertWindow.
La raison est évidente. Un crash s'est produit lors de l'utilisation de l'interface utilisateur. La raison était que l'interface utilisateur n'était pas exploitée sur le thread principal.
Retournez au code et voyez le jugement d'appeler l'état de la caméra
Ce problème peut être résolu en plaçant le rappel là où l'utilisateur décide en premier s'il accepte d'utiliser l'album dans le fil de discussion principal.