2014-10-16 60 views
1

imageUIImage的实例。第一行执行没有问题,但第二行在运行时给出EXC_BAD_ACCESS错误。EXC_BAD_ACCESS访问UIImage的大小属性

NSLog(@"SCALE: %f", image.scale); 
NSLog(@"TEST: %@", NSStringFromCGSize(image.size)); 

我可以通过鼠标悬停尽管它查看在Xcode size属性的值。

enter image description here

能否请你帮我了解什么是错的和/或什么我可能会丢失?

测试的设备上,并在模拟器运行iOS 8

UPD:这是我如何创建图像:

ALAssetRepresentation *rep = [asset defaultRepresentation]; 
CGFloat scale = 1.0f; 

CGImageRef imageRef = [rep fullResolutionImage]; 
UIImage *image = [UIImage imageWithCGImage:imageRef scale:scale orientation:(UIImageOrientation)rep.orientation]; 

CGImageRelease(imageRef); 

我只是试图删除最后一行CGImageRelease(imageRef);,它似乎解决问题。但是我确实需要发布CGImageRef,因为我在循环中加载了非常大的照片,并且占用了大量内存。

+0

对我来说工作正常,只需使用UIImage * image = [[UIImage alloc] init]检查您的代码,就可以为我们提供完整的代码和图像实例初始化 – Injectios 2014-10-16 15:01:36

回答

1

所以,我想通了。问题是我发布了一个我没有的CGImageRef。

CGImageRef imageRef = [rep fullResolutionImage]; 

如果通过调用fullResolutionImage得到CGImageRef,你没有拥有它。因此,你不需要自己释放它。

CGImageRelease(imageRef); 

删除最后一行解决了我的问题。