升级到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) { }
仅供参考。