В большинстве случаев мой выбор изображений работает отлично (iOS 4.2.1). Однако, если я очень быстро прокручиваю вверх и вниз примерно 4-6 раз через свою фотопленку из примерно 300 фотографий, я получаю сбой. Этого никогда не происходит с приложением «фото» на том же iPhone 3G. Кроме того, я заметил, что приложение для стандартных "фотографий" прокручивает гораздо более плавно, чем мой инструмент выбора изображений.
Кто-нибудь еще заметил такое поведение? Мне было бы интересно, могут ли другие попробовать это в своих собственных приложениях и посмотреть, не вылетят ли они. Я не думаю, что это связано с другими объектами, занимающими память на моем iPhone, потому что это простое приложение, и это происходит сразу после запуска приложения. Это также не похоже на сообщения, отправленные другим выпущенным объектам или чрезмерное освобождение других объектов в viewdidunload, на основе моих журналов сбоев и того факта, что симулятор хорошо реагирует на смоделированные предупреждения памяти. Я думаю, это может быть ошибка во внутренней реализации UIImagePickerController ...
Вот как я запускаю сборщик. Я сделал это несколькими способами (в том числе установил свойство сохранения для UIImagePickerController в моем заголовке и освободил его при освобождении). Кажется, это лучший способ (меньше всего сбоев):
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