У меня странная проблема.Я создаю UIImage с imageNamed, извлекаем из него данные о цвете и затем устанавливаю его в другой класс.
Затем из этого класса, когда я делаю 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 остается равным nil), то я не получаю сбоев и, очевидно, я не вижу ничего там, где должен быть масштаб.
Заранее спасибо!