私はiOS 5で自動参照カウントを学習しようとしています。これで、この質問の最初の部分は簡単になるはずです。
ARCを使用するときに、deallocに明示的なrelease-propertyステートメントを記述する必要がないことは正しいですか?言い換えれば、以下は明示的な割り当て解除を必要としないというのは本当ですか?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
次に重要な質問は、ARCへの移行に関するリリースノートドキュメントの次の行にあります。
インスタンス変数を解放する必要はありません(実際に解放することはできません)が、ARCを使用してコンパイルされていないシステムクラスやその他のコードで[self setDelegate:nil]を呼び出す必要がある場合があります。
これは疑問を投げかけます:どのシステムクラスがARCでコンパイルされていないかをどうやって知るのですか?独自のdeallocを作成し、強く保持するプロパティを明示的にnilに設定する必要があるのはいつですか?プロパティで使用されるすべてのNSおよびUIフレームワーククラスが明示的な割り当て解除を必要とすると想定する必要がありますか?
SOやその他の場所では、手動参照追跡を使用するときにプロパティのバッキングivarを解放する方法について豊富な情報がありますが、ARCを使用するときの情報は比較的少ないです。
MyController : UIViewController
は、UIViewを作成および所有し、ビューのデリゲートをそれ自体に設定するクラスがあるというものです。それはその見解の唯一の保持所有者です。コントローラが割り当て解除されると、ビューも割り当て解除されます。デリゲートポインターがぶら下がっているかどうかは重要ですか?