2011-06-23 38 views
1

我已經搜索了包括iOS SDK兼容性指南在內的各種內容,但無法獲得對此的解釋。iPhone SDK兼容性使用__IPHONE_OS_VERSION_MIN_REQUIRED

我的理解是:

  • 部署目標是最早OS 版本的應用程序可以在
  • 基地SDK運行時的SDK將是 使用編譯和其功能 如果可以用運行時設備 支持他們

我正在掙扎是如何__IPHONE_OS_VERSION_MIN_REQUIRED可以當這是固定在編譯TI使用我和設備的操作系統只在運行時才知道。所以我提交的代碼將始終編譯相同。

還是有多個版本自動編譯?

有人能解釋一下嗎?

非常感謝,

Chris。

回答

1

的IPHONE_OS_VERSION_MIN_REQUIRED是一個定義 - 因此雖然你的部署目標可能是低,你可能會使用一些重要的廢棄的函數,如果你的應用程序是與許多iOS版本高度兼容。

您當然 - 正確地說設備的操作系統只在運行時才知道。根據您的項目設置,Apple會在應用商店中使用該信息,以確保擁有正確設備的用戶可以訪問您的軟件。根據我的知識,不會創建多個版本 - 如果您使用該定義充分利用舊版iOS版本,那麼您提交的代碼將顯示爲動態。

您也可能會發現這個有用:

How to target a specific iPhone version?

+0

感謝@Krypton和@Konrad。上面的鏈接浮動使用[[[[UIDevice currentDevice] systemVersion] floatValue]爲我工作的選項。我也使用了respondsToSelector:@selector作爲distanceFromLocation。 – Chris

+0

真棒聽到:)注意流氓浮動值,因爲該主題鏈接描述。 – Luke

1

你說得對,__IPHONE_OS_VERSION_MIN_REQUIRED在編譯時是固定的。如果你爲不同的平臺和版本編譯你的應用程序,這些語句和宏可能會變得很有用。因此,如果您要爲iOS 3.0和iOS 4.0編譯一個版本的應用程序,則可以在編譯時使用__IPHONE_OS_VERSION_MIN_REQUIRED從iOS 3.0版本中刪除所有iOS 4.0代碼。

由於AppStore強制您使用最新的SDK版本,即使您定位到3.0設備,您也不得不使用4.0 SDK。 __IPHONE_OS_VERSION_MIN_REQUIRED只在使用和較舊的SDK時纔有用。由於您可以將部署目標設置爲較低版本,因此您必須在運行時檢查iOS版本。

您可以使用該方法描述here運行時檢查IOS版本