Pergunta

Meu aplicativo usa muita memória. Normalmente, ele funciona muito bem, mas em um dispositivo carregado que não foi reiniciado em algum tempo, ele será descartado com o erro de memória baixa infame.

Gostaria de responder a didReceiveMemoryWarning e liberar algumas das minhas caches.

Mas eu tenho o problema que meu aplicativo é baseado fora do modelo de OpenGL ES e não tem um controlador de vista. Ele só tem a App delegado que contém uma referência ao glView.

O que posso fazer para interceptar a mensagem didReceiveMemoryWarning para que eu possa responder?

Foi útil?

Solução

Isto também está disponível dentro do seu Aplicação Delegado

-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
  NSLog(@"Received memory warning!");
}

Outras dicas

Você também pode adicionar um método como observador, em qualquer classe que você quiser, com a notificação UIApplicationDidReceiveMemoryWarningNotification. O código pode gostar assim:

- (void) cleanMemory: (NSNotification*) notification {
  // Save memory!
}

- (id) init {  // Or any other function called early on.
  // other init code
  [[NSNotificationCenter defaultCenter]
   addObserver:self selector:@selector(cleanMemory:)
          name:UIApplicationDidReceiveMemoryWarningNotification
        object:nil];
  return self;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top