Память предупреждение после использования UIImagePicker один раз - PullRequest
14 голосов
/ 02 декабря 2009

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

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

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

Любая помощь приветствуется.

Ответы [ 3 ]

45 голосов
/ 06 мая 2011

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

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

- (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];
}
9 голосов
/ 02 декабря 2009

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

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

1 голос
/ 02 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...