Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to respond to didReceiveMemoryWarning in OpenGL app

My app uses a lot of memory. Normally it runs fine, but on a loaded device that hasn't been restarted in awhile, it will be jettisoned with the infamous Low Memory error.

I would like to respond to didReceiveMemoryWarning and free up some of my caches.

But I have the problem that my app is based off of the OpenGL ES template and doesn't have a view controller. It just has the App Delegate which holds a reference to the glView.

What can I do to trap the didReceiveMemoryWarning message so that I can respond?

like image 579
Frank Krueger Avatar asked Aug 12 '09 17:08

Frank Krueger


2 Answers

You can also add a method as an observer, in any class you want, to the UIApplicationDidReceiveMemoryWarningNotification notification. The code might like like this:

- (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;
}
like image 121
Tyler Avatar answered Nov 15 '22 04:11

Tyler


This is also available within your Application Delegate.

-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
  NSLog(@"Received memory warning!");
}
like image 42
NWCoder Avatar answered Nov 15 '22 06:11

NWCoder