2009-12-02 2 views
14

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

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

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

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

ответ

9

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

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

+0

Правильно, поэтому, если я правильно понимаю, мне не нужно скрывать свое представление, пока отображается UIImagePicker, поскольку контроллер представления делает это уже, и мне разрешено получать предупреждение о памяти после того, как изображение будет снято. до тех пор, пока я не делаю ничего экзотического (например, показывая изображение с полным разрешением?) –

+0

, если ваше приложение использует «слишком много» памяти и не освобождает «достаточно» от него, когда вы получаете предупреждение о низкой памяти, ОС может потенциально убить приложение. нет точных значений, насколько я знаю, для «достаточно» и «слишком много». –

+0

Из этого ответа (http: // stackoverflow.com/questions/457568/iphone-development-memory-limit-for-iphone-application/457730 # 457730) кажется, что вы получаете предупреждение при использовании около 22 МБ. Хотя Apple официально не подтвердила это. –

1

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

+1

Привет, изображения I Отображение m намного меньше, и я получаю предупреждение о памяти после того, как камера делает снимок, и прежде чем у меня появится возможность изменить размер изображения, я не уверен, что это проблема. –

+0

Да, это звучит так, что у вас могут быть другие утечки памяти где-то здесь – Daniel

+0

, поэтому вы делаете снимок и даже перед тем, как сможете выбрать его, чтобы он сбежал? – Daniel

45

Для всех людей, которые все еще ищут фактический ответ, а не смутное утверждение, посмотрите здесь. Я заметил, что есть сотни ответов, таких как «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]; 
} 
+0

Это действительно хорошая идея. Когда я отлаживаю, у меня есть изображения правильно, но у моего ImageView это не было. Но, отбросив модальный взгляд на раннем этапе, работайте как шарм. Благодаря! 1 up! – karim

+0

Так почему же это работает? –

Смежные вопросы