我有一个使用UIImagePickerConteroller拍摄照片的原生Objective-C应用程序。一旦UIImagePickerController didFinishPickingMedia委托函数返回图像,我将图像存储在我的app文档目录中,并将图像位置存储在一个数组中,以便我可以在我的应用程序库视图中显示它。
不经常,但在一个月内一次或两次我在用户完成拍照后收到AppSee / Fabric崩溃跟踪器中的崩溃日志。
在Appsee视频中,我可以看到崩溃的确切位置。崩溃日志说NSArray在枚举时发生了变异(检查附图)。现在我在枚举时没有对我的照片mutableArray执行任何addObject或removeObject功能。在阅读数据之前,我正在对我的照片数组进行可变复制,以显示我的照片库。因此在枚举时没有突变的可能性。
根据崩溃日志,似乎问题与UIImagePickerController有关。因为日志说 -
- [CAMPriorityNotificationCenter _postNotification:forEntries:]
- [CAMPriorityNotificationCenter _notificationReceiver:]
并且' CAMPriorityNotification'由UIImagePickerController类使用。但不确定UIImagePickerController是否抛出错误并导致崩溃。我在didFinishPickingMedia函数中放了@try @catch来查找崩溃问题。但@try @catch并没有抛出错误。所以这让我更加困惑。
拍照后有没有人遇到类似的碰撞问题?任何建议,我将不胜感激。
答案 0 :(得分:2)
这是一个苹果问题。 Apple回复了我的错误报告。以下是他们的回复 -
“工程已确定您的错误报告(31369562)与另一个问题(29753773)重复,并将被关闭。 原始错误报告的打开或关闭状态您的问题是重复的,显示在错误报告用户界面的黄色“XXXXXXXX的重复”部分中。此部分显示在右栏的错误详细信息视图的顶部,位于错误编号,标题,州,产品和等级的下方。“
答案 1 :(得分:0)
在2种情况下,尝试将对UIImagePickerController *的引用设置为nil:
,当您进入后台或从屏幕返回并通过属性链接到UIImagePickerController时。我是在调用viewDidDissapear中做到的:
- (void)viewDidDissapear:(BOOL)animated {
[super viewDidDissapear: animated];
self.photoPicker = nil; // that property of type UIImagePickerController*
}
我在CAMPriorityNotificationCenter中发生了很多崩溃,都是在后台。经过上述2次更改后-没有出现崩溃。
答案 2 :(得分:-1)
您的代码似乎可以访问集合并同时对其进行修改。