有没有一种方法可以有条件地编译Swift 1.1和1.2?

有没有一种方法可以有条件地编译Swift 1.1和1.2?,swift,Swift,在Swift 1.2(Xcode 6.3)中,malloc()的定义显然发生了变化 在Swift 1.2中,其定义为 func malloc(_: Int) -> UnsafeMutablePointer<Void> func-malloc(uquo:Int)->UnsafeMutablePointer 在Swift 1.1(Xcode 6.2)中,其定义为: 在Xcode 6.2中 func malloc(_: UInt) -> UnsafeMutablePoint

在Swift 1.2(Xcode 6.3)中,malloc()的定义显然发生了变化

在Swift 1.2中,其定义为

func malloc(_: Int) -> UnsafeMutablePointer<Void>
func-malloc(uquo:Int)->UnsafeMutablePointer
在Swift 1.1(Xcode 6.2)中,其定义为:

在Xcode 6.2中

func malloc(_: UInt) -> UnsafeMutablePointer<Void>
func-malloc(uu:UInt)->UnsafeMutablePointer
这意味着使用此函数的代码必须根据您使用的Xcode版本进行更改。我一直在Xcode6.2和当前的Xcode6.3测试版之间来回跳转,每次都要编辑我的代码,这让人非常恼火

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

(从我上面的评论:)
我认为没有一种方法可以有条件地编译Swift 1.1或1.2。在你的具体案例中

let mem = malloc(size_t(numBytes))
应该有用


size\u t
在Swift 1.0/1.1中定义为
UInt
,在Swift 1.2中定义为
Int
。通过显式转换,您可以对两者进行编译。

我认为没有一种方法可以对Swift 1.1或1.2进行有条件编译。在您的具体案例中,
让mem=malloc(size\u t(numBytes))
应该起作用。正如@MartinR所说的。从某种意义上说,没有必要对Swift 1.1和1.2进行有条件的编译,因为您将只能使用其中一个将生产代码部署到应用程序商店—现在是1.1,因为另一个是beta版,1.2以后是因为一旦发布,它将部署到与1.1相同的OS/SDK目标。(从另一个意义上讲,与新语言的beta合作无疑是一种痛苦,缓解这种痛苦的方法对你来说是件好事,特别是如果你有具体的建议的话。)使用size\u t作为参数的类型就是一张罚单。@rickster,你能把它作为一个答案发布出来让我接受吗?@Duncac:不客气!但是Swift 1.1/1.2之间还有其他可能更难解决的差异,例如
countElements()
vs
count()
。我会从这座桥上摔下来的。现在我眼前的问题已经解决了。有没有苹果公司的Swift 1.2语言指南iBook,以及对这些变化的连贯描述?@Duncac:据我所知,Swift 1.2没有iBook。这些变化在Xcode 6.3 beta发行说明(可在上获得)中进行了描述。Swift博客中也有一些内容()目前没有Swift 1.2的iBook,因为1.2是测试版。我想在1.2最终版时会有iBook。但是你可以在developer.apple.com上查看相同内容的web版本,它甚至有一个可以告诉你书中哪些部分已更改为针对Swift 1.2