在iPhone上混淆内存分配错误

时间:2010-10-27 10:36:46

标签: iphone memory-management

您好我正在开发一个iPhone应用程序,它提供图像和文本信息。在每个文本中都有一个图像,可以单击和缩放,用UIImageView显示

    NSString* imgName = [imgPath substringToIndex:[imgPath rangeOfString:@".jpg"].location];
UIImage* img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imgName ofType:@"jpg"]]; 
[imgView setImage:img];

当我逐个打开图片时,应用程序崩溃(在设备上调试)。在控制台中出现一些错误:

:解压缩错误 my_app_name(1226,0x3e088868)malloc: * mmap(size = 32768)失败(错误代码= 12) * 错误:无法分配区域

然后:

CoreAnimation:无法分配2228352个字节。

我的代码没有泄漏,如果我不打开图像,我就不会收到错误。那么有谁知道这个问题可能是什么?

3 个答案:

答案 0 :(得分:2)

哦,我想我终于修好了。是的,我的图像相对较大,大小约为700 * 600。

问题似乎在[imgView setImage:img]; img虽然已经发布,但不知何故还在记忆中,我不知道。在dealloc中发布imgView之前的一行代码[imgView setImage:nil];解决了这个问题。

感谢您的帮助。

答案 1 :(得分:1)

好像你使用了太多内存?

你打开多少张图片?从连接的仪器开始,观察内存占用。

请记住,图像在加载时比在磁盘上压缩时占用更多内存。

答案 2 :(得分:0)

尝试在本地自动发布池中包装您的分配/版本。