2012-05-26 4 views
0

Привет, я прошел через много вопросов о SO this too, но это не помогает мне для ios 5.1.1. Когда я беру изображение за первые 2 раза его работает нормально, то N3rd время приложение показывает предупреждение памяти и получает crashed.Here мой код:Сбой приложения после отображения предупреждения о памяти в ios 5.1.1 только при съемке с камеры

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
[picker dismissModalViewControllerAnimated:YES]; 

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    if (image) { 

    if ([appdel.arrImageData count]==0) { 
     count=0; 

    } 
    count++; 
    [appdel.arrImageData addObject:[image copy]]; 
}} 

Любая помощь будет оценена.

ответ

3

Каждый раз, когда вы делаете снимок, вы сохраняете его копию в файле arrImageData и заполняете память до тех пор, пока iOS не убьет вас, поскольку вы берете слишком много памяти. Передумайте свой дизайн, чтобы сохранить только одно изображение в памяти. Если вам нужны все фотографии по какой-либо причине, сохраните их в каталоге документов или кешках и очистите память, прежде чем делать другое изображение.

+0

Нет, я не могу этого сделать, потому что я должен показать свои добавленные изображения в прокрутке в той же странице – Dhara

+0

Хорошо, вы не можете показать превью изображений, которые используют значительно меньше памяти. Прямо сейчас у вас есть несколько изображений с высоким разрешением в памяти, и вам, вероятно, не нужно высокое разрешение для вашего scrollview – iTukker

+0

да, я могу наклеить новый код на pastebin.com/yXbc1Mqx – Dhara

2

я Исправленный код проверить его, это поможет или нет

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 


    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
     if (image) { 

     if ([appdel.arrImageData count]==0) { 
      count=0; 

     } 
     count++; 
     [appdel.arrImageData addObject:[image copy]]; 
    } 

[picker dismissModalViewControllerAnimated:YES]; 
[picker release]; 
} 
+0

эй это не работает. в любом случае спасибо за ваши усилия. – Dhara

2

Я не вижу, управление памятью вашего ImagePickerController. Но у меня возникла проблема с освобождением моего сборщика сразу после того, как я позвонил в отставку ...

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

ОБНОВЛЕНИЕ: Я согласен с вами. У меня было слишком много проблем, связанных с попыткой заставить pickerController работать для многих версий iOS на нескольких устройствах, начиная с iOS 3 до 5. В результате я пропустил поддержку iOS 3 и начал внедрять собственный код для работы с изображениями и фильмами на основе AV Foundation Programming Guide , AV Foundation Framework Reference.

+0

Я пробовал, что тоже его не работает. – Dhara

+0

Найти другой подход в обновлении – SVGreg

1

Приложение довольно часто получает предупреждение о памяти, когда оно использует UIImagePickerController. Что происходит, когда вы снимаете изображение и повторяете изображение снова и снова, ваша память постоянно увеличивается (если вы неправильно управляете памятью. В моем случае она увеличивала каждые 1,5 МБ). Таким образом, он может работать в первый, второй или третий раз и получать предупреждение о памяти в следующий раз, или он может получить предупреждение о памяти в первый раз, если в фоновом режиме слишком много приложений.

Важно, чтобы вы справились с этим предупреждением о памяти. Как только приложение получает предупреждение о памяти, вызывается viewDidUnload всех активных контроллеров представления, где вы должны освобождать все нежелательные объекты, которые могут быть созданы снова. Таким образом, ваше приложение может рухнуть, потому что вы делаете что-то не так. Короче, нам нужно будет увидеть и ваши файлы .h и .m.

+0

http://pastebin.com/yXbc1Mqx Я вставлял свой код здесь – Dhara

1

here вы можете получить то, что хотите.

В этом коде я просто положил пул autorelease, чтобы освободить память.

Надеюсь, это может вам помочь.

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