如何知道图像是否仍然缓存在Watch上

时间:2014-12-08 15:15:40

标签: ios watchkit apple-watch

在WatchKit中,Apple为我们提供了大约20mb的空间来缓存图像。

这个缓存在启动时是持久的,并且当空间用完时图像被驱逐。

问题是 - 如何知道图像是否仍在缓存中?

请考虑以下情况:使用键将图像缓存到手表以供将来显示。当显示图像的时候,你怎么知道它仍然被缓存?

如果无法知道,那么你必须再次缓存它。如果你每次显示它都必须将它发送到设备,这将完全破坏缓存的目的。

修改:API已更新,以便在iOS 8.2 beta 2中修复此问题。有关详细信息,请参阅Dave的回答。

Edit2 :这已在iOS 8.2 beta 3中完全修复。有关详细信息,请参阅John的回答。

2 个答案:

答案 0 :(得分:4)

除了Dave的回答之外,值得注意的是 WKInterfaceDevice cachedImages上还有一个属性,它返回所有缓存图像的 NSDictionary 运行应用程序的当前设备。

来自WKInterfaceDevice Class Reference

  

字典中的每个条目都是一个NSString,其中包含与图像关联的名称。每个条目的值是一个NSNumber对象,包含图像的大小(以字节为单位)。当您需要删除缓存中的图像时,请使用此信息来帮助选择要删除的图像。

答案 1 :(得分:1)

使用iOS 8.2 Beta 2可以实现此功能。在B2中,-addCachedImage:named:方法现在返回BOOL。如果图像已添加到缓存,它将返回YES,如果不是,则返回NO(因为已达到大小限制)。

操作系统也不会清除缓存;您可以使用适当的-remove...方法自行清除它。

因此,如果您的扩展程序维护了它已发送到Watch的所有图像的列表,那么您可以明确地知道缓存中的图像。