Xcode プロジェクト ウィザードを使用して、ARC をサポートするプロジェクトを作成します。ARC をサポートしていないプログラムと比較しても、違いはわかりませんでした。私のプログラムが ARC をサポートしているかどうかを教えてくれるヒントはありますか?
XCode 4.2.1 ビルド 4D502 を使用しています
Xcode プロジェクト ウィザードを使用して、ARC をサポートするプロジェクトを作成します。ARC をサポートしていないプログラムと比較しても、違いはわかりませんでした。私のプログラムが ARC をサポートしているかどうかを教えてくれるヒントはありますか?
XCode 4.2.1 ビルド 4D502 を使用しています
__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
プロジェクトにARCがあるかどうかを一度だけ知りたい場合は、jpaltenの回答を使用することをお勧めします。コードを ARC をオンにしてのみビルドする場合は、qegal をお勧めします。
ただし、Xcode のどこに設定が存在するかを知りたい場合は、次のようにします。
OBJC_ARC
ます。これにより、ビルド設定に、Objective-C 自動参照カウントまたはCLANG_ENABLE_OBJC_ARC (設定の説明または名前のどちらを表示しているかに応じて) のいずれかが表示される 1 行が残ります。YES に設定されている場合は、ARC がオンになっています。
これは、ARC を使用するかどうかのターゲットの選択です。各ファイルは異なる設定でコンパイルできることに注意してください。これはあなたが尋ねたものではありませんが、すでに 3 つの回答があるので、4 番目の可能性があると考えました。:)
ARC 設定をオーバーライドするファイルを確認するには:
ここでは、各ファイルのコンパイラ フラグを確認できます。ARC を使用するかどうかが設定されているファイルには、それぞれ MRR または ARC を指定するための -fno-objc-arcまたは-fobjc-arcが含まれます。
または、一度だけテストするには、これをコードに追加します。
NSString* dummy = [[[NSString alloc] init] autorelease];
ARC を使用している場合、これによりエラーが発生するはずです。存在する場合、ARC は有効になっており、すべて問題なく、再度削除できます。