19

Xcode プロジェクト ウィザードを使用して、ARC をサポートするプロジェクトを作成します。ARC をサポートしていないプログラムと比較しても、違いはわかりませんでした。私のプログラムが ARC をサポートしているかどうかを教えてくれるヒントはありますか?

XCode 4.2.1 ビルド 4D502 を使用しています

4

4 に答える 4

30

__has_feature次のように、プロジェクトに ARC があるかどうかをコンソールに記録することができます。

#if __has_feature(objc_arc)
    // ARC is On
    NSLog(@"ARC on");

#else
    // ARC is Off
    NSLog(@"ARC off");

#endif

または、ARC がオンかどうかをログに記録する代わりに、次のように ARC がオン (またはオフ) の場合にコンパイラにエラーを発生させてみてください。

#if  ! __has_feature(objc_arc)
    #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif
于 2012-07-08T03:56:07.580 に答える
21

プロジェクトにARCがあるかどうかを一度だけ知りたい場合は、jpaltenの回答を使用することをお勧めします。コードを ARC をオンにしてのみビルドする場合は、qegal をお勧めします。

ただし、Xcode のどこに設定が存在するかを知りたい場合は、次のようにします。

  1. ナビゲーターでプロジェクトを選択します。これにより、プロジェクト エディターが開きます。
  2. プロジェクト エディターで、ターゲットを選択します。
  3. プロジェクト エディターで、[ビルド設定] をクリックします (まだ選択されていない場合)。
  4. プロジェクト エディターで、検索ボックスをクリックして と入力しOBJC_ARCます。

これにより、ビルド設定に、Objective-C 自動参照カウントまたはCLANG_ENABLE_OBJC_ARC (設定の説明または名前のどちらを表示しているかに応じて) のいずれかが表示される 1 行が残ります。YES に設定されている場合は、ARC がオンになっています。

これは、ARC を使用するかどうかのターゲットの選択です。各ファイルは異なる設定でコンパイルできることに注意してください。これはあなたが尋ねたものではありませんが、すでに 3 つの回答があるので、4 番目の可能性があると考えました。:)

ARC 設定をオーバーライドするファイルを確認するには:

  1. ナビゲーターでプロジェクトを選択します。これにより、プロジェクト エディターが開きます。
  2. プロジェクト エディターで、ターゲットを選択します。
  3. プロジェクト エディターで、[ビルド フェーズ] をクリックします([ビルド設定] ではありません)。
  4. Compile Sourcesビルド フェーズを展開します。

ここでは、各ファイルのコンパイラ フラグを確認できます。ARC を使用するかどうかが設定されているファイルには、それぞれ MRR または ARC を指定するための -fno-objc-arcまたは-fobjc-arcが含まれます。

于 2012-07-08T05:05:07.320 に答える
5

または、一度だけテストするには、これをコードに追加します。

NSString* dummy = [[[NSString alloc] init] autorelease];

ARC を使用している場合、これによりエラーが発生するはずです。存在する場合、ARC は有効になっており、すべて問題なく、再度削除できます。

于 2012-07-08T04:50:33.170 に答える