2009-08-12 15 views
6

Mon application utilise beaucoup de mémoire. Normalement, il fonctionne bien, mais sur un périphérique chargé qui n'a pas été redémarré depuis un certain temps, il sera jeté avec l'erreur infime de mémoire faible.Comment répondre à didReceiveMemoryWarning dans l'application OpenGL

Je voudrais répondre à didReceiveMemoryWarning et libérer certains de mes caches.

Mais j'ai le problème que mon application est basée sur le modèle OpenGL ES et n'a pas de contrôleur de vue. Il a juste l'App Delegate qui détient une référence à la glView.

Que puis-je faire pour intercepter le message didReceiveMemoryWarning afin que je puisse répondre?

Répondre

9

Ceci est également disponible au sein de votre Application Delegate.

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

Vous pouvez également ajouter une méthode à titre d'observateur, dans toutes les classes que vous voulez, à la notification UIApplicationDidReceiveMemoryWarningNotification. Le code pourrait ressembler à ceci:

- (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; 
}