2013-08-21 3 views
2

Когда я открываю камеру в своем приложении, она отлично работает, но когда я перемещаюсь в своем приложении и возвращаюсь к просмотру камеры, и снова пытаюсь открыть камеру в iPad, приложение аварийно отключится и даст мне «Предупреждение о получении памяти». приложение работает отлично в iPhone, и эти проблемы только приходят в iPad.Предупреждение о наличии памяти. с ipad-камерой

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

это мой код для камеры

if ([UIImagePickerController isSourceTypeAvailable: 
     UIImagePickerControllerSourceTypeCamera]) 
    { 
     imagePicker=[[UIImagePickerController alloc] init]; 
     imagePicker.delegate = self; 
     imagePicker.sourceType =UIImagePickerControllerSourceTypeCamera; 
     imagePicker.allowsEditing = NO; 
     //imagePicker.modalPresentationStyle = UIModalPresentationFullScreen; 

     [self presentViewController:imagePicker animated:YES completion:nil]; 
    } 

Это где я получаю мое изображение

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

     [picker dismissViewControllerAnimated:YES completion:nil]; 
     image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

     [array addObject:image]; 
     image=nil; 

} 

и я также попытаться использовать popOverview для камеры, но она также не работает.

В моем представленииController, где я звоню UIImagePickerController Я использовал 5 анимаций, прежде чем я вызывал анимацию в viewWillAppear, и приложение терпело крах, поэтому я изменил анимацию, обращаясь к ViewDidLoad, и камера начала работать, но только до тех пор, пока я не перейду к моему последнему просматривать и снова открывать камеру.

+0

Проблема не в фотоаппарате. Вы, вероятно, не отбрасываете использованные и ненужные объекты должным образом. – Desdenova

+0

Используете ли вы камеру IOS по умолчанию или подключаете камеру к предварительному уровню или, например, обрабатываете ли вы каждый видео-буфер с помощью OpenGL или CoreImage? – Markus

+0

@Desdenova Я использую ARC сейчас, так как я могу освободить объекты. – micky

ответ

2

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

3

У меня такая же проблема, поэтому мне это нравится.

Установить UIImagePickerController как статический, как этот.

static UIImagePickerController *imagePicker; 

Когда вы получаете изображение в этом деле.

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    @autoreleasepool {// to release memory 

    // Probelm is you image size. 
    // When you get this image it is vary large. 
    // And i hope you are creating multiple copy's of this image. 

    // when you get image in 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

    // In last set image as nil 
    image = nil; 
    } 
} 

Надеется, что это будет решать вам проблему .. :-)

+0

xcode показывает ошибку при статическом «Имя типа не позволяет указать класс хранения» – micky

+1

Следуйте по этому адресу http://stackoverflow.com/questions/14960249/objective-c-declaration-error-please-explain -> в вызове ведьмы вы объявляете значение статической переменной в .h или .m. Если он находится в .h, то удалите из него и обновите файл .m. – Ayaz

0

Пожалуйста, попробуйте ниже code.try UIImagePickerController с в

пироге
if([UIImagePickerContrller isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{ 
     UIImagePickerController *controller = [[UIImagePickerController alloc] init]; 
     controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
     controller.allowsEditing = YES; 
     controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
     controller.delegate = self; 
     UIPopoverController *popController = [[UIPopoverController alloc] initWithContentViewController:controller]; 
     popController.popoverContentSize = CGSizeMake(350.0f, 500); 
     [popController presentPopoverFromRect: self.button.frame inView:self.button.superview 
        permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES] 
} 
+0

. Я уже упоминал в своем вопросе, что popover не решил мою проблему. и второй в вашем коде вы дали UIImagePickerControllerSourceTypePhotoLibrary как тип источника? – micky