我有一个代码库需要与Xcode 7 beta和Xcode 6.4兼容。这是因为Beta版测试和App Store版本应该使用稳定版本的编译器和SDK来构建,但我也在用于测试的手机上安装了iOS 9测试版。是否有一个#ifdef来区分Swift中的Xcode 6.4和Xcode 7 beta?
这不是Objective-C的问题,但现在我添加了一些Swift,我发现很难保持与两个版本的Xcode的兼容性。
我该怎么办?
我知道Swift有一个#ifdef指令,但有#ifdefs可以区分Swift 1.2和2.0吗?除了DEBUG,os和arch之外,我找不到有效的Swift列表。
这里是我的意思的例子:
#ifdef __IPHONE_9_0
some Swift code that works in Swift 2.0 but won't compile in Swift 1.2
#else
some Swift code that works in Swift 1.2 but won't compile in Swift 2.0
#endif
或者更具体的例子:
public final class MessageParser : NSObject {
#ifdef __IPHONE_9_0
static let sharedHashtagRegex = try! NSRegularExpression(pattern:"(^|\\W)(#|\\uFF03)(\\w*\\p{L}\\w*)", options:[]);
#else
static let sharedHashtagRegex = NSRegularExpression(pattern:"(^|\\W)(#|\\uFF03)(\\w*\\p{L}\\w*)", options:nil, error:nil)!
#endif
// ...
}
“我有一个代码库需要与Xcode 7 beta和Xcode 6.4兼容”,它不会。算了吧。这些是Swift(和Cocoa API)的两个完全不同的版本;你不可能编写适用于这两者的Swift代码。 – matt