2010-06-08 51 views

回答

2

如果您的項目指定4.0作爲目標,那麼它甚至不會在3.2手機上加載 - 沒問題。

當您將應用程序發佈到商店時,您可以指定最低的操作系統級別和可接受的設備(例如,您不需要在iPod Touch上查找GPS)。有一個兼容性檢查可以防止應用程序在不兼容的情況下被加載。應用程序審批流程(希望)確保您所說的實際上是兼容的。

如果您以某種方式使用設備上不存在的API(因爲您在引入該API之前定位了某個版本或出於任何其他原因),那麼是的,您將因未知選擇器而崩潰。

您可以使用

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200 

檢查你的目標是什麼版本?第一個數字(3)是主要的修訂,第三個數字(2)是次版本。因此顯示的檢查是3.2。

2

而不是使用編譯時的預處理程序指令來分割你的代碼,可以考慮使用運行時檢查像respondsToSelector:,使用針對零NSClassFromString檢查,以確定是否存在類和聯弱到新的框架和庫使用亞當埃伯巴赫的做法。

這將允許你寫一個應用程序,可以住在多個設備上,無需任何代碼隔離或單獨的二進制文件。

+0

會導致代碼膨脹,或者更糟糕,性能更慢/更重? – 2010-06-08 10:59:49

+0

我相信性能的影響是完全可以忽略的......根據你的代碼膨脹的定義,我傾向於不同意。這裏有幾行代碼,可以在刪除對舊操作系統的支持時刪除。 – Jasarien 2010-06-09 11:49:45

+0

respondsToSelector是一個很好的方法,可能比預處理器更好。 – 2010-06-10 22:17:34

相關問題