__IPHONE_OS_VERSION_MIN_REQUIREDがデプロイメントターゲットではなくベースSDKを返すのはなぜですか?
iOS 4.3以降でのみ実行できるが、4.0以降をサポートするクラスを使用したい。これを実現するために、iOSバージョンが4.3より前のデバイスでこのクラスを使用しようとすると断言します。アサートを回避するために、4.3メソッドの可用性をチェックすることにより、コード内のクラスを回避します。現在、展開ターゲットは4.0に設定されています。
ただし、古いデバイスでアプリケーションを実行した場合にのみアサートが発生するため、展開ターゲットが4.3未満の場合にも警告を追加します。使用しようとしています__IPHONE_OS_VERSION_MIN_REQUIRED
。50000
しかし、これはどういうわけか、以下のものではなく(ベースSDK)を返し続けており、その43000
理由がわかりません。
コード:
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に設定されているため、質問をしています。