2012-11-16 29 views
4

This question解決了如何有條件地包含基於iOS版本的代碼。但它是如何工作的?何時使用「#if __IPHONE_OS_VERSION_MIN_REQUIRED> x」?

假設我將iOS Deployment Target設置爲Xcode 4.5.2中的3.2。在我的代碼我把一些#ifdef聲明:

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0 
    // Some iOS 4+ code 
#endif 

如果我跑3.2設備上的代碼,這個代碼將不存在,但如果我一個4.3設備上運行它,它會吧?這是如何發生的?或者我誤解了這裏發生的事情?

+0

你在這裏做什麼?您是否想根據使用不同版本的Xcode編譯不同的代碼,或者您是否正在嘗試爲可以在具有不同iOS版本的設備上正常運行的單個應用程序編寫代碼? – rmaddy

+0

閱讀一些SDK代碼。由於人們會使用不同版本的XCode,因此給出Bovinedragon的解釋,我可以明白爲什麼它在那裏。 –

回答

4

這是一個編譯時檢查,因此它會在任何iOS版本上創建相同的行爲。由於Deployment Target小於4.0,因此if語句中的代碼不會在任何設備上運行。

如果你想要你描述的行爲,你需要做一個運行時檢查。您可以在鏈接的線索中看到如何做到這一點的示例。

+0

好吧,這是有道理的。我想知道它如何以其他方式工作。 –

相關問題