2011-04-21 6 views
2

아이폰 라이브러리에서 저장된 사진을로드하려면 UIImagePickerController를 사용하고 있습니다. 내가캐치되지 않은 예외로 인해 앱 종료 'NSGenericException

.. 위 또는 내 응용 프로그램 충돌 아래 이미지를 스크롤 할 때 나는 오류 다음 얻을 하지만 : 사전에 'NSException'

감사의 인스턴스를 던지는 후 alled

2011-04-21 14:26:33.357 Exchange[72452:5803] Running conversion tracker in a background thread. 
2011-04-21 14:26:40.449 Exchange[72452:207] upload from gallery event here 
2011-04-21 14:26:42.277 Exchange[72452:207] *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x6dc35a0> was mutated while being enumerated.(
    "<PLImageTableSegment: 0x6937f80>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<PLImageTableSegment: 0x6937f80>", 
    "<PLImageTableSegment: 0x6937f80>", 
    "<PLImageTableSegment: 0x6937f80>", 
    "<PLImageTableSegment: 0x6937f80>", 
    "<PLImageTableSegment: 0x6937f80>", 
    "<PLImageTableSegment: 0x6937f80>", 
    "<PLImageTableSegment: 0x6937f80>" 
)' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x015645a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x016b8313 objc_exception_throw + 44 
    2 CoreFoundation      0x01564069 __NSFastEnumerationMutationHandler + 377 
    3 CoreFoundation      0x0155d838 -[__NSArrayM dealloc] + 152 
    4 PhotoLibrary      0x0608d696 +[PLImageTable releaseSegmentCache] + 37 
    5 PhotoLibrary      0x0606cf5a -[PLPhotoLibrary dealloc] + 183 
    6 CoreFoundation      0x0147b04c CFRelease + 92 
    7 CoreFoundation      0x014a018d _CFAutoreleasePoolPop + 237 
    8 Foundation       0x000e33eb -[NSAutoreleasePool release] + 167 
    9 UIKit        0x003943ee _UIApplicationHandleEvent + 8792 
    10 GraphicsServices     0x01d9c992 PurpleEventCallback + 1550 
    11 CoreFoundation      0x01545944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    12 CoreFoundation      0x014a5cf7 __CFRunLoopDoSource1 + 215 
    13 CoreFoundation      0x014a2f83 __CFRunLoopRun + 979 
    14 CoreFoundation      0x014a2840 CFRunLoopRunSpecific + 208 
    15 CoreFoundation      0x014a2761 CFRunLoopRunInMode + 97 
    16 GraphicsServices     0x01d9b1c4 GSEventRunModal + 217 
    17 GraphicsServices     0x01d9b289 GSEventRun + 115 
    18 UIKit        0x00397c93 UIApplicationMain + 1160 
    19 ArmaniExchange      0x000022a4 main + 102 
    20 ArmaniExchange      0x00002235 start + 53 
    21 ???         0x00000001 0x0 + 1 
) 
terminate c 

.

+1

아마도 배열을 반복하면서 배열을 변경하려고합니다. 루프를 반복하는 배열에서 객체를 제거하는 것과 같은 것입니다. –

답변

3

PLImageTablereleaseSegmentCache 방법을 연다. 다음과 유사한 코드를 찾을 수 있습니다 :

for (id object in array) { 
    // do something with object 
    if ([object meetsCondition:@"Foo"]) { 
     [array removeObject:object]; 
    } 
} 

그러나 열거 할 때 배열을 변경할 수 없습니다. 그래서 다른 해결책을 찾아야합니다. 다른 배열에서 제거해야하는 모든 개체를 저장 한 다음 열거 된 모든 개체를 삭제할 수 있습니다. 예를 들면 다음과 같습니다.

NSMutableArray *objectsToDelete = [NSMutableArray array]; 
for (id object in array) { 
    // do something with object 
    if ([object meetsCondition:@"Foo"]) { 
     [objectsToDelete addObject:object]; 
    } 
} 
[array removeObjectsInArray:objectsToDelete]; 
0

반복되는 모든 항목에서 개체를 추가하거나 제거하는 for 루프를 찾습니다. 아마 [PLImageTable releaseSegmentCache]에 있습니다. 예를 들어

for (NSString *string in stringsArray) { 
    [stringsArray removeObject:string]; 
} 
5

같은 문제가있었습니다. UIImagePickerController crashes on rapid scrolling, slower than photos app

그것은 지금은 매력처럼 작동

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

에 의해

picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 

교체 : 나는 그가 여기에 먼저 대답했습니다.

+0

나에게 많은 시간을 절약 해주었습니다 ... –

관련 문제