[解決済み] ARCを使用してiOS 4.0をターゲットにしている場合、弱い参照をどのように置き換えるのですか?
質問
私は Xcode 4.2 で最初の iOS アプリを開発し始め、iOS 5.0 をターゲットにして、quot;utility application" テンプレート (FlipsideViewController が付属しているもの) を使用していました。
ARC はコンパイル時の機能なので、iOS 4 とも互換性があるはずだと読み、私のアプリを 4.3 にターゲットして、コンパイルしようとしました。そうすると、このエラーが発生します。
FlipsideViewController.m: エラー。Automatic Reference Counting Issue: 現在のデプロイメントターゲットは自動化された __weak references をサポートしていません。
この行を参照しています。
@synthesize delegate = _delegate;
その変数は、次のように宣言されています。
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
弱参照がiOS 4でサポートされていないことは理解していますが、そもそもなぜ弱参照を使いたいのかがよくわかりませんし、ARCの利点を生かしつつ弱参照を使わないようにするにはどう書き直せばいいのかもわかりません(結局、iOS 4 AND 5で動くことになっているんですよね)。
どのように解決するのですか?
古いOSを対象にする場合は
unsafe_unretained
の代わりに
weak
をプロパティ宣言に追加すれば、ほとんど同じように動作するはずです。
weak
の参照はそのターゲットが無くなるとそれ自体が無くなりますが
unsafe_unretained
は、リンク先のオブジェクトが解放されたときに、ぶら下がりポインタになる可能性を残しています。 後者は、もしあなたが
assign
を手動メモリ管理におけるプロパティ宣言として使用した場合と同じ動作です。
これはretain cyclesを避けるために行うのですが、これは私の回答でも触れています ここで . 元のオブジェクトへの強いポインタを持つ可能性のあるものへの強いポインタを持ちたくはないでしょう。 そうすると、何も適切にリリースされなくなります。
関連
-
[解決済み】Objective-C ARC: strong vs retainとweak vs assign
-
[解決済み] APNSの.pemファイルを作成する?
-
[解決済み] iOSでHTMLをNSAttributedStringに変換する
-
[解決済み] iPhone Safari ウェブアプリでリンクを新しいウィンドウで開く
-
[解決済み] Push Notificationのアラートテキストは何文字まで可能ですか?
-
[解決済み] UIImageのアスペクト比と幅を維持したリサイズ
-
[解決済み] viewWillAppear:と-viewDidAppear:の違いは何ですか?
-
[解決済み] UIViewのサブビューをセンタリングする方法
-
[解決済み] テーブルビューの行をプログラムで選択する
-
[解決済み] iPhoneでテキスト入力のポップアップダイアログボックスを表示する簡単な方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Mobile Safariで電話番号のリンクを無効にする方法を教えてください。
-
[解決済み】Objective-Cの自動参照カウントでは、どのようなリークを防いだり最小化したりできないのですか?
-
[解決済み] UIScrollViewでスクロールの方向を見つける?
-
[解決済み] Xcode 4.2 - '...' の宣言は、この関数の外では表示されません 警告
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
-
[解決済み] ナビゲーションコントローラスタック、サブビュー、モーダルコントローラを使用せずに、ビューコントローラの変化をアニメーション化する?
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
-
[解決済み] CALayerのanchorPointを変更すると、ビューが移動します。
-
[解決済み] UILabelがラベルサイズに合うようにテキストを自動縮小しない
-
[解決済み] アプリを提出する前にitunesのリンクを取得する