3

でサポートされている最低のOSを変更する方法を知っていますIPHONEOS_DEPLOYMENT_TARGET。私は現在、Xcode 4.5で開発しており、iOS6.0SDKを使用しています。

私がやりたいのは、NS_AVAILABLE_IOS(6_0)とマークされたコードを使用するたびに、コンパイルで警告をスローする方法を見つけることです。

ユーザーのデバイスをクラッシュさせる「はい、ただしiOS 5を使用しているので、このコードを使用しないでください」という領域を見逃さないようにするためです。

4

1 に答える 1

0

NS_AVAILABLE_IOS(6_0)SDKが6.0より低い場合として定義__attribute((unavailable))されますが、SDKが6.0以上の場合は何も定義されません。

SDK 6.0でコンパイルする限り、概念的には#define NS_AVAILABLE_IOS(6_0) /* noop */何も検出できないようになります。

唯一のオプションは、コンパイラーをだまして古いSDKを使用していると思わせるように再定義することですが、ヘッダーが含まれるIPHONE_OS_VERSION_MAX_ALLOWED前に、コンパイラーをすぐに再定義できるかどうかさえわかりません。NSObjCRuntime.hAvailabilityMacros.h

于 2012-10-02T14:04:26.857 に答える