1

此代码在 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。

有想法该怎么解决这个吗?

4

1 回答 1

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() 中。

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

于 2013-10-14T19:58:40.647 回答