在iOS7上运行的相机无法打开然后崩溃(EXC_BAD_ACCESS)

时间:2013-10-14 16:50:55

标签: ios objective-c uiimagepickercontroller

此代码在iOS6.2下运行;安装了iOS7,现在崩溃了:

- (IBAction)bOpenCamera:(UIButton *)sender {

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])  {

        customerCameraFlag = YES;  //  indicator so text fields are not cleared

        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = (id)self;
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil];
        imagePicker.allowsEditing = NO;
        [self presentViewController:imagePicker animated:YES completion:nil];
        newMedia = YES;
}

}

我在两个单独的类中使用相同的代码;都没有工作。相机永远不会打开,只是在最后一行(newMedia = YES)执行时崩溃。我查看了SO和Google中的所有条目,发现没有类似于此崩溃的内容。它显然适用于iOS 6,但我现在无法测试它,因为我已经去了iOS7。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

* EXC_BAD_ACCESS不是抛出异常;这是一场艰难的撞车事故。 Spokane-dude应该发布实际崩溃的回溯。*


在iOS7下在iPad上运行相同的应用程序时,在调试程序之外它可以正常运行

我敢打赌它不能正常工作。它似乎只是起作用,但仍然存在严重错误,可能会破坏用户数据。我会弄清楚什么是优先事项。

发布崩溃详情。


好的 - 崩溃就在这里:

Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3b39c350 __pthread_kill + 8
1   libsystem_c.dylib               0x3b31311e pthread_kill + 54
2   libsystem_c.dylib               0x3b34f96e abort + 90
3   REDACTED.APP                    0x0006aa72 0x19000 + 334450
4   Foundation                      0x338a438c -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] + 164
5   Foundation                      0x338a4088 -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] + 132
  • 主线程调度到自身是非常奇怪的,并且表明了最好的并发实现。

但是等等!崩溃实际上是螺纹0:

11  libsystem_c.dylib               0x3b34f96e abort + 90
12  libsystem_c.dylib               0x3b3304cc __assert_rtn + 176
13  REDACTED.APP                        0x0001c3f2 0x19000 + 13298
14  UIKit                           0x34e4bd18 -[UIView(CALayerDelegate) drawLayer:inContext:] + 360
15  QuartzCore                      0x34bfabe0 -[CALayer drawInContext:] + 108

第13帧中的任何内容 - 尝试绘制的某个图层委托 - 是assert()ing。

鉴于它在绘图方法中是一个失败的断言,这应该会大大缩小范围。