W większości przypadków mój selektor zdjęć działa idealnie (iOS 4.2.1). Jednakże, jeśli przewijam bardzo szybko w górę iw dół około 4-6 razy w rolce z aparatu około 300 zdjęć, pojawia się awaria. To się nigdy nie zdarza z aplikacją "zdjęcia" na tym samym telefonie iPhone 3G. Ponadto zauważam, że aplikacja "zdjęcia" w magazynie działa dużo płynniej niż mój selektor zdjęć.UIImagePickerController ulega awarii podczas szybkiego przewijania, wolniej niż aplikacja zdjęć
Czy ktoś jeszcze zauważył to zachowanie? Byłbym zainteresowany, gdyby inni mogli spróbować tego w swoich własnych aplikacjach i sprawdzić, czy się zawieszają. Nie sądzę, że jest to związane z innymi obiektami, które zajmują pamięć na moim iPhonie, ponieważ jest to prosta aplikacja i dzieje się to zaraz po uruchomieniu aplikacji. Nie wydaje się również być związany z wiadomościami wysyłanymi do innych zwolnionych obiektów lub przesadnych innych obiektów w viewdidunload, w oparciu o moje logi awarii i fakt, że symulator dobrze reaguje na symulowane ostrzeżenia dotyczące pamięci. Myślę, że może to być błąd w wewnętrznej implementacji UIImagePickerController ...
W ten sposób uruchamiam selektor. Zrobiłem to na wiele sposobów (w tym ustawienie właściwości retain dla UIImagePickerController w moim nagłówku i zwolnienie na dealloc). To wydaje się być najlepszym sposobem (wywala Najmniej):
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
picker.allowsEditing = YES;
[self presentModalViewController:picker animated:YES];
[picker release];
To rozbił gwint (I uzyskać różne rodzaje wyjątków):
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
Próbowaliśmy go, ale nie mógł odtworzyć na iPad lub iPhone 4 z systemem 4.2.1. Czy to zależy od konkretnej rolki zdjęcia? – mvds
Dobrze SEGV_ACCERR podpowiada, że nie masz uprawnień dostępu. Próbowałeś już bez picker.allowsEditing = YES; ? – Erle
Właśnie odtworzyłem problem na moim iPhone 3G z demo próbnika z http://bit.ly/beeRq i mojego iPod Touch 4th gen (różne zdjęcia), więc nie sądzę, że to mój kod koniecznie lub zdjęcie rolki. .. Po prostu próbowałem picker.allowsEditing = NO i ten sam problem. Naprawdę musisz przewijać próbnik jak szalony tak szybko, jak to możliwe, aż do samej góry zdjęcia i cofać się wiele razy, aby spowodować awarię. –