【iPhoneアプリ】Xcodeのコンパイル設定を変更して、特定のファイルのみARCを無効にする


タイトル通りです。
ARCはとても便利なんですが、
古いソースと新しいソースコードをごっちゃにしたい時は、特定のファイルだけ無効にしたい時があります。
やり方を調べたのでφ(*'д'* )メモメモ


ARC(Automatic Reference Counting)はiOS5から登場した機能で、
ソースコードをコンパイルする時にメモリの解放などの記述をコンパイラが追加してくれる便利な奴です。
しかし既にメモリ解放処理が書かれたソースをコンパイルする時に以下の様なエラーが出てしまいます。

ARC forbids explicit message send of 'autorelease'
ARC forbids explicit message send of 'release'
ARC forbids explicit message send of 'retain'

要するに「メモリの解放ならARCさんがやってくれるから書かなくていいよ!」というエラーです。
特定のファイルのみARCを無効にする必要があるのでコンパイル設定を変更します。

ARCを有効にしてプロジェクト作成

プロジェクト作成時に「Use Automatic Reference Counting」にチェックを入れます。

【iPhoneアプリ】特定のファイルのみARCを無効にする2

TargetのBuild PhasesからCompiler Flagsに「-fno-objc-arc」を設定する

プロジェクトのTargetから、Build Phasesを開きます。

Compile Sourcesにファイルの一覧が表示されるので、ARCを無効化したいものを選んでダブルクリック。

ふきだしのような入力欄が現れるので、「-fno-objc-arc」と入力します。
(逆にARCが無効の環境で、有効にしたい場合は「-fobjc-arc」と入力)

【iPhoneアプリ】特定のファイルのみARCを無効にする

Compiler Flagsに「-fno-objc-arc」が設定されたファイルのみ、ARCが無効化されます。
たくさんファイルが有る時は、全部にちまちま設定するのが面倒だと思いました(´・ω・`)


関連記事

コメントは受け付けていません。