2011-01-03 39 views
5

Hầu hết thời gian, công cụ chọn hình ảnh của tôi hoạt động hoàn hảo (iOS 4.2.1). Tuy nhiên, nếu tôi cuộn rất nhanh lên xuống khoảng 4-6 lần thông qua cuộn máy ảnh của tôi khoảng 300 bức ảnh, tôi sẽ gặp sự cố. Điều này không bao giờ xảy ra với ứng dụng "ảnh" trên cùng một iPhone 3G. Ngoài ra, tôi nhận thấy rằng ứng dụng "ảnh" cổ phiếu cuộn trơn tru hơn nhiều so với bộ chọn hình ảnh của tôi.UIImagePickerController gặp sự cố khi cuộn nhanh, chậm hơn ứng dụng ảnh

Có ai khác nhận thấy hành vi này không? Tôi muốn được quan tâm nếu những người khác có thể thử điều này trong các ứng dụng của riêng họ và xem họ có gặp sự cố hay không. Tôi không nghĩ rằng nó liên quan đến các đối tượng khác đang hogging bộ nhớ trên iPhone của tôi bởi vì nó là một ứng dụng đơn giản, và điều này xảy ra ngay sau khi tôi khởi động ứng dụng. Nó cũng dường như không liên quan đến các tin nhắn được gửi tới các đối tượng được phát hành khác hoặc quá tải các đối tượng khác trong viewdidunload, dựa trên các bản ghi sự cố của tôi và thực tế là trình mô phỏng phản hồi tốt các cảnh báo bộ nhớ mô phỏng. Tôi nghĩ rằng nó có thể là một lỗi trong việc thực hiện nội bộ của UIImagePickerController ...

Đây là cách tôi bắt đầu bộ chọn. Tôi đã thực hiện nhiều cách này (bao gồm thiết lập thuộc tính giữ lại cho UIImagePickerController trong tiêu đề của tôi và phát hành trên dealloc). Điều này dường như là cách tốt nhất (bị treo ít nhất):

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
picker.allowsEditing = YES;   
[self presentModalViewController:picker animated:YES]; 
[picker release]; 

Đây là chủ đề bị rơi (tôi nhận được các loại ngoại lệ khác nhau):

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 
+0

Thử nó nhưng không thể tái sản xuất trên thiết bị iPad hoặc iPhone 4, chạy 4.2.1. Nó có phụ thuộc vào một cuộn ảnh cụ thể không? – mvds

+0

Vâng SEGV_ACCERR gợi ý rằng bạn không có quyền truy cập. Bạn đã thử mà không cần picker.allowsEditing = YES; ? – Erle

+0

Tôi chỉ sao chép vấn đề trên iPhone 3G của mình với bản trình diễn chọn từ http://bit.ly/beeRq và iPod Touch 4 của tôi (ảnh khác), vì vậy tôi không nghĩ đó là mã của tôi nhất thiết hoặc cuộn ảnh. .. Tôi cũng đã thử picker.allowsEditing = NO và cùng một vấn đề. Bạn thực sự phải cuộn bộ chọn như điên càng nhanh càng tốt lên trên cùng của các bức ảnh và quay xuống nhiều lần để làm cho nó sụp đổ. –

Trả lời

10

tôi đã tìm ra cách khắc phục mà bao la cải thiện hiệu suất di chuyển của bộ chọn hình ảnh và loại bỏ hoàn toàn các sự cố. Thật không may, tôi không biết tại sao nó hoạt động.

Trong đoạn mã trên, thay đổi:

picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 

tới:

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
+0

chắc chắn đó là một cách giải quyết, nhưng bằng cách nào đó nó hoạt động :) – konradowy

+0

Có, Nó hoạt động. – Ter

Các vấn đề liên quan