我遇到了 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/