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 で有効にしたいと考えています。これどうやってするの?
質問する
324 次
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 に答える