Полученное предупреждение памяти. Level=1 при показе UIImagePickerController

Это сводит меня с ума!!!

Я получаю "Полученное предупреждение памяти. 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.

Благодаря любому, кто может помочь :)

22
задан wgpubs 23 June 2010 в 05:02
поделиться

3 ответа

Это очень распространено. Пока вы справляетесь с предупреждением о нехватке памяти без сбоев и имеете достаточно места для продолжения работы, не позволяйте этому свести вас с ума.

17
ответ дан 29 November 2019 в 05:03
поделиться

Теперь после обновления до 4.0 это происходит и с моим приложением - раньше в 3.1 предупреждений не было.

На самом деле, как вы уже говорили, проблем быть не должно. Однако это приводит к тому, что представление, которое идет после него, загружается снова и вызывается viewDidLoad. Это испортило мое приложение, поскольку я инициализирую представление в viewDidLoad - теперь оно инициализируется заново, хотя не должно.

Просто в качестве комментария, это может произойти и со многими другими приложениями, которые полагаются на загрузку представления только один раз!

5
ответ дан 29 November 2019 в 05:03
поделиться

Это действительно произошло в моем приложении Did I Do That и на iOS 4.0.Это было непоследовательно, но наиболее частой причиной было создание экземпляра UIImagePickerController и переход к некоторой большой фотографии, хранящейся в одном из альбомов.
Исправлено сохранением состояния в методе didReceiveMemoryWarning и загрузкой из состояния в методе viewDidLoad. Одно предостережение: не забудьте очистить файл с сохранением состояния в правильном месте для вашего приложения. Для меня это оставляло соответствующий UIViewController при нормальных обстоятельствах.

4
ответ дан 29 November 2019 в 05:03
поделиться