2017-09-04 62 views
1

我目前正在將一些代碼轉換爲在Xcode 9中編譯,並偶然發現了一些不同的行爲,這些行爲迫使我僅在Xcode 9中使用某些代碼,並且僅在Xcode 8中使用某些代碼。 是否存在某種ifdef基於使用的Xcode版本重定向代碼?ifdef爲特定的Xcode版本?

任何幫助表示讚賞。 謝謝!

+0

爲什麼在Xcode版本的工作?看起來好像要檢查的是(a)您正在構建哪個版本的Swift或(b)正在運行哪個操作系統版本。 – dfd

回答

3

Xcode版本控制沒有條件編譯預處理器宏。目前,這是最好的你可以做的:

#if swift(>=3.2) 
    // Xcode 9 
#else 
    // Xcode 8 
#endif 

由於Swift 3.2只能通過Xcode 9或更高版本,這應該滿足您的實際需要。

如果您發現了與Xcode相關的錯誤,請將其存儲在Apple的Bug Reporter網站here

+0

事實上,Xcode 8中最新的Swift版本是3,所以這是一個有效的檢查 –

0

您需要驗證不是Xcode版本,而是包含在Xcode中的SDK。例如Xcode8包含iOS 10.3 SDK。但Xcode9包含iOS 11 SDK。 enter image description here

要檢查SDK使用的解決方案from answer