gpt4 book ai didi

ios - iOS UIImageView 和 App 进入后台的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 03:31:32 25 4
gpt4 key购买 nike

我有一个方法,在这个方法中,有这个条件:

if (self.sleepingCharacter.objectSprite.image == [UIImage imageNamed:@"sleepingRight.png"])
{....

这通常工作正常。但我注意到,在 iOS 模拟器中,当我通过按 command-H 将我的应用程序置于后台,然后我将我的应用程序带回来时,这个条件不再有效。你知道为什么会这样吗?

我测试了如果我这样写代码是否能工作:

if (self.sleepingCharacter.objectSprite.image)
{....

它确实有效,这意味着那里仍然有一个图像。现在我很困惑。

最佳答案

您正在使用 == 运算符来比较两个图像。这仅适用于两个图像实际上是相同的内存块(相同的指针)。

UIImage imageNamed: 方法缓存图像。因此理论上,如果您为相同的图像名称一次又一次地调用它,您将不断获得相同的指针并且您的代码似乎可以正常工作。

但由于内存使用情况,图像缓存有时会被清除。一旦图像被清除,下一次调用 imageNamed: 将返回一个新的图像指针,您的检查将失败。

您需要一种更好的方法来查看两个图像是否相同。一种解决方案是使用 UIImagePNGRepresentation 将两个图像转换为 NSData 对象,然后使用 isEqual: 比较两个 NSData 对象方法。

关于ios - iOS UIImageView 和 App 进入后台的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com