Objective c 来自图像的UIImage WithCGImage不';t保留指针(EXC\u错误访问)

Objective c 来自图像的UIImage WithCGImage不';t保留指针(EXC\u错误访问),objective-c,uiimageview,uiimage,cgimage,cgimageref,Objective C,Uiimageview,Uiimage,Cgimage,Cgimageref,我有一个自定义类Frame,它从多个源获取图像数据。该类可以生成UIImage。问题是,当屏幕上绘制生成的UIImage时,它会与EXC\u BAD\u访问崩溃 Callstack为空,在start->main->UIApplicationMain结束 我认为这与CGImageCreate有关,而且指针没有以某种方式保留下来。但我很难弄清楚原因。XCode调试器显示,UIImage在通过UIImageView添加为子视图之前存在,但在它崩溃之后。我还尝试使用drawRect将其直接绘制到自定义U

我有一个自定义类
Frame
,它从多个源获取图像数据。该类可以生成
UIImage
。问题是,当屏幕上绘制生成的
UIImage
时,它会与
EXC\u BAD\u访问
崩溃

Callstack为空,在start->main->UIApplicationMain结束

我认为这与
CGImageCreate
有关,而且指针没有以某种方式保留下来。但我很难弄清楚原因。XCode调试器显示,
UIImage
在通过
UIImageView
添加为子视图之前存在,但在它崩溃之后。我还尝试使用
drawRect
将其直接绘制到自定义
UIView
,但它在
drawRect
中使用
EXC\u BAD\u访问时崩溃

任何想法都将不胜感激

代码如下:

UIImage*image=[UIImage imagename:@“test.png”];
//到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:像素长度:长度];
CGFloat width=CGImageGetWidth(imageRef);
CGFloat height=CGImageGetHeight(imageRef);
CGBitmapInfo-bitmapInfo=CGImageGetBitmapInfo(imageRef);
//NSData到UIImage
CGColorSpaceRef colorSpaceRef=CGColorSpaceCreateDeviceRGB();
CGDataProviderRef dataProviderRef=
CGDataProviderCreateWithData(NULL,data.bytes,data.length,NULL);
CGImageRef imageRef2=
CGImageCreate(宽度、高度、8、32、4*宽度、colorSpaceRef、bitmapInfo、,
dataProviderRef,NULL,NO,kCGrenderingEntentDefault);
UIImage*image2=[UIImage imageWithCGImage:imageRef2];
CGCOLORSPACTERELEASE(COLORSPACTEREF);
CGDataProviderRelease(dataProviderRef);
CGImageRelease(imageRef);
//显示UIImage
UIImageView*imageView=[[UIImageView alloc]initWithFrame:self.view.frame];
imageView.image=image2;
//此处的断点显示'image2'等于'image'`
[self.view addSubview:imageView];
//EXC_坏访问