尝试从苹果发现错误的示例AVCAM

当我尝试使用Xcode版本9.0testing版5(9M202q)的示例AVCAM迅速。 我发现错误。

架构x86_64的未定义符号:
“__T0So22AVCapturePhotoSettingsC12AVFoundation01_abC16SwiftNativeTypesACWP”,引用自:__T05AVCam20CameraViewControllerC12capturePhoto33_F53A4CF98D799BDDCA6C04BA14C549A1LLySo8UIButtonCFyycfU_ CameraViewController.o
“__T012AVFoundation39_AVCapturePhotoSettingsSwiftNativeTypesPAAE016availablePreviewc11PixelFormatG0Says6UInt32VGfg”,从引用:在CameraViewController.o LD __T05AVCam20CameraViewControllerC12capturePhoto33_F53A4CF98D799BDDCA6C04BA14C549A1LLySo8UIButtonCFyycfU_:符号(多个)未find架构x86_64的铛:错误:连接器命令,退出代码1失败(使用-v看调用)

问题是什么? 以及如何解决这个问题?

2017年9月15日更新:

苹果官方回应:

我们的歉意。 对于使用Swift 3.2或Swift 4.0的应用程序,几个AVFoundation捕获API(外部协议上的公共扩展)在Xcode 9中被无意中标记为私有。以下AVFoundation API暂时不可用:

  • AVCaptureDevice.Format.supportedColorSpaces

  • AVCaptureDevice.supportedFlashModes

  • AVCapturePhotoOutput.availablePhotoPixelFormatTypes

  • AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes

  • AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes

    作为解决方法,您可以通过在每个API之前加双下划线( __ )来使用这些API的SwiftPrivate版本。 例如,将AVCaptureDevice.Format.supportedColorSpaces更改为AVCaptureDevice.Format.__supportedColorSpaces

我可以确认使用__availablePreviewPhotoPixelFormatTypes修复了构build错误。

例如

 let settings = AVCapturePhotoSettings() let previewPixelType = settings.__availablePreviewPhotoPixelFormatTypes.first! 

来源: https : //forums.developer.apple.com/thread/86810#259270


2017年9月14日更新:

问题在Xcode 9.0 GM(9A235)中重新出现。

提交新的错误报告以供参考: rdar://34420979


以前:

更新:在Xcode Beta 6中修复。

为Xcode版本9.0 beta 5(9M202q)提交了一个bug报告rdar://33935456

Xcode 9.0 beta 5(9M202q)肯定有AVCam Swift修订2017-06-06的问题。 幸运的是,这个问题在CameraViewController.swift与这三行CameraViewController.swift

 if !photoSettings.availablePreviewPhotoPixelFormatTypes.isEmpty { photoSettings.previewPhotoFormat = [kCVPixelBufferPixelFormatTypeKey as String: photoSettings.availablePreviewPhotoPixelFormatTypes.first!] } 

注释掉上面的代码,AVCam将在运行最新的iOS 11 beta的设备上编译和运行。

这似乎是一个Xcode错误。 示例代码在Xcode 9.0 beta(9M136h)中生成良好。 报告给苹果作为rdar:// 33903950。

更新:雷达现已closures。 问题在Xcode 9.0 Beta 6(9M214v)中修复。

尝试将AVFoundation添加到链接的框架(目标 – >构build阶段 – >与库链接二进制)