#ios #didreceivememorywarning
#iOS #didreceivememorywarning
Вопрос:
Я попытался смоделировать предупреждение о памяти в iOS Simulator, и оказалось, что когда приложение работало в фоновом режиме, функция в этот момент не вызывалась, но после того, как приложение снова стало активным, вызывалось applicationDidReceiveMemoryWarning .
При тестировании с помощью Instrument: Activity Monitor мое приложение не освобождало память в фоновом режиме, в то время как потребление памяти другими приложениями уменьшалось.
Однако, если я вызываю applicationDidReceiveMemoryWarning через applicationDidEnterBackground, память освобождается правильно, но я не хочу освобождать память на этом этапе.
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[glView applicationDidEnterBackground:application];
// Function works if it's called from here, but not what I want.
[self applicationDidReceiveMemoryWarning:application];
}
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[glView applicationDidReceiveMemoryWarning:application];
}
Как мне это исправить?
Ответ №1:
К сожалению, то, что вы хотите сделать, не рекомендуется Apple в руководстве по программированию приложений для iOS. Приложение ненадолго переходит в фоновый режим, позволяя вам освободить память. После этого приложение приостанавливается и не может получать сообщения, кроме applicationWillTerminate. Если выдается предупреждение о нехватке памяти, операционная система при необходимости отключает приостановленные приложения.