2010-07-16 66 views
10

是什麼這2個宏有什麼區別?

__IPHONE_OS_VERSION_MAX_ALLOWED

__IPHONE_OS_VERSION_MIN_REQUIRED

我應該用它來檢測舊/新的SDK,像

之間的區別
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2 

回答

14

__IPHONE_OS_VERSION_MIN_REQUIRED設置爲部署目標,它表示用戶必須最低限度運行以安裝應用程序的版本。 __IPHONE_OS_VERSION_MAX_ALLOWED已設置爲您正在編譯的SDK版本,但這並不意味着您的應用程序不會在新版本上運行,但您可以使用它來檢查某些OS功能是否可用。

例如,自iOS 3.2以來,我們有UIBezierPath類。如果你正在編譯SDK 3.1(假設在iPhone Simulator中測試它),那麼這個新類不可用,所以編譯器會給你一個警告,說明該類不存在。不夠公平,但我們不希望在每次我們針對舊版SDK構建特定代碼時對其進行評論,只是針對模擬器測試。我們只是想隱藏這些代碼塊,這些宏可以讓這些代碼塊成爲可能。

請閱讀this article on Cocoa with Love作進一步解釋,提示和技巧。

+0

但是__IPHONE_OS_VERSION_MAX_ALLOWED(而不是「_REQUIRED」)呢? – cocoapriest 2010-07-17 11:39:10

+0

哎呀,我的意思是MAX_ALLOWED,根本沒有定義MAX_REQUIRED。 – Joost 2010-07-17 20:57:04

+0

@Joost我想不出這兩個宏的實際用例 – onmyway133 2014-06-03 05:29:55