我需要釋放我的navigationViewController上的mainViewController的視圖,以避免我收到的內存警告。UIViewController視圖 - > loadView vs viewWillAppear
加載視圖的好習慣是在'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;
}
謝謝
是的,我的老人在那裏,但是沒有必要爲了消耗內存資源而放在那裏,不是嗎? (它不在屏幕上)。所以,如果我理解得很好,在收到內存警告時不做任何事情和「反應」是一種很好的做法嗎? – Kanick 2012-04-14 17:04:55
接收到內存警告(會觸發viewDidUnload)是可以的,因爲直到你收到警告,你沒有內存問題,所以沒有必要處理東西。如果您在不需要時處理某些內容,則可能會產生其他問題,例如需要重新載入所有內容(=延遲)或更糟糕的情況,從而丟失難以重新載入的信息(可能來自其父VC) 。 – SomaMan 2012-04-14 17:45:39
@SomaMan,是的,這是有道理的。感謝所有這些快速回復。 – Kanick 2012-04-14 18:09:21