3

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

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

问题是 - 你怎么知道图像是否仍在缓存中?

考虑这种情况:您使用密钥将图像缓存到手表以供将来显示。到了显示图像的时候,你怎么知道它还在缓存中?

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

编辑:API 已更新以在 iOS 8.2 beta 2 中解决此问题。有关详细信息,请参阅 Dave 的答案。

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

4

2 回答 2

4

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

WKInterfaceDevice 类参考

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

于 2015-03-10T23:28:33.247 回答
1

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

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

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

于 2014-12-11T02:27:54.067 回答