swift - 在 Xcode 13 和 Xcode 12 中使用 previewCGImageRepresentation?

标签 swift ios15 xcode13

我遇到了 Xcode 13b2(iOS 15 SDK)更改了 AVCapturePhoto.previewCGImageRepresentation() 的 Swift 返回类型的问题.在 Xcode 12.5.1(iOS 14 SDK)中,此方法返回 Unmanged<CGImage> .在 13b2 - 13b4 中,它返回 CGImage? .

我需要我的代码在两个 Xcode 版本下编译,因为 Xcode 13 有其他问题,并且不能用于将构建提交到 App Store。我认为我写这个很聪明,但它不会编译,因为它不是条件代码编译检查而是运行时检查:

extension AVCapturePhoto {
    func stupidOSChangePreviewCGImageRepresentation() -> CGImage? {
        if #available(iOS 15, *) {
            return self.previewCGImageRepresentation()
        } else {
            return self.previewCGImageRepresentation()?.takeUnretainedValue()
        }
    }
}

另一种可能是创建用户定义的 Xcode 设置,但我认为这不能根据 Xcode 或 SDK 版本有条件地完成。

可能会有一些不安全的指针装腔作势……

还有其他想法吗?

最佳答案

您可以检查swift 编译器版本。在撰写本文时,维基百科上提供了详尽的列表。

https://en.wikipedia.org/wiki/Xcode#Toolchain_versions

extension AVCapturePhoto {
    func stupidOSChangePreviewCGImageRepresentation() -> CGImage? {
    #if compiler(>=5.5)
        return self.previewCGImageRepresentation()
    #else
        return self.previewCGImageRepresentation()?.takeUnretainedValue()
    #endif
    }
}

关于swift - 在 Xcode 13 和 Xcode 12 中使用 previewCGImageRepresentation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68644502/

相关文章:

ios - 可扩展的 UICollectionViewCell

swift - 如何在通过 Firebase (Swift) 创建用户之前检查电子邮件是否已被使用以及电子邮件格式是否错误

ios - 更改 iOS 15 中导航栏的当前颜色

ios - iOS 15 中的 UIButton 图像行为发生了变化?

SwiftUI - IOS 15 - 文本 .mimimumScaleFactor - 始终被应用

ios - Xcode 13/iOS15 的启动时间比预期的要长,它显示了与 LLDB 相关的消息

ios - 在后台播放音乐并切换 View

swift - 更喜欢单个 View Controller 的大标题

ios - "Image Literal"命令在 Xcode 中不起作用

swift - Xcode 13 beta 5 错误 : UIViewController is missing its initial trait collection populated during initialization