__IPHONE_OS_VERSION_MIN_REQUIREDはデプロイメントターゲットの代わりに基本SDKを返すのはなぜですか?__IPHONE_OS_VERSION_MIN_REQUIREDはデプロイメントターゲットを返しません。
iOS 4.3以上でしか動作するが、それでも4.0以上をサポートするクラスを使用したいと考えています。これを達成するために、iOSバージョンが4.3より小さいデバイスでこのクラスを使用しようとすると私は主張します。アサーションを避けるために、4.3メソッドの可用性をチェックすることでコード内のクラスを回避します。展開ターゲットは現在4.0に設定されています。
ただし、アサートは古いデバイスでアプリケーションを実行するときにのみ発生するため、展開ターゲットが4.3未満の場合は警告を追加することも必要です。 __IPHONE_OS_VERSION_MIN_REQUIRED
を使用しようとしています。しかし、これは何らかの形で43000
よりも何かの代わりに50000
(基本SDK)を返しています。理由を理解できません。
コード:
NSLog(@"Deployment target: %i", __IPHONE_OS_VERSION_MIN_REQUIRED); // Returns 50000 instead of 40000.
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 43000
// Never gets here
NSLog(@"%@", @"WARNING! NWMethodWrapper does not work on iOS versions below 4.3. If you insist on supporting older iOS versions, make sure you do not call NWMethodWrapper methods unless dlsym(RTLD_DEFAULT,\"imp_implementationWithBlock\") evaluates to true.");
#endif
NSAssert(dlsym(RTLD_DEFAULT,"imp_implementationWithBlock"), @"NWMethodWrapper uses methods that are only available from iOS 4.3 and later."); // Asserts, as appropriate (running on iOS 4.2.1).
編集:私のデプロイメント・ターゲットはすでに私が質問をしています理由である、4.0に設定されています。
ありがとうございました!必要なファイルを含むプロジェクトの開発目標を設定する必要があります! :D – VietHung