Речь идет не о том, сколько памяти использовало ваше приложение, потому что это, вероятно, произойдет, даже если вы напишите очень простое приложение, которое имеет только одно представление с одной кнопкой, нажав кнопку, а затем откроет камеру.
Я тестировал на iPhone 3GS, iPad 2 и iPod touch 3G. Это случилось только в iPhone 3GS.
Я обнаружил, что этого больше не произойдет, если вы перезапустите устройство до того, как запустите приложение.
Другое реальное решение - прокомментировать код [super didReceiveMemoryWarning]
в вашем viewController.
- (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.
}
После большого количества испытаний на iPhone 3GS с iOS 4.3.2 я обнаружил, что логика может выглядеть следующим образом:
-> Открыть столько, сколько приложение работает в фоновом режиме
-> Представление imagePicker UIImagePickerController, нажав «Назад» или «Сохранить» из imagePicker
-> Будет вызван метод ApplicationDelegate, applicationDidReceiveMemoryWarning:(UIApplication *)application
-> Затем будет вызван метод ViewController, didReceiveMemoryWarning:
-> Тогда viewDidUnload
-> Тогда viewDidLoad
Тогда вы можете обнаружить, что некоторые представления были освобождены, а текущее представление было указано на неожиданное.
По умолчанию [super didReceiveMemoryWarning]
запускается при вызове метода didReceiveMemoryWarning
ViewController. Комментируя его, методы viewDidUnload:
и viewDidLoad:
не будут вызываться. Это означает, что напоминание было полностью проигнорировано. Это то, что мы ожидали.