Это сводит меня с ума!!!
Я получаю "Полученное предупреждение памяти. Level=1" каждый раз, когда я пытаюсь показать UIImagePickerController с sourceType = UIImagePickerControllerSourceTypeCamera.
Вот код от моего viewDidLoad, где я настроил вещи:
- (void)viewDidLoad {
[super viewDidLoad];
// Set card table green felt background
self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"green_felt_bg.jpg"]];
// Init UIImagePickerController
// Instantiate a UIImagePickerController for use throughout app and set delegate
self.playerImagePicker = [[UIImagePickerController alloc] init];
self.playerImagePicker.delegate = self;
self.playerImagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
И вот то, как я представляю его модально..
- (IBAction) addPlayers: (id)sender{
[self presentModalViewController:self.playerImagePicker animated:YES];
}
Результат... UIImagePicker начинает показывать и затем быстро расти... Я получаю предупреждение памяти... КАЖДЫЙ РАЗ! Интересно достаточно, если я переключаюсь на sourceType = UIImagePickerControllerSourceTypePhotoLibrary... все хорошо работает.
Что в heck я пропускаю или делаю неправильно? Все, что я хочу сделать, показать камеру, взять и сохранить картинку.
К вашему сведению - я тестирую на своем устройстве 3G.
Благодаря любому, кто может помочь :)
Это очень распространено. Пока вы справляетесь с предупреждением о нехватке памяти без сбоев и имеете достаточно места для продолжения работы, не позволяйте этому свести вас с ума.
Теперь после обновления до 4.0 это происходит и с моим приложением - раньше в 3.1 предупреждений не было.
На самом деле, как вы уже говорили, проблем быть не должно. Однако это приводит к тому, что представление, которое идет после него, загружается снова и вызывается viewDidLoad. Это испортило мое приложение, поскольку я инициализирую представление в viewDidLoad - теперь оно инициализируется заново, хотя не должно.
Просто в качестве комментария, это может произойти и со многими другими приложениями, которые полагаются на загрузку представления только один раз!
Это действительно произошло в моем приложении Did I Do That и на iOS 4.0.Это было непоследовательно, но наиболее частой причиной было создание экземпляра UIImagePickerController
и переход к некоторой большой фотографии, хранящейся в одном из альбомов.
Исправлено сохранением состояния в методе didReceiveMemoryWarning
и загрузкой из состояния в методе viewDidLoad. Одно предостережение: не забудьте очистить файл с сохранением состояния в правильном месте для вашего приложения. Для меня это оставляло соответствующий UIViewController при нормальных обстоятельствах.