我有點奇怪的問題。我使用imageNamed從它創建一個UIImage提取顏色數據,然後將其設置爲另一個類。EXC_BAD_ACCESS在保留的UIImage上調用drawRect
然後從那個類當我做一個drawRect時,我得到一個EXC_BAD_ACCESS時做drawRect。
這裏就是我加載圖像:
UIImage* pImageHM = [UIImage imageNamed:@"Heatmap2.png"];
CGImageRef irHM = [pImageHM CGImage];
CFDataRef drHM = CGDataProviderCopyData(CGImageGetDataProvider(irHM));
R8G8B8A8* pDataHM = (R8G8B8A8*)CFDataGetBytePtr(drHM);
unsigned int colour = 0;
unsigned int colourMax = 256;
while(colour < colourMax)
{
// Extract image data.
colour++;
}
[mpView SetScale: pImageHM];
CFRelease(drHM);
CGImageRelease(irHM);
的SetScale函數的定義如下:
- (void) SetScale: (UIImage*)pImage
{
[mpScale release];
mpScale = pImage;
[mpScale retain];
[self setNeedsDisplay];
}
最後我使其如下:
CGContextRotateCTM(ctx, -M_PI_2);
CGContextTranslateCTM(ctx, -(rect.size.height - 48), 0);
[mpScale drawInRect: CGRectMake(0, rect.size.width - 16,
rect.size.height - 48, 16)];
CGContextTranslateCTM(ctx, (rect.size.height - 48), 0);
CGContextRotateCTM(ctx, M_PI_2);
爲什麼mpScale會提出一個EXC_BAD_ACCESS?鑑於UIImage已被保留的事實,它後來被稱爲SetScale自動釋放的事實應該既不在這裏也不在那裏。
我應該補充說,如果我不打電話SetScale(如mpscale保持爲零),那麼我沒有崩潰,顯然,我沒有看到任何規模應該是。
在此先感謝!
Ahh my bad。我知道這會是一件愚蠢的事情。 – Goz