У меня есть приложение, которое должно сделать снимок, а затем показать его пользователю. Я открыл камеру, чтобы позволить пользователю сделать снимок, используя следующий код:
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType =
    UIImagePickerControllerSourceTypeCamera;
    imagePicker.mediaTypes = @[(NSString *) kUTTypeImage];
    imagePicker.allowsEditing = NO;
    imagePicker.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentViewController:imagePicker animated:YES completion:nil];
} else {
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle: @"Camera failed to open"
                          message: @"Camera is not available"
                          delegate: nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
    [alert show];
}
Это представляет вид камеры, чтобы пользователь мог сделать снимок. Я реализовал методы для обработки событий отмены и завершения следующим образом:
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [self dismissViewControllerAnimated:YES completion:nil];
    UIImage * image = [info objectForKey:UIImagePickerControllerEditedImage];
    [photoView setImage:image];
    [photoView setNeedsDisplay];
}
Проблема в том, что после прохождения последней функции изображение равно нулю. Сначала уволитьViewControllerAnimated был в конце функции, но в этом сообщении SO ответ объясняет, что ОтклонитьViewControllerAnimated должен быть вызван первым, а средство выбора должно быть отпущено до получения изображения из информации. Я попытался поместить отклонение ViewControllerAnimated вверху, но, поскольку я использую ARC, я не могу отпустить средство выбора.
Как я могу получить изображение из информации?
                                                                    
                                                                    
                                                                    
imagePicker.allowsEditing = NO;нельзя редактировать, поэтому необходимо проверять только исходное изображение. 10.12.2013