0

私はここで本当に混乱しています。Cocoa Touch で画像処理を行っていますが、すべてうまくいきます。私のアプリは約 120MB のメモリを使用しますが、これは問題なく、Instruments を使用して確認したリークはまったくありません。ただし、画像処理クラスの完全に新しいインスタンスを使用してルーチンを 2 回実行すると (もちろん最初のインスタンスを削除した後)、iPhone 4 でアプリがクラッシュします。iPad 3 でも問題なく動作します。「CGContextDrawImage( )」はクラッシュします。明らかに、スローされた例外などはありません。十分なメモリが利用できるはずなので、これがなぜなのか本当にわかりません。iPad 3 の Instruments で実行すると、 が 120MB を超えるメモリを使用しないことがわかります。

以下のクラッシュの原因となっているコードを見つけてください。繰り返しますが、これを 2 回目に実行したときにのみ、iPhone 4 でのみクラッシュします。

CGImageRef imageref = [image1 CGImage];    
uint8_t *inBitmap1 = (uint8_t *) malloc(vectorsizeI);
CGContextRef context1 = CGBitmapContextCreate(inBitmap1, width, height, bitsPerComponent, bytesPerRowI, colorSpace, kCGImageAlphaNoneSkipFirst);
CGContextDrawImage(context1, CGRectMake(xOffset1, yOffset1, imwidth, imheight), imageref);
4

1 に答える 1

0

十分なメモリがありません。iPadにはあるかもしれませんが、iPhoneにはありません。OS は物理的に利用可能な RAM のごく一部 (0.5 または 1 GB) のみをアプリ用に予約し、その制限を超えると、システムは一見有害なプロセスを終了することに注意してください。アプリのメモリ フィンガープリントを何とか減らしてみてください。120 MB は「問題ありません」。

于 2012-08-11T11:57:46.210 に答える