Сбой UIImagePicker после выбора - PullRequest
0 голосов
/ 23 декабря 2011

Я использую ELCImagePickerController , поэтому я могу выбрать несколько фотографий и импортировать их. Это работает нормально, когда я выбираю несколько фотографий, но если я выбираю около 25, я получаю сбой. Вот код, который запускается после того, как я нажал «Готово» при выборе фотографий:

-(void)selectedAssets:(NSArray*)_assets {
    NSMutableArray *returnArray = [[NSMutableArray alloc] init];
    int count=0;
    for(ALAsset *asset in _assets) {
        NSMutableDictionary *workingDictionary = [[NSMutableDictionary alloc] init];
        [workingDictionary setObject:[asset valueForProperty:ALAssetPropertyType] forKey:@"UIImagePickerControllerMediaType"];

        UIImage *image=[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]];
        [workingDictionary setObject:image forKey:@"UIImagePickerControllerOriginalImage"];
        [workingDictionary setObject:[[asset valueForProperty:ALAssetPropertyURLs] valueForKey:[[[asset valueForProperty:ALAssetPropertyURLs] allKeys] objectAtIndex:0]] forKey:@"UIImagePickerControllerReferenceURL"];

        NSLog(@"%i", count);
        count++;

        [returnArray addObject:workingDictionary];
    }
    [self popToRootViewControllerAnimated:NO];
    [[self parentViewController] dismissModalViewControllerAnimated:YES];

    if([delegate respondsToSelector:@selector(elcImagePickerController:didFinishPickingMediaWithInfo:)]) {
        [delegate performSelector:@selector(elcImagePickerController:didFinishPickingMediaWithInfo:) withObject:self withObject:[NSArray arrayWithArray:returnArray]];
    }
}

Я выбрал 80 фотографий, и оператор NSLog отображает до 45, но затем он просто падает без сообщения, просто (gdb).

Изображения, которые я выбираю, являются изображениями iPhone 4, снятыми задней камерой. Я попытался изменить размеры изображений при импорте, но даже тогда приложение все еще падает. Есть идеи, в чем может быть проблема?

1 Ответ

2 голосов
/ 23 декабря 2011

Я собираюсь поставить это как ответ, если вы не возражаете.

Существует несколько решений этой проблемы. Во-первых, вы можете ограничить выбор пользователем более 5 фотографий. Во-вторых, вы можете изменить размер своих изображений и сделать их действительно маленькими, прежде чем помещать их в массив или что-то в этом роде. Или, если вам нужны все в оригинальном размере, вы можете скопировать их при выделении в каталог ~ / tmp и вместо этого сохранить ссылки на них в NSArray, чтобы вы могли загружать их динамически с диска вместо того, чтобы хранить их в памяти .

Извините, если это не помогает, так как я не знаю вашей конечной цели в использовании такого количества изображений одновременно.

...