1

xCode 4.3.2 で iPhone プロジェクトを作成しましたが、うまく動作します。NSUbiquitousKeyValueStore クラスを使用し、ベース SDK は iOS 5.0 です。xCode 3.2.5 でプロジェクトをビルドしようとすると、「未定義のシンボル NSUbiquitousKeyValueStore」というエラーが表示されます。もちろん、NSUbiquitousKeyValueStore クラスは iOS 5.0 からサポートされており、xCode 3.2.5 は iOS 5.0 をサポートしていませんでした。したがって、iOS 5.0 より古いこれらの機能を無効にし、iOS 5.0 で有効にしたいと考えています。これどうやってするの?

4

2 に答える 2

2

5.0 SDK で導入された機能を使用するコードを次のように囲みます。

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000
    // Code using NSUbiquitousKeyValueStore goes here
#endif

これは条件付きコンパイルであることに注意してください。テストは、実行時ではなくビルド時に実行されます。そのため、5.0 SDK を使用せずに古いバージョンの Xcode をビルドすると、結果として得られるプログラムは、どこで実行しても を使用しません。NSUbiquitousKeyValueStore古い SDK に対してビルドし、実行時に新しい SDK の機能を使用できる場合は、その機能を引き続き使用することは現実的な方法ではありません。

追加するために編集: 詳細については、Apple のSDK 互換性ガイドを参照してください。

于 2012-04-18T07:40:21.830 に答える
0

NSUbiquitousKeyValueStoreクラスを含むフレームワークを弱いリンクにする必要があります。次に、コードで次のようなことを行います。

if ([NSUbiquitousKeyValueStore class]) {
    // Class wil return non nil uf the class exists.
   NSUbiquitousKeyValueStore *NSUbiquitousKeyValueStore = [NSUbiquitousKeyValueStore new];
}
于 2012-04-18T07:22:51.433 に答える