gpt4 book ai didi

ios - Swift 4 向后兼容性

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:45 24 4
gpt4 key购买 nike

我在 Xcode 8.3.3 (Swift 3.1) 的项目中有以下代码:

let font = CGFont(provider!)
CTFontManagerRegisterGraphicsFont(font, &error)

但是在 Xcode 9 Beta (Swift 4) 中,我得到以下错误:

Value of optional type 'CGFont?' not unwrapped; did you mean to use '!' or '?'?

错误是因为 initializer for CGFont需要一个 CGDataProvider 现在返回一个可选的。

但是当我应用修复时:

let font = CGFont(provider)
CTFontManagerRegisterGraphicsFont(font!, &error)

代码不再在 Xcode 8.3.3 和 Swift 3.1 中编译,因为字体不是可选的,因此不能很好地使用 !

有没有办法让这在两个版本的 Xcode 中都有效? Swift 4 是否应该向后兼容(使用 Swift 3 编译器编译)?

最佳答案

这是 Core Graphics 的突破性改变,而不是 Swift 本身。 API 已更改,初始化程序现在可失败。

使用conditional compilation使您的代码同时使用 3.1 和 4.0 编译器进行编译:

#if swift(>=4.0)
let font = CGFont(provider!)
#else
let font = CGFont(provider)!
#endif

CTFontManagerRegisterGraphicsFont(font, &error)

关于ios - Swift 4 向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com