Как выгрузить представление и воссоздать его, используя раскадровку, когда 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 с небольшой модификацией, чтобы избежать загрузки представления, если оно в данный момент выгружено.)
С этим кодом представление должно автоматически перезагружаться, если оно снова становится видимым.