web-dev-qa-db-ja.com

一部のファイルの自動参照カウントを無効にする

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

編集:

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

183
nonamelive

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

単一のクラスでARCと非ARCを混在させることはできません。文書には、retainreleaseautorelease、またはretainCountメッセージの送信は禁止されています(タイマーと遅延実行を含む@selectorを使用)。 ARCコード。したがって、ARCクラスで非ARCを実行することはできません(必要なメッセージが禁止されているため)。また、非ARCクラスでARCを実行することはできません(ARCはARCなしでは無効な構文要素を追加するため)。

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

73
Peter Hosey

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

  1. 必要な選択 Xcodeのターゲット/ビルドフェーズ/コンパイルソースのファイル(CMD +クリックまたはShift +クリック)
  2. ENTERを押す(ダブルクリックすると選択がリセットされるため、機能しません)
  3. タイプ-fno-objc-arc
  4. EnterまたはDoneを押します
78
Tibidabo

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

xcode

使用されるフラグは-fno-objc-arc書き込み後にEnterキーを押します。 [コンパイラフラグ]の下の行の右側の列をダブルクリックする必要があります。ありがとう。

35
Nikhil Bansal

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

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

2
Naveen