Skip to main content
 首页 » 操作系统

swift之有没有办法有条件地为 Swift 1.1 和 1.2 编译

2024年01月01日62txw1958

malloc() 的定义在 Swift 1.2 (Xcode 6.3) 中明显改变

在 Swift 1.2 中它被定义为

func malloc(_: Int) -> UnsafeMutablePointer<Void> 

在 Swift 1.1 (Xcode 6.2) 中它被定义为:

在 Xcode 6.2 中

func malloc(_: UInt) -> UnsafeMutablePointer<Void> 

这意味着必须根据您使用的 Xcode 版本更改使用此函数的代码。我一直在 Xcode 6.2 和当前的 Xcode 6.3 beta 之间来回切换,每次都必须编辑我的代码,这很烦人。

是否有 #if 语句和某种环境变量的组合可以让我的代码根据 Xcode/Swift 的版本进行调整? (这可能是 Swift 1.2 和 1.1 的区别)

请您参考如下方法:

(来 self 上面的评论:) 我认为没有办法为 Swift 1.1 或 1.2 进行条件编译。在您的具体案例中

let mem = malloc(size_t(numBytes)) 

应该可以。

size_t 在 Swift 1.0/1.1 中定义为 UInt,在 Swift 1.2 中定义为 Int。通过显式转换,您可以为两者编译。