2

CGBitmapContextCreate メソッドを呼び出すと、アプリがクラッシュし、EXC_BAD_ACCESS が表示されます。

これは、iPhone 6+ でのみ発生します (デバイス上で実行している場合)。

CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);

はい、環境変数として NSZombieEnabled を YES に設定しようとしましたが、EXC_BAD_ACCESS の際にデバッガー コンソールに何も表示されません。

4

1 に答える 1

0

アライメントに関係なくストレージバッファーを割り当てていたため、この正確な関数でクラッシュしていました。たとえば、次のようになります。

baseAddress = malloc (width * height * 4);

今、私は使用しています...

baseAddress = new u32 [width * height];

...4バイトのアライメントを強制し、EXC_BAD_ACCESSを修正しました。あなたのように少しではなく、kCGBitmapByteOrder32Bigも使用していることに注意してください。関連する場合と関連しない場合があります。

ただし、iPhone 6 と iPad Mini では奇妙なピクセル データが返されます。

( iOS 8 / iPhone 6 でのピクセル データの取得を参照してください)。

于 2015-01-31T17:43:13.220 に答える