首页 > 解决方案 > 什么是 Swift 中的部分申请闭包#1

问题描述

我试图理解这个崩溃报告,但没有意义,因为函数“applySettings()”不是从 init() 调用的,如崩溃报告中所示。什么是 Swift 中的“部分申请关闭#1”?

在此处输入图像描述

这是 init() 函数所需的代码。

   public override init()
{
    super.init()
    
    discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [AVCaptureDevice.DeviceType.builtInWideAngleCamera, AVCaptureDevice.DeviceType.builtInDualCamera, AVCaptureDevice.DeviceType.builtInTelephotoCamera, AVCaptureDevice.DeviceType.builtInDualWideCamera,
            AVCaptureDevice.DeviceType.builtInTripleCamera,
            AVCaptureDevice.DeviceType.builtInUltraWideCamera], mediaType: AVMediaType.video, position: .unspecified)
    
    detectLenses()
    
    checkForDeviceAuthorization()
    
    setZoomParams()
    
    sessionQueue.async { [unowned self] in
        self.configureSession()
    }

}

标签: iosswiftxcodeswiftuicrash-reports

解决方案


你不能在init. 我们正在尝试返回初始化的对象;这就是你应该在这里做的一切。self当完全存在时,其他一切都应该发生在一些后续的配置调用中。


推荐阅读