MKMapViewを使用するアプリを開発していますが、iOS4、iOS5、iOS6で実行する必要があります。
私の質問は、新しいiOS MapKit機能を使用して開発した場合、iOS4を使用している誰かがsourceAddressからdestinationAddressへのルーティングなどを見ることができるかということです。
MKMapViewを使用するアプリを開発していますが、iOS4、iOS5、iOS6で実行する必要があります。
私の質問は、新しいiOS MapKit機能を使用して開発した場合、iOS4を使用している誰かがsourceAddressからdestinationAddressへのルーティングなどを見ることができるかということです。
はいといいえ。
iOS 6 の機能を使用してマップ アプリを作成した場合、それらのメソッドの存在を確認しない限り、古いバージョンの iOS では実行されません。
より一般的に言えば、MapKit フレームワークは、必要に応じて iOS 6 マップを表示し、それ以外の場所では Google マップを使用できるほどスマートです。ただし、サポートされていないルーティング機能の使用は避ける必要があります。したがって、あなたの質問に答えると、iOS 4 および 5 のユーザーには新しいルーティング機能が表示されません。
したがって、アプリで新しいマップ機能を使用しなくても、まったく問題ありません。その場合は、アプリが古いシステム バージョンで新しい API を実行しようとしないように、弱いリンクやメソッド チェックなどの手順を実行する必要があります。上記のコードをサポートしていない iOS バージョンで新しいコードを実行すると、もちろんクラッシュします。
ドキュメントには、特定の機能が動作する OS バージョンが記載されています。ドキュメントは手元にありませんが (現在は PC 上にあります)、これらのメソッドが iOS6 で追加された場合、以前のバージョンでは使用できません。これを回避するためにできることは#ifdef
、ユーザーの OS バージョンを確認し、必要に応じて機能を無効にすることです。
iOS6 は NDA の下にあるため、iOS6 で導入された特定の方法に関する質問は Apple Developer Forums に保管する必要があることに注意してください。
編集:#ifdef
実行を停止する方法ではありません。アプリの OS のバージョンを確認し、次のようにするだけです。
if (os >= 6) sourceAddress stuff
else if ((os >= 5) && (os < 6) ignore sourceAddress stuff
この投稿に記載されている回答を参照してください。 Apple が iOS6 で Google マップの使用をやめるという噂について心配する必要がありますか?
それはあなたの質問の説明的な答えを持っています。