升級到swift5以後,遇到關於AVCapture的兩個代理都失效了,swift
找了一圈,發現緣由是代理方法寫法變了,若是不替換,代理事件就收不到了ide
解決方法:spa
替換新寫法就能夠了代理
我這邊只舉例我遇到的兩個例子,若是你有類似現象,能夠參考看有沒有相似問題。code
一、AVCaptureMetadataOutputObjectsDelegateblog
以前寫法:事件
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { }
新寫法:io
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) { }
二、AVCaptureVideoDataOutputSampleBufferDelegateclass
以前寫法:meta
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
}
新寫法:
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) { }
僅供參考。