簡體   English   中英

UIViewController視圖-> loadView vs viewWillAppear

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM