Предупреждение памяти после использования UIImagePicker один раз

Я упомянул об этой очень хорошей ссылке: https://stackoverflow.com/info/1282830/uiimagepickercontroller-uiimage-memory-and-more, но у меня возникли очень серьезные проблемы. После того, как я сделаю снимок, я получаю предупреждение о памяти. Это для первой фотографии, которую я беру, а не второй или третьей.

Мне было интересно, не потому ли, потому что у меня есть несколько небольших jpegs, загруженных из каталога приложений, в прокрутки. Единственное решение, о котором я могу думать, - это выгрузить все в моем основном представлении, пока UIImagePicker активен, и перезагрузите все снова после этого, но я не уверен, что правильное решение, и я не уверен, как это сделать.

Использует ли UIImagePicker столько памяти? Я даже не добрался до обработки или отображения изображения, которое он еще не получил. Я получаю предупреждение о памяти, даже если я отбрасываю изображение.

Любая помощь была оценена.

Ответ 1

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

В частности, вам нужно понять, что действие UIViewController по умолчанию заключается в том, чтобы выгрузить его представления, если они не видны, и они не будут видны, если отображается полноэкранный выборщик изображений.

Ответ 2

Для всех людей, которые все еще ищут фактический ответ, а не неопределенное утверждение, посмотрите здесь. Я заметил, что есть сотни ответов, таких как "Handle your memory", но это ничего не отвечает. Надеюсь, это поможет кому-то еще...

Измените следующие

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [imageView setImage:image];
    [self dismissModalViewControllerAnimated:YES];
}

Для того, чтобы ваш модальный вид отклонялся перед настройкой изображения...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [self dismissModalViewControllerAnimated:YES];
    [imageView setImage:image];
}

Ответ 3

Скорее всего, вы используете uneditted images, и они возвращаются с полноразмерным размером 1400x1300, который огромен и сбой вашего приложения, я предлагаю изменить размер изображений на родное разрешение 320x480 на iphone, должно исправить вашу проблему.