4

Xcode 4.5 で古いプロジェクトをコンパイルすると、次の警告が表示されます。

ARC を使用しない場合、'__bridge' キャストは効果がありません

コードが ARC プロジェクトと非 ARC プロジェクトの両方で適切に機能するように、この警告を取り除く適切な方法は何ですか?

4

3 に答える 3

5

個々のソース ファイルは、ARC でコンパイルするか、ARC でコンパイルしない必要があります。それがどちらであるかを決めて、特定のソースファイルに対して常にその方法を使用する必要があります。メモリ管理の命名規則に従っていれば、ARC ソース ファイルと非 ARC ソース ファイルを同じプロジェクトに混在させることができます。

私が上記のように言う理由は、ARC 用に書かれたコードを ARC なしでコンパイルすると、すべての保持、解放、および自動解放のおかげで、いたるところでメモリ リークと時期尚早の割り当て解除が発生するからです。がありません。

于 2012-09-20T09:16:24.457 に答える
0

いくつか#defineの を使用すると、MRC、ARC、および GC の複数に対して正しくコンパイルされるソース ファイルを作成することができます。

Xcode では、次のように記述できることがわかっているため、ARC と GC の両方を有効にすることはできません。

#if defined(__OBJC_GC__)
#  define USING_GC 1
#else
#  define USING_GC 0
#endif

#if __has_feature(objc_arc)
#  define USING_ARC 1
#else
#  define USING_ARC 0
#endif

#if USING_ARC || USING_GC
#  define USING_MRC 0
#else
#  define USING_MRC 1
#endif

USING_GCこれは、USING_MRCとの 1 つだけを定義し、残りの 2 つを としてUSING_ARC定義します。これをプロジェクトのプレフィックス ヘッダー (.pch) に入れることができます。10

これらの定義をコードで直接使用して、ブリッジ キャストなどを含めたり除外したりできます。または、使用中のメモリモデルに基づいて適切なコードに展開されるメモリ呼び出し、キャストなどのマクロを定義することをお勧めします。

HTH

于 2012-09-20T10:16:29.110 に答える
0

そのファイルの ARC を有効にするだけです。

-fobjc-arc

([ビルド フェーズ] > [コンパイル ソース] > [コンパイラ フラグ] に移動)

于 2013-09-24T03:26:06.003 に答える