iOS 5にアップグレードする場合、コードからすべての[myObject maintain]および[myObject release]ステートメントを削除する必要がありますか?
はい。ただし、XCode 4.2には新しい「Migrate to Objective-C ARC」ツール([編集]-> [リファクタリング]メニュー)が含まれています。deallocの呼び出しは別の話です。コメントで述べたように、clangリファレンスには、deallocメソッドを保持する必要があると記載されています。
理論的根拠:ARCはインスタンス変数を自動的に破棄しますが、保持できないリソースを解放するなど、deallocメソッドを作成する正当な理由はまだあります。そのようなメソッドで[super dealloc]を呼び出さないことは、ほとんど常にバグです。
新しい-fobjc-arcコンパイラフラグを使用してARCを有効にします。ARCは、Mac OS X v10.6およびv10.7(64ビットアプリケーション)のXcode 4.2およびiOS 4およびiOS 5でサポートされています(弱い参照はMac OS X v10.6およびiOS 4ではサポートされていません)。Xcode 4.1ではARCはサポートされていません。
-
ARCを使用してiOS 5用の新しいアプリを開発する場合、何らかの「レトロ互換性」チェックを実装する必要がありますか?つまり、iOSのバージョンを確認し、それに応じて保持と解放を呼び出す必要がありますか?基本的に、ARCはすべてのiOSバージョンで利用できますか、それともiOS 5だけで利用できますか?
いいえ。ARCは、実行時ではなくコンパイル時に魔法をかけるためです。
保持、解放、自動解放をいつ使用するかを覚えておく代わりに、ARCはオブジェクトのライフタイム要件を評価し、コンパイル時に適切なメソッド呼び出しを自動的に挿入します。コンパイラーは、適切なdeallocメソッドも生成します。
ARCの詳細情報:http : //clang.llvm.org/docs/AutomaticReferenceCounting.html