UIImagePicker Предупреждение о памяти камеры останавливает установку изображения на UIImageView - PullRequest
1 голос
/ 18 марта 2012

У меня есть модал, который отображает UIImagePicker и позволяет пользователю сделать фотографию, которая затем помещается в UIImageView.

Время от времени я получаю предупреждение о памяти «Предупреждение о получении памяти», и UIImageView не назначается. Приложение довольно простое, оно не использует много памяти, и кажется, что большую часть времени это связано с ImagePicker как отдельным процессом. Это происходит только при использовании камеры, и это происходит примерно один раз из пяти.

Об этом много говорят , и в большинстве ответов говорится, что «обработайте предупреждение надлежащим образом»; но я не уверен, что это значит - я просто хочу, чтобы снятая фотография отображалась в ImageView! Кажется, это происходит до того, как я могу что-то с этим сделать в делегате UIImagePicker.

Что я могу сделать, чтобы смягчить это?

Вот делегат didFinishPickingImage:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo {
    //set background for image select button, put image reference somewhere to copy image to documents folder and insert into modular's sentence object.
    //ImagePicker.jpg needs it's border set to 1px black.

    NSLog(@"imagePickerController: selectedimage: %@", selectedImage);

    imageViewBehindPhotoBigButton.clipsToBounds = YES;
    [imageViewBehindPhotoBigButton.layer setBorderColor: [[UIColor blackColor] CGColor]];
    [imageViewBehindPhotoBigButton.layer setBorderWidth: 1.0];
    [imageViewBehindPhotoBigButton setBackgroundColor:[UIColor whiteColor]];

    [imageViewBehindPhotoBigButton setContentMode: UIViewContentModeScaleAspectFill];
    imageViewBehindPhotoBigButton.image = selectedImage;

    imageViewBehindPhotoBigButton.hidden = NO;
    [choosePhotoBigButton setBackgroundImage:nil forState:UIControlStateNormal];

    choosePhotoBarImage.hidden = NO; 
    choosePhotoText.hidden = NO;

    addButton.enabled = YES;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {      
        //because iPad uses a pop up - we don't want to dismiss modals here!
        [imagePopupController dismissPopoverAnimated:YES];

    }else{
        [self dismissModalViewControllerAnimated:YES];    
    }



}

1 Ответ

5 голосов
/ 27 марта 2012

Ответ заключался в реализации потоков при масштабировании / обработке изображения из UIImagePickerController.Здесь действительно хорошая дискуссия, которую я использовал здесь .

...