Xcode/ios6の新しいバージョンをインストールしました。 viewDidUnloadは減価償却されます。
Apple doc、
viewDidUnload [...] iOS6.0では非推奨です。低メモリ状態でビューがパージされなくなったため、このメソッドが呼び出されることはありません。
しかし、多くのアプリがこのコールバックを使用して、次のようなプロパティを解放しています。
- (void)viewDidUnload {
[super viewDidUnload];
self.recipientButton = nil;
self.connectButton = nil;
self.infoLabel = nil;
}
これは、IBOutletsをリリースするためのベストプラクティスでした。
つまり、最初の質問:
iOS 6でこれらの既存のアプリはどうなりますか?彼らは漏れますか?
そして2番目のもの:
IBOutletプロパティをリリースするための新しい推奨方法は何ですか?デアロック方式では?
最初の質問の場合:
ViewControllerはdidReceiveMemoryWarningメソッドのコールバックを受け取り、このメソッドのビューと他のコンポーネントを無効にすることができます
参考までに、EVOLUTION OF VIEWCONTROLLERのWWDC2012ビデオセッションを確認してください(登録済みの開発者のみが利用できると思いますが、確かではありません)。
あなたの2番目のものに答えてください。
[オブジェクトリリース]; Deallocで。リリースする前にオブジェクトにnilを割り当てる必要はありません。
次のようなIBOutletsには弱いプロパティを使用することをお勧めします
@property (weak) IBOutlet UILabel * labelText;
そうすれば、deallocで何もする必要はありません。 iOS 6では、単にViewDidUnloadは呼び出されません。iOS5以前では、メモリ警告が発生したときに呼び出されるだけです。
2つ目:IBOutletプロパティをリリースするための新しい推奨方法は何ですか?デアロック方式では?
「古い」推奨される方法は何ですか?保持されているインスタンス変数は常にdealloc
で解放する必要があります。それは常にこのようであり、このようであり続けます。
viewDidUnload
(メモリ不足の場合にのみ呼び出されます)では、プロパティをnil
に設定できますまた。