У меня есть UIViewController, который должен лениво загружать представление, а затем хранить его в памяти, поскольку он повторно используется довольно часто, пока, например, появляется предупреждение о памяти или я хочу очистить его по какой-то другой причине. Чтобы достичь ленивой загрузки, я перезаписал получателя по умолчанию. Вот мой код:Lazy-load view в подклассе 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;
или даже что-то совсем другое?
Также, как правило, это правильный способ использования ленивой инициализации или что-то улучшить здесь вообще?