私はUIViewControllerを持っています。ビューを遅延ロードして、それがメモリに保持されるようにする必要があります。メモリ警告が発生するか、他の何らかの理由でそれをクリーニングしたい。遅延読み込みを実現するために、デフォルトゲッターを上書きしました。ここに私のコードだ:UIViewControllerサブクラスのビューを遅延ロードする
@interface MyController {
MyView *_myView;
}
@property(nonatomic, retain) MyView *myView;
@end
@implementation MyController
@synthesize myView = _myView;
- (MyView *)myView {
if(_myView == nil) {
_myView = [[MyView alloc] init];
// some more initialization
}
return _myView;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// the main part of my interest, freeing myView again
self.myView = nil;
}
@end
今、私の質問は基本的には次のとおりです。私は- (void)didReceiveMemoryWarning
に行ったようmyView
を解放することが正しいですか私は[_myView release]; _myView = nil;
、あるいは完全に異なる何かを持っているでしょうか?
また、これは一般に遅延初期化を使用する正しい方法ですか、ここで一般的に何か改善する必要がありますか?私はデフォルトUIViewController
行動すでに間違えなまけビューをロードするわけではない場合