我有一個UIViewController,它應該延遲加載視圖,然後將其保存在內存中,因爲它經常重複使用,直到出現內存警告,或者出於某種其他原因想要清除它。爲了實現延遲加載,我覆蓋了默認的getter。這裏是我的代碼:在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;
甚至完全不同的東西?
此外,這通常是使用惰性初始化的正確方法,或者我應該改進一般情況嗎?