2012-11-21 42 views
1
2012-11-21 11:54:50.607 [10152:907] Current Image: <UIImage: 0x20819ae0> 
2012-11-21 11:54:50.608 [10152:907] EmptyMark Image: <UIImage: 0x20819ae0> 

应用程序输入后台并返回前台。iOS应用程序进入后台后iOS UiImage返回不同​​的签名

2012-11-21 11:54:57.040 [10152:907] Current Image: <UIImage: 0x20819ae0> 
2012-11-21 11:54:57.042 [10152:907] EmptyMark Image: <UIImage: 0x208cc580> 

我相同的图像“emptymark.png”它被添加到一个按钮,“当前图像”(登录)比较实际的文件“EmptyMark图像”(已登录),当我之后回来的应用已经在后台EmptyMark返回不同于“当前图像”(按钮上的图像)。

我得到“EmptyMark图像”使用[UIImage imageNamed:@"emptymark.png"]

我应该抱着一个参考emptymark.png所有的时间而不是试图从文件进行比较?

+0

发现这个问题:因为我相信你知道,相同的问题并不是检查内存地址变化的好方法。 http://stackoverflow.com/questions/11216167/objective-c-comparing-an-image-against-another-image-that-has-been-previously-s – KDM

+0

我不认为解决方案建议在这种情况下是好的。使用'if([UIImagePNGRepresentation(blackImage)isEqualToData:UIImagePNGRepresentation(greenImage)])'必须从两个图像创建NSData,然后必须比较哪些对于应用程序性能不利,如果图像较大。 – iDev

回答

1

您可以保持参考UIImage为,

self.image = [UIImage imageNamed:@"emptymark.png"]; 

当您只使用[UIImage imageNamed:@"emptymark.png"]比较,它正在创建单独的对象。

+1

这就是我最终做的。上面引用的链接可以工作,但[(UIImagePNGRepresentation(blackImage)isEqualToData:UIImagePNGRepresentation(greenImage)])远非优雅。 – KDM