私は最初のiOSアプリケーションをXcode 4.2で開発し始めました.IOS 5.0には "ユーティリティアプリケーション"テンプレート(FlipsideViewControllerに付属)を使用していました。ARCを使用してiOS 4.0をターゲットに設定する場合、弱参照を置き換えるにはどうすればよいですか?
ARCはコンパイル時の機能なので、iOS 4と互換性があるはずなので、私は自分のアプリを4.3に向けてコンパイルしようとしました。私がそうするとき、私はこのエラーを取得する:
FlipsideViewController.m:エラー:自動参照カウントの問題:
:現在のデプロイメント・ターゲットは、自動化された__weak参照をサポートしていません。それは、この行を参照しています
@synthesize delegate = _delegate;
変数は次のように宣言されていること:
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
私は理解して弱い参照」というs "はiOS 4ではサポートされていませんが、なぜ弱い参照を使用して始めたいのか理解できませんし、ARCを利用しながらも、使い方を書き直す方法を理解することはできません(結局のところ、iOS 4と5で正しく動作するはずです)
アドバイスをいただきありがとうございます。あなたは "古いOSをターゲットにする..."と言う。これは、5.0より古いアプリのビルドでのみunsafe_unretainedを使用する必要があることを意味しますか?または、自分のコードでunsafe_unretainedを使用して、4.xと5.xの両方をターゲットにしてビルドすることはできますか? –
@Mason - 'unsafe_unretained'は、iOS 4.xと5.0の両方でサポートされているので、下位互換性があります。 5.0のみのビルドを行っていた場合は、追加の安全性を利用するために 'weak'に切り替えることができます。 –
unsafe_unretainedを試しましたが、とにかく動作しました。しかし、私は '' __NSAutoreleaseNoPool()のような警告を受け取りました:クラス__NSArrayMのオブジェクト0x564bd90は、プールがない状態でオートリースされました - 単に "*"がリークしていました。 – fifth