Моя идея заключается в том, что при получении предупреждением о нехватке памяти вызывается два метода:
didReceiveMemoryWarning // in your NSObjects
и
applicationDidReceiveMemoryWarning // in your app delegate
, а затем, если вы хотите освободить память, этометоды для рассмотрения.
Что касается того, что вы можете сделать там ... Ну ... Подумайте о том, что Xcode предлагает:
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
/*
Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
*/
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
Похоже, лучшим выбором будет освобождение любогообъект не виден пользователю и / или не используется, или любые кэшированные данные, которые вы можете восстановить позже.Не прикасайтесь к своему графическому интерфейсу: если вы закроете его или его часть, ваше приложение станет непригодным для использования, и пользователь будет разочарован.
Что касается ваших 2 сценариев, я вижу возможную ошибку при рассмотрении того, для чего предназначено предупреждение о памяти.Это способ лечения чрезвычайных ситуаций, а не обычный способ управления памятью.Разработчики должны думать о хорошей архитектуре памяти и сохранять данные всякий раз, когда это возможно.
В сценарии 1 сохраняйте свои данные, когда приложение отправляется в фоновый режим.
applicationDidEnterBackground
В сценарии 2 сохраняйте своиданные при открытии нового представления.
Надеюсь, это имеет смысл ...