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;
}

}

2 つの別々のクラスで同じコードを使用します。どちらも機能しません。カメラは開かず、最後の行 (newMedia = YES) が実行されたときにクラッシュするだけです。SO と Google のすべてのエントリを調べましたが、このクラッシュに似たものは何も見つかりませんでした。どうやら iOS 6 で動作したようですが、iOS7 に移行したため、現在はテストできません。

これを修正する方法についてのアイデアはありますか?

4

1 に答える 1

0

*EXC_BAD_ACCESS はスローされる例外ではありません。それはハードクラッシュです。Spokane-dude は、実際のクラッシュのバックトレースを投稿する必要があります。*


iOS7 の iPad で同じアプリを実行すると、デバッガー以外では問題なく動作します

うまくいかないに違いない。機能しているように見えますが、まだ何かが大きく間違っていて、ユーザー データが破損している可能性があります。私は優先順位を考え出すようにします。

クラッシュの詳細を投稿します。


OK -- クラッシュはここにあります:

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 です。

描画メソッドで失敗したアサートであることを考えると、かなり絞り込む必要があります。

于 2013-10-14T19:58:40.647 に答える