我有一個方法,需要解析通過一堆大PNG圖像逐像素(每個PNGs是600x600像素)。它似乎在模擬器上效果很好,但在設備(iPad)上,我在某些內部存儲器複製功能中獲得了EXC_BAD_ACCESS。看起來大小是罪魁禍首,因爲如果我在較小的圖像上嘗試它,一切似乎都奏效。下面的方法是記憶相關的肉類。CGBitmapContextCreate在iPhone/iPad上
+ (CGRect) getAlphaBoundsForUImage: (UIImage*) image
{
CGImageRef imageRef = [image CGImage];
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = malloc(height * width * 4);
memset(rawData,0,height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);
/* non-memory related stuff */
free(rawData);
當我在一堆圖像上運行它時,它運行12次然後在模擬器上運行時沒有問題。你們有什麼想法嗎?