2

私は、iOS 6 で広範囲にテストされ、うまく動作するアプリを持っていますが、iOS 7 ではほとんどの場合 (ただし 100% ではありません) Thread 1: EXC_BAD_ACCESS、主にエラーが発生してクラッシュし、追跡する必要はほとんどありません。私はその所在を全く知りません。私のコードには、iOS のコア メソッドと互換性がないものがあると思います。

私が特定できる最善の方法は、コードの次の部分にコメントすると、すべてがうまく動作することです。

UIGraphicsBeginImageContext(coverView.bounds.size);
[coverView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *coverImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[UIImageJPEGRepresentation(coverImage, 0.8f) writeToFile:coverFilePath atomically:YES];

//Create thumbnail of cover image
CGSize size = CGSizeMake(116.0f, 152.0f);
UIGraphicsBeginImageContext(size);
[coverImage drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)];
coverImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[UIImageJPEGRepresentation(coverImage, 0.8f) writeToFile:coverThumbnailFilePath atomically:YES];

次にデバッグする場所を教えてもらえますか? 同じアプリが iOS 6 で素晴らしく動作し、このバグは iOS 7 に非常に固有のものであることに注意してください。

EDIT:ゾンビスタックトレースが添付されています:私はこれまであまり利用できませんでしたが、専門家の目には役立つかもしれません:)

ここに画像の説明を入力

前もって感謝します、

ニキル

4

3 に答える 3

0

自動レイアウトの問題(私の問題)により、iOS7で同様の問題がいくつか発生しました。サイズが存在し、有効であることを確認してください。たとえば、サイズが 0,0 の場合、有効なグラフィックス コンテキストを作成できません。
特定のビューのスクリーンショットを取得するために、UIView のカテゴリとして使用できるメソッドも追加します。iOS6 以下でよく知られているを使用している場合、iOS7 で最初のものよりも-renderInContext:新しいものを使用している場合は、それを使用してもクラッシュする場合は se を使用してください。-drawViewHierarchyInRect::

- (UIImage *) imageByRenderingViewOpaque:(BOOL) yesOrNO {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, yesOrNO, 0);

    if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
        [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
    }
    else {
        [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    }
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultingImage;
}
于 2013-11-11T10:46:41.087 に答える