Создайте свои подпредставления в -viewDidLoad
. Если вам нужны ивары для них, присвойте только их значения. Ссылка удерживается путем добавления видов в качестве подпредставлений к основному виду.
Затем, когда ваш вид не загружен, вы должны установить свои ivars на ноль, потому что объект был освобожден, так как ваш вид был удален и освобожден.
Так в вашем заголовке
@interface MyViewController : UIViewController {
IBOutlet UIView *someSubview; // assigned
}
@property (nonatomic, assign) IBOutlet UIView someSubview;
@end
А в твоей реализации
@implementation MyViewController
//... some important stuff
- (void)viewDidLoad;
{
[super viewDidLoad];
someSubview = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:someSubview]; // retains someSubview
[someSubview release]; // we don't hold it
}
- (void)viewDidUnload;
{
[super viewDidUnload];
someSubview = nil; // set the pointer to nil because someSubview has been released
}
//... more important stuff
@end
Если вы хотите, вы также не можете выпустить someSubview
в -viewDidLoad
, но затем вы должны выпустить его в -viewDidUnload
И -dealloc
, поскольку (если я правильно помню) -viewDidUnload
не вызывался раньше -dealloc
. Но это не обязательно, если вы не сохраните someSubview
.