2012-07-27 87 views

回答

5

是的,沒有。

如果您使用iOS 6功能編寫地圖應用程序,它將不會在較早版本的iOS上運行,除非您檢查是否存在這些方法。

更一般地說,MapKit框架足夠智能,可以在適當的位置顯示iOS 6地圖,並在其他地方使用Google地圖。但是,您需要避免在不支持的地方使用路由功能。因此,爲了解決您的問題,iOS 4和iOS 5上的用戶將看不到新的路由功能。

所以,如果你的應用程序不使用新的地圖功能,你就完全沒問題。如果確實如此,則需要採取措施,例如弱鏈接和方法檢查,以確保您的應用程序不會嘗試在舊系統版本上運行新的API。當然,在不支持所述代碼的iOS版本上運行新代碼會崩潰。

+0

謝謝老兄,完全懂了! – 2012-07-27 14:16:02

0

在文檔中,它指定了哪些OS版本特定功能的工作。我目前沒有文檔(在PC上),但如果這些方法是在iOS6中添加的,它們將不能在早期版本中使用。你可以做什麼來解決這個問題,就是使用#ifdef來檢查用戶的操作系統版本並根據需要禁用功能。

請注意,iOS6處於NDA之下,因此有關其中介紹的特定方法的問題應保存在Apple開發者論壇中。

編輯:#ifdef不是阻止它運行的方法。你只需檢查你的應用程序的操作系統的版本,並做類似的事情:

if (os >= 6) sourceAddress stuff 
else if ((os >= 5) && (os < 6) ignore sourceAddress stuff 
+0

你不能以這種方式使用'#ifdef';這是一個預處理器指令,因此它在編譯時被評估。你應該使用'respondsToSelector:' – Jim 2012-07-27 13:36:38

+0

'#ifdef'是一個編譯時函數 - 如果你使用它來禁用特性,那麼它們就不會在構建中,而不管它在哪裏運行。如果它留下代碼,那麼它將始終處於。 – Tommy 2012-07-27 13:36:39

+0

謝謝!我明白了,我需要知道的只是檢查iOS版本,並且做便利版本的東西... – 2012-07-27 14:17:48

相關問題