[英]UIViewController view -> loadView vs viewWillAppear
我需要釋放我在navigationViewController上的mainViewController的視圖,以避免收到我收到的內存警告。
加載視圖的好習慣是在'loadview'方法中,但是當我嘗試通過“ self.view = nil”來取消分配視圖時(當我進入堆棧的下一個控制器時),它再次調用了“ loadview”方法所以什么也沒發生
我解決了在“ viewWillAppear”方法中加載視圖的問題,但是,我的問題是:
該程序正確嗎? 如果不是(我認為是這樣),我如何釋放該視圖以釋放其內存?
哪種方法是最好的(或更正確的方法)?
這是代碼:
'loadView'而不加載視圖
- (void)loadView
{
[super loadView];
(some more code)
}
它在這里加載的視圖
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!pral)
{
pral = [[TouchDrawView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self setView:pral];
[pral release];
}
(some more code)
}
這是對堆棧的下一個viewController的調用
- (void)menus:(id)sender
{
opcions *ops = [[opcions alloc] init];
[[self navigationController] pushViewController:ops animated:YES];
[ops release];
//Here I'm trying to free memory releasing the view
[pral removeFromSuperview];
pral = nil;
self.view = nil;
}
謝謝
您不必卸載視圖,因為它會自動卸載。 您只需要釋放ViewdidUnload方法中包含內存的那些對象即可。
建立自定義子視圖的更好鈎子是viewDidLoad。
至少,您應該在didReceiveMemoryWarning和dealloc中釋放保留的子視圖(ARC之前的版本)。
推送到新的viewController時無需釋放。 您的舊玩具仍然在下面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.