我正在使用UIImagePickerController从iphone库加载保存的照片。 但当我向上或向下滚动图像时,我的应用程序崩溃..
我收到以下错误:
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
在抛出'NSException'的实例后
提前致谢。
答案 0 :(得分:5)
我遇到了同样的问题。我试过他先在这里回答:UIImagePickerController crashes on rapid scrolling, slower than photos app
替换
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
通过
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
它现在就像一个魅力。
答案 1 :(得分:3)
打开releaseSegmentCache
的{{1}}方法。您将找到与此类似的代码:
PLImageTable
但是在枚举它们时不允许更改数组。所以你必须找到另一种解决方案。您可以保存应该在另一个数组中删除的所有对象,然后在完成枚举后删除所有这些对象。像这样举例如:
for (id object in array) {
// do something with object
if ([object meetsCondition:@"Foo"]) {
[array removeObject:object];
}
}
答案 2 :(得分:0)
寻找一个for循环,用于添加或删除任何迭代的对象。可能在[PLImageTable releaseSegmentCache]
。例如:
for (NSString *string in stringsArray) {
[stringsArray removeObject:string];
}