"dealloc"でエラー。
先日から作成していたサンプルソースで、画像処理部のコードを追加したところ、
追加したdealloc関数でエラーが発生(正しくは関数内の[super dealloc];)、下記メッセージが表示された。
ARC forbids explicit message send of 'dealloc'
他にも、release、retainでもエラーマークあり。
手持ちの参考書で調べてみると、Xcode4.2からサポートされたARC(Automatic Referrence Counter)に関係している様子。
エラーメッセージをそのまま検索したら、F's Footprint様 2012/03/06にて解説されているのを発見。
ARC forbids explicit message send of 'release' | F's Footprint
手持ちの本と合わせると「ARCはメモリ管理をかしこく行ってくれる」機能。
ARCを使う事で自動管理されるが、これにより使用禁止になるのがretain/release/autorelease/dealloc。
対策としては、
- retain/release/autorelease/deallocを使わないように修正する。
- ARC機能を使わない、またはOffにする。
今回は一時的にARC機能をoffにすることで対応した。
- ProjectNavigater でプロジェクト名を選択し、Build Setting > Apple LLVM compiler3.1 - Language > Objective-C Automatic Referrence Countingを表示。
- Yes/No項目が4つあるので、2つ目/3つ目を No に変更する。
リビルドしてエラーが無い事を確認して、一安心。
後でARC-On時のコードも作成しよう。