在WatchKit中,Apple为我们提供了大约20mb的空间来缓存图像。
这个缓存在启动时是持久的,并且当空间用完时图像被驱逐。
问题是 - 如何知道图像是否仍在缓存中?
请考虑以下情况:使用键将图像缓存到手表以供将来显示。当显示图像的时候,你怎么知道它仍然被缓存?
如果无法知道,那么你必须再次缓存它。如果你每次显示它都必须将它发送到设备,这将完全破坏缓存的目的。
修改:API已更新,以便在iOS 8.2 beta 2中修复此问题。有关详细信息,请参阅Dave的回答。
Edit2 :这已在iOS 8.2 beta 3中完全修复。有关详细信息,请参阅John的回答。
答案 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的所有图像的列表,那么您可以明确地知道缓存中的图像。