【问题标题】:UIImagePickerController Camera Source causing the app to crashUIImagePickerController 相机源导致应用程序崩溃
【发布时间】:2010-07-31 10:07:34
【问题描述】:

当我使用 UIImagePickerControllerSourceTypeCamera 时,我收到“收到内存警告。级别 = 1”。

如果我在进入应用程序后立即访问相机,我会收到“收到内存警告。级别=1”,但是当我在访问应用程序中的所有其他功能后选择相机选项时,应用程序在调试器控制台显示时崩溃

收到内存警告。等级=1
程序接收信号:“EXC_BAD_ACCESS”。

为什么会这样?我在构建和分析时没有收到任何内存泄漏通知。

 if(actionSheet.tag == 1){
      addButton.enabled = YES;
      UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease];
      picker.delegate = self;

      if (buttonIndex == 0)
      {

         NSLog(@"selecting camera"); 
         picker.sourceType = UIImagePickerControllerSourceTypeCamera;

         [self presentModalViewController:picker animated:YES];  
      }
      else if (buttonIndex == 1){

          NSLog(@"choosing album");
          picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
          [self presentModalViewController:picker animated:YES];
      }
      else
      {
          //NSLog(@"cancel");
      }

  }

【问题讨论】:

    标签: iphone camera uiimagepickercontroller


    【解决方案1】:

    EXC_BAD_ACCESS 通常与泄漏相反:过度释放的对象。保留计数已降至 0 的对象,但您仍然在某处持有指向它的指针。一旦访问此指针,您可能会收到 EXC_BAD_ACCESS 或其他奇怪的行为。

    还有其他可能性。这只是意味着您尝试访问不属于您的内存。

    在您的情况下,这不一定与 UIImagePickerController 有关。选择器的呈现只会导致发布内存警告,并且作为对该警告的反应,您的应用程序会在不同的地方释放内存。我的猜测是,这些对象中至少有一个之前已经被释放过,现在是一个悬空指针。

    要调试这个,你应该尝试 NSZombieEnabled。有关查找此类错误的更多帮助,请参阅此问题:EXC_BAD_ACCESS signal received

    P.S.:你应该在搜索 EXC_BAD_ACCESS 时找到它

    【讨论】:

    • 我确实使用了使用仪器的僵尸功能,也使用了 NSZOmbieEnabled。它没有通知我。更具体地说,我有两个不同的视图控制器,一个视图控制器具有 uiimagepicker,另一个具有“文本”。我还注意到,只有在从“文本”视图控制器切换回 UIImagepicker 视图控制器后,我才会收到 EXC_BAD_ACCESS 信号。当我从 UIImagepicker 视图控制器开始时,我没有收到错误的访问信号。
    • 那么它可能不是一个过度释放的对象。您是否在任何地方分配任何内存?您可以在收到信号的行周围发布堆栈跟踪和代码吗?
    【解决方案2】:

    这是因为 UIImagePicker 触发了您的 ViewDidUnload。 这样所有的实例都变成了僵尸。 因此,处理这个问题的方向是 “Why UIImagePicker”触发了ViewDidUnload。

    我也有同样的问题,目前还没有找到解决办法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多