集合< __ NSArrayM:0x170e45d00>被枚举时被突变 - UIImagePickerConteroller didFinishPickingMediaWithInfo

时间:2017-03-29 20:16:31

标签: ios objective-c nsarray uiimagepickercontroller

我有一个使用UIImagePickerConteroller拍摄照片的原生Objective-C应用程序。一旦UIImagePickerController didFinishPickingMedia委托函数返回图像,我将图像存储在我的app文档目录中,并将图像位置存储在一个数组中,以便我可以在我的应用程序库视图中显示它。

不经常,但在一个月内一次或两次我在用户完成拍照后收到AppSee / Fabric崩溃跟踪器中的崩溃日志。

enter image description here

在Appsee视频中,我可以看到崩溃的确切位置。崩溃日志说NSArray在枚举时发生了变异(检查附图)。现在我在枚举时没有对我的照片mutableArray执行任何addObject或removeObject功能。在阅读数据之前,我正在对我的照片数组进行可变复制,以显示我的照片库。因此在枚举时没有突变的可能性。

根据崩溃日志,似乎问题与UIImagePickerController有关。因为日志说 -

- [CAMPriorityNotificationCenter _postNotification:forEntries:]

- [CAMPriorityNotificationCenter _notificationReceiver:]

并且' CAMPriorityNotification'由UIImagePickerController类使用。但不确定UIImagePickerController是否抛出错误并导致崩溃。我在didFinishPickingMedia函数中放了@try @catch来查找崩溃问题。但@try @catch并没有抛出错误。所以这让我更加困惑。

拍照后有没有人遇到类似的碰撞问题?任何建议,我将不胜感激。

3 个答案:

答案 0 :(得分:2)

这是一个苹果问题。 Apple回复了我的错误报告。以下是他们的回复 -

“工程已确定您的错误报告(31369562)与另一个问题(29753773)重复,并将被关闭。 原始错误报告的打开或关闭状态您的问题是重复的,显示在错误报告用户界面的黄色“XXXXXXXX的重复”部分中。此部分显示在右栏的错误详细信息视图的顶部,位于错误编号,标题,州,产品和等级的下方。“

答案 1 :(得分:0)

在2种情况下,尝试将对UIImagePickerController *的引用设置为nil:

  1. 从控制器收到图像时-功能正常 “ didFinishPickingImage”
  2. ,当您进入后台或从屏幕返回并通过属性链接到UIImagePickerController时。我是在调用viewDidDissapear中做到的:

    - (void)viewDidDissapear:(BOOL)animated {
     
    
      [super viewDidDissapear: animated];
  
    
      self.photoPicker = nil; // that property of type UIImagePickerController*
 
    

    }

    我在CAMPriorityNotificationCenter中发生了很多崩溃,都是在后台。经过上述2次更改后-没有出现崩溃。

答案 2 :(得分:-1)

您的代码似乎可以访问集合并同时对其进行修改。