В большинстве случаев мой фотоаппарат отлично работает (iOS 4.2.1). Однако, если я прокручиваю очень быстро вверх и вниз примерно 4-6 раз через мой фотокамер из примерно 300 фотографий, я получаю сбой. Это никогда не случается с приложением «фотографии» на тех же iPhone 3Gs. Кроме того, я замечаю, что приложение «фотографии» на складе прокручивается намного гладко, чем мой подборщик изображений.UIImagePickerController сбой при быстрой прокрутке, медленнее, чем приложение для фотографий
Кто-нибудь еще заметил это поведение? Мне было бы интересно, если другие могут попытаться это сделать в своих приложениях и посмотреть, сбой их. Я не думаю, что это связано с другими объектами, поддерживающими память на моем iPhone, потому что это простое приложение, и это происходит сразу после запуска приложения. Это также, похоже, не связано с сообщениями, отправленными на другие выпущенные объекты или перевыпусканием других объектов в viewdidunload, в зависимости от моих журналов сбоев и того факта, что имитатор хорошо реагирует на симулированные предупреждения памяти. Я думаю, что это может быть ошибкой во внутренней реализации UIImagePickerController ...
Вот как я начинаю сборщик. Я сделал это несколько способов (включая установку свойства сохранения для UIImagePickerController в моем заголовке и освобождение на dealloc). Это, кажется, лучший способ (аварии как минимум):
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
picker.allowsEditing = YES;
[self presentModalViewController:picker animated:YES];
[picker release];
Это разбившийся нить (я получаю различные типы исключений):
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0xfffffffff4faafa4
Crashed Thread: 8
...
Thread 8 Crashed:
0 CoreFoundation 0x000494ea -[__NSArrayM replaceObjectAtIndex:withObject:] + 98
1 PhotoLibrary 0x00008e0f -[PLImageTable _segmentAtIndex:] + 527
2 PhotoLibrary 0x00008a21 -[PLImageTable _mappedImageDataAtIndex:] + 221
3 PhotoLibrary 0x0000893f -[PLImageTable dataForEntryAtIndex:] + 15
4 PhotoLibrary 0x000087e7 PLThumbnailManagerImageDataAtIndex + 35
5 PhotoLibrary 0x00008413 -[PLThumbnailManager _dataForPhoto:format:width:height:bytesPerRow:dataWidth:dataHeight:imageDataOffset:imageDataFormat:preheat:] + 299
6 PhotoLibrary 0x000b6c13 __-[PLThumbnailManager preheatImageDataForImages:withFormat:]_block_invoke_1 + 159
7 libSystem.B.dylib 0x000d6680 _dispatch_call_block_and_release + 20
8 libSystem.B.dylib 0x000d6ba0 _dispatch_worker_thread2 + 128
9 libSystem.B.dylib 0x0007b251 _pthread_wqthread + 265
Пробовали, но не может воспроизвести на IPad или iPhone 4, работает 4.2.1. Это зависит от конкретного броска? – mvds
Ну SEGV_ACCERR подсказывает, что у вас нет прав доступа. Вы пробовали без picker.allowsEditing = YES; ? – Erle
Я только что воспроизвел проблему на своих iPhone 3Gs с демонстрацией сборщика от http://bit.ly/beeRq и моего iPod Touch 4-го поколения (разные фотографии), поэтому я не думаю, что это мой код обязательно или фото-бросок. .. Я также просто попробовал picker.allowsEditing = NO и та же проблема. Вам действительно нужно прокрутить сборщика, как сумасшедший, как можно быстрее, вплоть до верхней части фотографий и несколько раз отступить, чтобы он упал. –