[解決済み] iOS5 SDKのAutomatic Reference Countingに関するいくつかの質問
質問
現在、iPad 用のアプリを開発しています。開発は iOS 4.2 用に開始され、現在 iOS 4.3 用に継続中です (そして完成すると思います)。 iOS 5 の ARC について読んだところ、基本的に、オブジェクトの解放と保持はもう必要ないことが理解できました。私の質問は
-
もし iOS 5 にアップグレードすることに決めたら、すべての
[myObject retain]
と[myObject release]
ステートメントを私のコードから削除しますか? -
ARC を使用して iOS 5 用の新しいアプリを開発する場合、ある種の "レトロ互換性" チェック機能を実装する必要がありますか? つまり、iOS のバージョンをチェックし、それに応じて retain および release を呼び出す必要がありますか?つまり、基本的に、ARC はすべての iOS バージョンで利用可能なのか、それとも iOS 5 だけなのでしょうか?
どのように解決するのですか?
<ブロッククオートiOS 5 にアップグレードする場合、次のことを行う必要があります。 をすべて削除する必要がありますか? と [myObject release] ステートメントをすべて削除する必要がありますか? を削除する必要がありますか?
はい、しかし、XCode 4.2には、新しい "Migrate to Objective-C ARC" ツール(Edit->Refactorメニュー)があり、あなたのためにそれを行ってくれます。deallocの呼び出しは、別の話です。コメントで述べたように、clangのリファレンスでは、deallocメソッドを使用し続けるべきだと述べています。
理由: ARC がインスタンス変数を自動的に破棄するとしても、保持できないリソースを解放するような dealloc メソッドを記述する正当な理由があります。そのようなメソッドで [super dealloc] を呼び出すことに失敗すると、ほぼ常にバグになります。
ARCを有効にするには、新しい -fobjc-arc コンパイラーフラグを使用します。ARC は次のものでサポートされています。 Xcode 4.2 for Mac OS X v10.6 および v10.7 (64ビットアプリケーション) (64ビットアプリケーション) および iOS 4 と iOS 5 でサポートされています。 および iOS 5 でサポートされています(弱い参照は Mac OS X v10.6 および iOS 4 ではサポートされていません)。 4). Xcode では ARC はサポートされていません。 4.1.
-
<ブロッククオートiOS 5 用の新しいアプリを ARCを使用してiOS 5用の新しいアプリを開発する場合、ある種の ある種のレトロコンパチビリティチェックを実装する必要がありますか? すなわち、iOS のバージョンをチェックし、retain と release を呼び出す必要があります。 iOSのバージョンを確認し、それに応じてretainとreleaseを呼び出す必要があるのでしょうか? を呼び出す必要があるのでしょうか?基本的に、ARCはすべてのiOSバージョンに対応しているのでしょうか? すべてのiOSバージョンで利用可能ですか? iOS 5だけですか?
ARCはコンパイル時に魔法をかけるのであって、実行時に魔法をかけるのではないからです。
<ブロッククオートいつ を覚えておく必要はありません。 自動解放のタイミングを覚える代わりに、ARCは オブジェクトの寿命要件を評価し を評価し、自動的に 適切なメソッドコールを自動的に挿入します。 を自動的に挿入します。また、コンパイラは 適切な dealloc メソッドを生成します。 を生成します。
ARCの詳細情報。 http://clang.llvm.org/docs/AutomaticReferenceCounting.html
関連
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] ターゲット・パターンに '%' が含まれていません。メイクファイル
-
[解決済み】NSArrayをアルファベット順に並べるには?
-
[解決済み】Objective-Cの自動参照カウントでは、どのようなリークを防いだり最小化したりできないのですか?
-
[解決済み】新しい自動リファレンスカウント機構はどのように機能するのですか?
-
[解決済み】ARCで@autoreleasepoolがまだ必要なのはなぜですか?
-
[解決済み] 一部のファイルに対する自動参照カウントの無効化
-
[解決済み] ARCおよびブリッジドキャスト
-
[解決済み] Snow LeopardのXcode 4.2でiOS 5.1 SDKを入手することは可能でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Objective-C。NULL、nil、@""の違いは何ですか?
-
[解決済み] エラー: バイナリ式のオペランドが無効です ('float' と 'float')
-
[解決済み] イニシャライザーの要素がコンパイル時定数でない
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] C言語で純粋にiOSアプリを書く方法
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】isEqual:とハッシュをオーバーライドするためのベストプラクティス
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?
-
[解決済み】なぜObjective-Cのファイルには.mという拡張子がついているのですか?
-
[解決済み】このブロックで自己を強く捉えると、リテインサイクルになりそうです。