7

XCode では Base SDK を指定できます。それが舞台裏でどのように機能するのだろうか?たとえば、iOS 7 を搭載し、ベース SDK が iOS 6 のデバイスでアプリを実行している場合、アプリの「ルック アンド フィール」が古いのはなぜですか? XCode は古い SDK をコンパイルしてアプリに含めますか?それとも新しいバージョンの iOS には古いライブラリ/SDK が付属していますか?

言い換えれば、ランタイムは、このアプリが下位のベース SDK でコンパイルされ、UIKit のコードのどこかでコンパイルされていることを認識していますか?

if (lower SDK) {
  //show old look/feel
} else {
  //show new look/feel
}

それとも、アプリ自体に古いライブラリが含まれており、それをロードしていますか?

ありがとう

4

7 に答える 7

5

iOS アプリケーションは、新しいバージョンの iOS と前方互換性があります。その理由は :

iOS バージョンへのほとんどすべての変更は追加的なものであるため、下位バージョンを使用してアプリケーションをビルドしても、上位 iOS バージョンで実行されます。

ただし、次の点に注意する必要があります。

フレームワークがさまざまなリリースを通じて進化するにつれて、API が導入または廃止され、既存の API の動作が変更されることがあります。Apple は、非互換性を引き起こす可能性のある変更を最小限に抑えるためにあらゆる努力を払い、場合によっては、フレームワークのバージョンに基づいて代替の動作を提供します。まれに、コードでフレームワークのバージョンを判断し、それに応じて調整する必要があります

もっと理解するには、これを読んでください

于 2013-09-12T05:39:19.963 に答える
2

ios6 メソッドが使用されていないことを確認するために、(プロジェクト ターゲット設定を介して) ターゲットを ios 5.0 に設定する必要があります (そうしないと、コンパイル エラーによりビルドできなくなります)。

新しい機能をサポートし、デバイスで ios6 が利用可能かどうかを確認するには、次の 2 つの方法があります。

コンパイル中に (より低いターゲットと新しいターゲットを一緒にアプリをビルドできるように)、次のマクロを使用します。

#if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0
 // Your ios6 code goes here
#endif
2: During runtime : [[[UIDevice currentDevice] systemVersion] floatValue] > 6.0
于 2013-09-12T04:43:11.803 に答える
0

Base SDK は、アプリのビルドに使用する SDK です。「デプロイ ターゲット」を使用して、アプリを実行する最小の OS を指定します。

iOS のバージョンを知りたい場合は、こちらの質問をご覧ください。

于 2013-09-12T04:42:01.927 に答える
0

Apple フレームワーク自体を更新している間、Apple は複数の iOS バージョンのサポートを処理します。ただし、ここで説明されているいくつかの基本的なチェックに従う必要があります。

于 2013-09-16T10:43:10.000 に答える