Как выгрузить представление и воссоздать его, используя раскадровку, когда didReceiveMemoryWarning

Я использовал этот учебник http://www.wannabegeek.com/?p=168 для переключения между различными контроллерами представления (которые находятся на моей раскадровке). Теперь я хочу выгрузить представления из контроллеров представления, когда didReceiveMemoryWarning получено. Я пробовал это:

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    self.view = nil;
}

И когда я получаю предупреждение памяти, вид показывает черный. Как я могу восстановить вид из моей раскадровки?

1 ответ

Обратите внимание, что вам не нужно освобождать представления в ответ на предупреждение памяти. iOS 6 автоматически освобождает большинство ресурсов, используемых представлениями за кулисами.

Если вы решите освободить представление, то вам следует делать это только в том случае, если оно в данный момент не отображается на экране:

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Add code to clean up any of your own resources that are no longer necessary.

    // If view is currently loaded, but not visible:
    if ([self isViewLoaded] && [self.view window] == nil)
    {
        // Add code to preserve data stored in the views that might be
        // needed later.

        // Add code to clean up other strong references to the view in
        // the view hierarchy.

        // Unload the view:
        self.view = nil;
    }
}

(Код из Руководства по программированию ViewController для iOS с небольшой модификацией, чтобы избежать загрузки представления, если оно в данный момент выгружено.)

С этим кодом представление должно автоматически перезагружаться, если оно снова становится видимым.

Другие вопросы по тегам