有没有办法有条件地编译Swift 1.1和1.2?

时间:2015-04-03 18:13:09

标签: swift

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测试版之间来回反复,每次编辑我的代码都非常烦人。

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

1 个答案:

答案 0 :(得分:3)

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

let mem = malloc(size_t(numBytes))

应该有用。

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