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


1342

プロジェクトでARCを使用しています。しかし、ARCのルールが少し壊れやすいファイル(ユニットテストやモックオブジェクトなど)に遭遇しました。私はこのオプションを見つけることができませんでしたが、ファイルごとにARCを無効にする方法があったと聞いたことを思い出します。

これは可能ですか?ファイルごとにARCを無効にするにはどうすればよいですか?


回答:


2168

個別のファイルにARCを無効にするには-fno-objc-arc、それらのファイルにコンパイラフラグを追加します。

ターゲット->ビルドフェーズ->ソースのコンパイルでコンパイラフラグを追加します。[ コンパイラフラグ]の下の行の右側の列をダブルクリックする必要があります。また、cmdボタンを押しながらファイルを選択し、Enterキーを押してフラグ編集ボックスを表示することで、複数のファイルに追加することもできます。(複数のファイルを編集すると、すでに持っているフラグが上書きされることに注意してください。)

例のあるサンプルプロジェクトを作成しました:https : //github.com/jaminguy/NoArc

xcode

詳細については、この回答を参照してください: 一部のファイルの自動参照カウントを無効にする


58
したがって、このフラグを追加する場所はあまり直感的ではありません。しかし、Xcode 4では、ビルドフェーズとコンパイルソースに、実際には2つの列があります。1つはファイル名用、もう1つはその1つのファイルのコンパイルフラグ用です。ここで、この特定のコンパイラフラグを入力します。
casademora

3
ディレクトリ、つまりディレクトリ内のすべてのファイルを指定できますか?グループはどうですか?
ma11hew28 2011

4
ディレクトリはありません。ビルド設定で一度に1つのファイルのみ:(
casademora

13
@casademoraでは、この情報に対して十分な賛成票を取得できません。ありがとうございました。
theTRON、2011年

26
@casademora複数のファイルを一度に選択できますが、ダブルクリックせずにRETURNキーを押します。次にを追加するだけで、-fno-objc-arc選択したすべてのファイルに追加されます。編集はこの下の答えを見ました:(
pkyeck

460

複数のファイルでARC無効にする:

  1. XcodeのTarget / Build Phases / Compile Sourcesで目的のファイルを選択します
  2. Enterキーを押します
  3. タイプ-fno-objc-arc
  4. EnterまたはDoneを押します

;)

ここに画像の説明を入力してください


2
THX!この機能をずっと探していました。複数の行を選択するとダブルクリックは機能しませんが、Enterキーを押すと機能します。とても奇妙。
bobmoff

4
ああすごい。私はすべてのカルマを費やして、これを再び賛成します。共有してくれてありがとう!
jemmons 2012年

これはXcode 4.3.3では動作しないようです。選択したファイルをダブルクリックするかEnterキーを押すと、-fno-ojbc-arcフラグを設定するためのダイアログが表示されません。これに対する回避策はありますか?
トム

4.3.3があり、現在は4.4 DP7でしたが、それでも問題なく動作します。Xcodeを再起動して、マシンを再起動し、権限を修復してください。
ティビダボ2012

44

Xcode 4.3の場合、より簡単な方法は、編集/リファクタリング/ objective-C ARCに変換してから、変換したくないファイルをチェックすることです。この方法は、上記のコンパイラフラグを使用する場合と同じです。


36

個々のファイルを非弧にするのはとても簡単な方法です。

以下の手順に従ってください:

個々のファイルでARCを無効にします。

  1. XcodeのTarget / Build Phases / Compile Sourcesで目的のファイルを選択します

  2. 必要な.mファイルを選択します。NON-ARCPRESS ENTERと入力します-fno-objc-arc

非ARCファイルからARCプロジェクトフラグ: -fno-objc-arc

ARCファイルから非ARCプロジェクトフラグ: -fobjc-arc


35

注:多くのファイルARC無効にする場合は、次の操作を行う必要があります。

  1. 「ビルドフェーズ」->「ソースのコンパイル」を開きます
  2. "left_mouse" + "cmd"(分離されたファイルの場合)または+ "shift"でファイルを選択します (グループ化されたファイルの場合-最初と最後の選択)
  3. 「Enter」を押す
  4. ペースト -fno-objc-arc
  5. もう一度「Enter」を押す
  6. 利益!


13
  1. Xcodeプロジェクトを選択
  2. ターゲットに移動
  3. [ビルドフェーズ]セクションを選択します
  4. ビルドフェーズセクション内で、コンパイルソースを選択します。
  5. ARCを無効にしたくないファイルを選択し、-fno-objc-arcを追加します。

特定のファイルのARCを無効にする


13

Xcodeの特定のファイルのARC(自動参照カウント)を無効にすることができます。

ターゲットを選択->ビルドフェーズ->ソースをコンパイル->ファイルを選択(ダブルクリック)->ポップアップウィンドウに「-fno-objc-arc」を追加します。

「到達可能性」ファイルを使用しているときにこの状況に遭遇しました。

これを下の図に示します。

ここに画像の説明を入力してください



11

このビデオで説明されている4つの必須ステップ

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done


6

Unityを使用している場合は、Xcodeでこれを変更する必要はありません。Unity内で特定のファイルのメタデータにコンパイルフラグを適用できます。プロジェクトパネルでそれらを選択し、インスペクターパネルから適用するだけです。Cloud Buildの使用を計画している場合、これは不可欠です。ここに画像の説明を入力してください


5

フラグ「-fno-objc-arc」を追加します。

簡単な手順に従う:アプリ>ターゲット>ビルドフェーズ>ソースのコンパイル>クラス「-fno-objc-arc」の後にフラグを追加


5

他のすべての答えは、MRC(手動参照カウント)を無効にし、ARC(自動参照カウント)を有効にする方法を説明していると思います。MRC(手動参照カウント)を使用するには、つまり、複数ファイルでARC(自動参照カウント)を無効にします。

  1. XcodeのTarget / Build Phases / Compile Sourcesで目的のファイルを選択します
  2. Enterキーを押します
  3. タイプ-fobjc-arc
  4. EnterまたはDoneを押します

2

ARCを適用したくないファイルの前にあるビルドフェーズ>ソースのコンパイルで-fno-objc-arcフラグを使用するだけです。


-1
  1. プロジェクトを選択->ターゲット->ビルドフェーズ->コンパイラソース
  2. ファイルを選択->コンパイラフラグ
  3. -fno-objc-arcを追加

-2

アプリに移動->ターゲット->ビルドフェーズ->ソースのコンパイル

次に、ARCを無効にするファイルを選択します

このスニペットを貼り付けます "-fno-objc-arc"貼り付けた後、Enterキーを押します

ARCを無効にする各ファイル内。


5
あなたの答えはこの古い質問への追加を提供しません。
vikingosegundo 2015

-2

ARCを無効にするための次の手順

Xcodeプロジェクトを選択ターゲットに移動ビルドフェーズセクションを選択ビルドフェーズセクション内で、コンパイルソースを選択します。ARCを無効にしたくないファイルを選択し、-fno-objc-arcを追加します。


1
あなたの答えはこの古い質問への追加を提供しません。
-jomafer

どのような追加が必要です。あなたが私たちを提供するよりも知っている場合。
annu

私はあなたに反対票を投じませんでした。この質問は、2011年7月11日の5:21に行われたものです。同じ回答の回答が多すぎて有用な情報が追加されていない...その理由で誰かがあなたに反対票を投じたのではないかと思います...
jomafer

簡単に説明してもらえますか?
annu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.