2009-08-12 3 views
6

Meine App verwendet viel Speicher. Normalerweise läuft es gut, aber auf einem geladenen Gerät, das seit einiger Zeit nicht mehr neu gestartet wurde, wird es mit dem berüchtigten Low-Memory-Fehler abgeworfen.Antwort auf didReceiveMemoryWarning in OpenGL-App

Ich möchte auf didReceiveMemoryWarning antworten und einige meiner Caches freigeben.

Aber ich habe das Problem, dass meine App auf dem OpenGL ES-Vorlage basiert und keinen View-Controller hat. Es hat nur den App Delegate, der einen Verweis auf den glView enthält.

Was kann ich tun, um die Nachricht didReceiveMemoryWarning abzufangen, damit ich antworten kann?

Antwort

9

Dies ist auch in Ihrer Application Delegate verfügbar.

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

Sie können auch ein Verfahren als Beobachter in jeder Klasse hinzufügen, die Sie auf die UIApplicationDidReceiveMemoryWarningNotification Benachrichtigung möchten. Der Code könnte folgendermaßen aussehen:

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