У меня есть 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
Теперь мой вопрос в основном таков: правильно ли выпускать myView
, как я это делал в - (void)didReceiveMemoryWarning
, или мне нужно было бы [_myView release]; _myView = nil;
или даже что-то совершенно другое?
Кроме того, обычно ли это правильный способ использования отложенной инициализации или я должен что-то улучшить здесь в целом?