2011-09-19 9 views
50

ARCを使用して変換するiOSアプリケーションがあります。私は移行ツールを使用するだけですが、プレビュー段階では一貫してエラーが発生します。Xcode 4.2でプロジェクト全体のARCを有効にする方法

は、私は、ファイルごとに-fobjc-arcコンパイラディレクティブを使用することができます知っているが、私はその後、プロジェクト全体のARCを有効-fno-objc-arcを使用して、個々のクラスをオフにしたいです。

4.2の新しいプロジェクトではデフォルトでARCを使用できるため、どこかにスイッチが必要です。

誰がARC

答えて

65

にプロジェクトを変換するために私を助けることができる「ARCは、現在ベータ版では、Xcodeの4.2で提供され、そして はクラン(別名でコンパイルする場合にのみ、 『アップルLLVMコンパイラ』)。設定、明らかに十分な、「Objective-Cの自動参照カウント」 と呼ばれている。それをオンにして、あなたが行くオフ 。

この設定は、エラーの 莫大な量を生産する変更、既存のコードに取り組んでいる場合ARCはあなたのためにメモリを管理するだけでなく、 しかしそれはあなた自身でそれをやろうとするのを禁じます。 がARCを使用している場合、手動でretain/release/autoreleaseを送信することは違法です。通常の ARC以外のココアコードはこのようなもので埋もれているので、多くの エラーが発生します。

幸いにも、Xcodeは既存のコードを変換するツールを提供しています。 編集 - >リファクタリング - > Objective-Cに変換ARC ...を選択すると、コードの変換がガイドされます。それは何をすべきかを考え出す助けを必要とし、いくつかの 状況があるかもしれませんが、プロセス は大部分が自動でなければなりません「

私は、このリンクから、私をたくさん助けたことを取った:。 http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html

+0

私の最後ではほとんど「自動」になっていませんが、私はちょうど約1時間以上、保持と自動リースを取り除きましたが、この「Convert to Objective-C ARC」のポイントは何ですか?それは何をするためのものか? – PaulG

+0

あなたは正しいですか、あなたはまだ保持とリリースを手動で削除する必要があります..あなたがもう必要ではないものを見るように強制するApplesの目標だったかどうか、またはXcodeがそれらをすべて削除するのが間違っていた自体。 – RyanG

48

プロジェクトやターゲットを選択し、ビルド設定とセクションアップルLLVMコンパイラ3.0の下に行く - 。あなたはオプションのObjective-C自動リファレンスをカウント表示されます言語

+0

ARCの「ガベージコレクション」の直下の設定は、ARCと結びついていますか? – raffian

+1

@SAFX、nope。 ARCとGCは全く異なる2つの事柄です。 –

+1

これはxcode 4.6でも同じですか? – topwik

5

towpseの場合、Xcode 4.6では「CLANG_ENABLE_OBJC_ARC」を探して「はい」に変更して有効にする必要があります。

関連する問題