183

iOS 5 SDKをダウンロードしたところ、ARCが新しいAppleコンパイラの優れた機能であることがわかりました。当面、多くのサードパーティフレームワークはARCをサポートしていません。新しいコードにARCを使用して、現在の保持/リリースコードを変更しないでおくことはできますか?JSONKitなどの一部のフレームワークはコンバーターを使用してARCに変換できないため、ARCコンバーターはここでは機能しません。

編集:

-fno-objc-arc答えは、ARCを必要としないファイルのコンパイラフラグを追加することです。Xcode 4では、ターゲット->ビルドフェーズ->ソースのコンパイルでこれを行うことができます。

4

4 に答える 4

78

MULTIPLEファイルでARCを無効にする方法はあまり直感的ではありません。しばらくの間、その方法がわかるまで1つずつ実行していました。

  1. Xcodeのターゲット/ビルドフェーズ/ソースのコンパイルで目的のファイルを選択します(CMD+クリックまたはShift+クリック)
  2. Enterキーを押します(ダブルクリックすると選択がリセットされるため、機能しません)
  3. タイプ-fno-objc-arc
  4. EnterキーまたはDoneを押します
于 2012-04-25T11:35:49.713 に答える
73

公開されているARCのドキュメントは、この点については直接明確ではありませんが、各クラスがすべてARCまたはすべて手動で管理されている限り、クラスを1つのプログラムに統合できることを示唆しているようです。

1つのクラスにARCと非ARCを混在させることはできません。このドキュメントでは、、、、、またはメッセージretainを何らかの手段(タイマーや遅延実行を含む)releaseで送信することはARCコードで禁止されていると記載されています。したがって、ARCクラスで非ARCを実行することはできず(必要なメッセージが禁止されているため)、非ARCクラスでARCを実行することはできません(ARCは、ARCなしでは無効な構文要素を追加するため)。autoreleaseretainCount@selector

同じドキュメントで、ARC以外のライブラリ/フレームワークをARCプログラムに統合できるかどうかについて少し明確になっています。はい。すべてのコードが非ARCであるプログラムでARCライブラリ/フレームワークを使用できるかどうかについては言及されていませんが、上記のすべてを考慮すると、その意味は正しいようです。

于 2011-06-23T05:11:11.597 に答える
35

一部のファイルの自動参照カウントを無効にする場合は、手順に従うだけで非常に簡単です。[ターゲット]->[ビルドフェーズ]->[ソースのコンパイル]でコンパイラフラグを追加します。

xcode

使用されるフラグは-fno-objc-arcです。書き込んだ後、Enterキーを押してください。コンパイラフラグの下の行の右側の列をダブルクリックする必要があります。お役に立てば幸いです:)

于 2012-04-21T03:02:00.647 に答える
2

これらのファイルに-fno-objc-arcコンパイラフラグを追加することにより、個々のファイルのARCを無効にすることができます。

プロジェクト内の単一のファイルに対してARCを無効にするにはどうすればよいですか?

于 2013-03-22T03:50:24.660 に答える