Iphone CGImageRead#u mapData';打开';失败。。。错误=2(没有这样的文件或目录)

Iphone CGImageRead#u mapData';打开';失败。。。错误=2(没有这样的文件或目录),iphone,ios4,uiimage,javax.imageio,Iphone,Ios4,Uiimage,Javax.imageio,我已经用定制的tabbar实现了一个iPhone应用程序。用于选定/未选定选项卡的图像通过UIImage ImageName加载。正常情况下,它工作得很好,但有时,似乎是随机的,当加载一个图像并替换为黑色空白时,其中一个图像消失了。再次单击时,图像将重新出现 一些症状: -只能够在iPhone4和4.3上复制。在4.2上从未发生过(我的测试量和在4.3上一样多)。 -无法在具有4.3的3GS(较低分辨率)上进行测试。在4.2中,与上述相同,从未发生过 我设法从其中一次事件中得到一份打印,它给了我

我已经用定制的tabbar实现了一个iPhone应用程序。用于选定/未选定选项卡的图像通过UIImage ImageName加载。正常情况下,它工作得很好,但有时,似乎是随机的,当加载一个图像并替换为黑色空白时,其中一个图像消失了。再次单击时,图像将重新出现

一些症状: -只能够在iPhone4和4.3上复制。在4.2上从未发生过(我的测试量和在4.3上一样多)。 -无法在具有4.3的3GS(较低分辨率)上进行测试。在4.2中,与上述相同,从未发生过

我设法从其中一次事件中得到一份打印,它给了我此处和标题中指定的错误:

ImageIO:CGImageRead_地图数据“打开”失败/var/mobile/Applications/7A76BCE5-' 错误=2(没有这样的文件或目录)

所有选项卡映像都是这样启动的:

UIImageView *tab1ImageViewTemp = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, width, height)];

[tab1ImageViewTemp setImage:[UIImage imageNamed:@"bt_tab1"]];//imagem tab1
[self setTab1ImageView:tab1ImageViewTemp];
[self addSubview:tab1ImageView];
[tab1ImageViewTemp release];
[tab1ImageView setImage:[UIImage imageNamed:@"bt_tab1_over"]]; //when selected

[tab1ImageView setImage:[UIImage imageNamed:@"bt_tab1"]]; //when unselect
当选择/取消选择时,如下所示:

UIImageView *tab1ImageViewTemp = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, width, height)];

[tab1ImageViewTemp setImage:[UIImage imageNamed:@"bt_tab1"]];//imagem tab1
[self setTab1ImageView:tab1ImageViewTemp];
[self addSubview:tab1ImageView];
[tab1ImageViewTemp release];
[tab1ImageView setImage:[UIImage imageNamed:@"bt_tab1_over"]]; //when selected

[tab1ImageView setImage:[UIImage imageNamed:@"bt_tab1"]]; //when unselect
UIImageView在dealoc中正常释放

有人对此错误有线索…?

(在评论中回答。已转换为社区wiki答案。请参阅)

@布莱克写道:

你有两种分辨率的图像吗,一种用于视网膜,一种用于低分辨率屏幕?此外,是否有可能在很短的时间内多次触发选择/取消选择?无论如何,使用图像命名或
imageWithContentsOfFile
加载一次图像,并将
UIImages
保存到实例变量

OP写道:

好的,看来上面的解决方案解决了这个问题。然而,这并没有解释为什么会发生。我猜是因为记忆力差。还有其他线索吗?现在更多的是因为好奇


你有两种分辨率的图像吗,一种用于视网膜,一种用于低分辨率屏幕?此外,是否有可能在很短的时间内多次触发选择/取消选择?无论如何,加载一次名为with image NAME或IMAGEWITH CONTENTS OFFILE的图像,并将UIImages保存到实例变量。是的,我有两种分辨率。我敢肯定,在这种情况下,select/unselect不会被触发很多次。我将接受您的建议,并将它们保存到实例变量中。谢谢你解决这个问题了吗?如果有,请告诉我。