2009-08-12 6 views
6

Мое приложение использует много памяти. Обычно он работает нормально, но на загруженном устройстве, которое не было перезапущено через некоторое время, оно будет сбрасываться с позорной ошибкой Low Memory.Как отреагировать на didReceiveMemoryWarning в приложении OpenGL

Я хотел бы ответить на didReceiveMemoryWarning и освободить некоторые из моих кешей.

Но у меня есть проблема в том, что мое приложение основано на шаблоне OpenGL ES и не имеет контроллера вида. Он просто имеет делегат приложения, который содержит ссылку на glView.

Что я могу сделать, чтобы уловить сообщение didReceiveMemoryWarning, чтобы я мог ответить?

ответ

9

Это также доступно в пределах вашего Application Delegate.

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

Вы также можете добавить метод в качестве наблюдателя, в любом классе вы хотите, чтобы уведомления UIApplicationDidReceiveMemoryWarningNotification. Этот код может понравиться вот так:

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