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。通过显式转换,您可以为两者编译。
