Что я делаю, так это создаю CGImage из растровых данных и преобразую его в UIImage.
У меня есть код ниже
- (UIImage *)imageWithBitmapBytes:(Byte *)imageBytes width:(size_t)width height:(size_t)height pixelCount:(NSUInteger)pixelCount {
NSUInteger imageBufferSize = width * height * pixelCount;
CGDataProviderRef dataProviderRef = CGDataProviderCreateWithData(nil, imageBytes, imageBufferSize, nil);
NSUInteger bitsPerComponent = 8;
NSUInteger bitsPerPixel = bitsPerComponent * pixelCount;
NSUInteger bytesPerRow = width * pixelCount;
CGImageRef cgImage = CGImageRetain(CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, CGColorSpaceCreateDeviceGray(), kCGImageAlphaLast, dataProviderRef, nil, false, kCGRenderingIntentDefault));
CGDataProviderRelease(dataProviderRef);
UIImage *image =[UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return image;
}
Я тестировал этот код при обоих включенных ARC ивыключено.
Я всегда получаю сообщение об ошибке неверного доступа к памяти в этой строке
UIImage *image =[UIImage imageWithCGImage:cgImage];