UIImage из imageWithCGImage не сохраняет указатель (EXC_BAD_ACCESS)

У меня есть пользовательский класс Frame который получает данные изображения из нескольких источников. Класс может генерировать UIImage, Проблема в том, когда генерируется UIImage нарисован на экране, он падает с EXC_BAD_ACCESS,

Callstack пуст, он заканчивается в start->main->UIApplicationMain.

Я думаю, что это как-то связано с CGImageCreate и что указатель не сохраняется как-то. Но мне трудно понять, почему. Отладчик XCode показывает UIImage существует прямо перед тем, как он добавлен в качестве подпредставления через UIImageView, но после этого просто вылетает. Я также пытался нарисовать его прямо на заказ UIView с drawRect, но он падает с EXC_BAD_ACCESS в drawRect,

Любые мысли будут с благодарностью!

Вот код:

UIImage *image = [UIImage imageNamed:@"test.png"];

// To NSData
CGImageRef imageRef = image.CGImage;
CFDataRef dataRef = CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
const unsigned char *pixels = CFDataGetBytePtr(dataRef);
const signed long length = CFDataGetLength(dataRef);

NSData *data = [NSData dataWithBytes:pixels length:length];
CGFloat width = CGImageGetWidth(imageRef);
CGFloat height = CGImageGetHeight(imageRef);
CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);

// NSData to UIImage
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGDataProviderRef dataProviderRef =
CGDataProviderCreateWithData(NULL, data.bytes, data.length, NULL);
CGImageRef imageRef2 =
CGImageCreate(width, height, 8, 32, 4 * width, colorSpaceRef, bitmapInfo,
              dataProviderRef, NULL, NO, kCGRenderingIntentDefault);

UIImage *image2 = [UIImage imageWithCGImage:imageRef2];

CGColorSpaceRelease(colorSpaceRef);
CGDataProviderRelease(dataProviderRef);
CGImageRelease(imageRef);

//Show UIImage
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
imageView.image = image2;
//Breakpoint here shows that `image2` is equal to `image`
[self.view addSubview:imageView];
//EXC_BAD_ACCESS

0 ответов

Другие вопросы по тегам