私ははるかに複雑なプロジェクトの簡単なテストを試みていますが、以下のコードがクラッシュしてEXC_BAD_ACCESSエラーが発生する理由について困惑していますか?
これはUIViewから呼び出されます。
- (void)testing {
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ball.png" ofType:nil];
CGImageRef imageRef = [[[UIImage alloc]initWithContentsOfFile:imagePath]CGImage];
// CGImageRetain(imageRef);
UIImage *newImage = [[UIImage alloc]initWithCGImage:imageRef];
UIImageView *iv = [[UIImageView alloc]initWithImage:newImage];
[self addSubview:iv];
}
私の推測では、CGImageRefは保持されていませんが、CGImageRetain(imageRef);を追加しています。違いはありません。
また、このプロジェクトではARCがオンになっていることにも注意してください。
編集
もう少しテストを行ったところ、上記のコードのみを含む2つの基本的なプロジェクトを作成したため、これがARCに直接関係していることがわかりました。最初のARCはオフになっていて、完全に機能しました。次のARCがオンになり、BAMが同じエラーでクラッシュします。興味深いのは、クラッシュする前にプロジェクトを初めて実行したときにのみ、実際のログエラーが発生したことです。
Error: ImageIO: ImageProviderCopyImageBlockSetCallback 'ImageProviderCopyImageBlockSetCallback' header is not a CFDictionary...