我目前正在將一些代碼轉換爲在Xcode 9中編譯,並偶然發現了一些不同的行爲,這些行爲迫使我僅在Xcode 9中使用某些代碼,並且僅在Xcode 8中使用某些代碼。 是否存在某種ifdef基於使用的Xcode版本重定向代碼?ifdef爲特定的Xcode版本?
任何幫助表示讚賞。 謝謝!
我目前正在將一些代碼轉換爲在Xcode 9中編譯,並偶然發現了一些不同的行爲,這些行爲迫使我僅在Xcode 9中使用某些代碼,並且僅在Xcode 8中使用某些代碼。 是否存在某種ifdef基於使用的Xcode版本重定向代碼?ifdef爲特定的Xcode版本?
任何幫助表示讚賞。 謝謝!
Xcode版本控制沒有條件編譯預處理器宏。目前,這是最好的你可以做的:
#if swift(>=3.2)
// Xcode 9
#else
// Xcode 8
#endif
由於Swift 3.2只能通過Xcode 9或更高版本,這應該滿足您的實際需要。
如果您發現了與Xcode相關的錯誤,請將其存儲在Apple的Bug Reporter網站here。
事實上,Xcode 8中最新的Swift版本是3,所以這是一個有效的檢查 –
您需要驗證不是Xcode版本,而是包含在Xcode中的SDK。例如Xcode8包含iOS 10.3 SDK。但Xcode9包含iOS 11 SDK。
要檢查SDK使用的解決方案from answer
爲什麼在Xcode版本的工作?看起來好像要檢查的是(a)您正在構建哪個版本的Swift或(b)正在運行哪個操作系統版本。 – dfd