我有一個代碼庫需要與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