1

我已经实现了一个带有自定义标签栏的 iPhone 应用程序。用于选定/未选定选项卡的图像通过 UIImage imageNamed 加载。通常它工作得很好,但有时,看起来像是随机的,其中一张图像在加载时消失并替换为黑色空白空间。再次单击它时,图像会重新出现。

一些症状: - 只能在 4.3 的 iPhone 4 上重现。在 4.2 上从未发生过(我在 4.3 上进行过测试)。- 无法在 4.3 的 3GS(较低分辨率)上进行测试。在 4.2 上它与上面相同,它从未发生过。

我设法从它发生的一次打印出来,它给了我这里和标题中指定的错误:

ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/7A76BCE5-' error = 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];

and when selected/unselected changed like so:

[tab1ImageView setImage:[UIImage imageNamed:@"bt_tab1_over"]]; //when selected

[tab1ImageView setImage:[UIImage imageNamed:@"bt_tab1"]]; //when unselect

并且 UIImageView 在 dealloc 中正常释放。

有人知道这个错误的线索......?

4

1 回答 1

0

(在评论中回答。转换为社区 wiki 答案。请参阅没有答案的问题,但问题在评论中解决(或在聊天中扩展)

@TheBlack 写道:

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

OP写道:

好的,似乎上面的解决方案解决了问题。但是,它没有解释为什么会发生。我的猜测是这是因为内存不足。还有其他线索吗?现在更多是因为好奇。

于 2015-02-06T23:26:45.173 回答