SwiftBits:缓存图像

我将开始一系列简短的文章,在这些文章中我分享一小段代码。 这些将是简短的读物,并将重点放在一个主要思想上。

在本系列的第一篇文章中,我们将着眼于通过使用缓存更有效地在应用程序中加载图像。

URLCache类通过将NSURLRequest对象映射到CachedURLResponse对象来实现对URL加载请求的响应的缓存。 它提供了内存中和磁盘上缓存的组合,并允许您操纵内存和磁盘上部分的大小。

UrlCache使我们能够缓存对URL请求的响应。 我们可以使用此缓存来存储所有响应数据。 它不限于图像。 对于本文,我们仅将其用于图像。

创建一个名为UIImageView + Cache.swift的文件 然后创建UIImageView的扩展,并添加以下代码。

  1. 首先,我们根据传递给函数的字符串创建URL。 如果URL无法实例化,我们将返回并且不执行任何进一步的操作。
  2. 我们从共享URLCache创建缓存。 这是适用于大多数使用情况的默认缓存。 接下来,我们从URL创建一个URLRequest
  3. 我们利用userInitiated队列来完成工作。 这样做是为了在加载图像时,我们不会阻塞主线程,也不会阻塞应用程序UI。 首先,我们检查我们要请求的图像是否已经在缓存中。
  4. 如果它在缓存中,则显示图像。 我们将在下一节中讨论过渡功能的实现。
  5. 当在缓存中找不到图像时,我们继续使用URLSession对该图像进行请求 。 我们检查是否有数据和响应。 在执行任何工作之前,我们还确认响应是成功的响应。 最后,我们根据响应和数据创建cachedData并将其存储到缓存中。 然后调用过渡

在我们上面为UIImageView创建的扩展内部,添加以下函数。 请注意,在上面调用该函数时,该函数始终位于主线程上。

在这里,我们创建了一个辅助函数,该函数将交叉溶解转换应用于UIImageView。 这将使图像以平滑的动画显示而不是仅仅显示。 这样的小事情可以改善用户体验,并使您的应用脱颖而出。

希望您喜欢这篇文章,并从中受益匪浅。 😊

进一步阅读:

URLCache –基础| Apple开发人员文档

该类按原样使用,但是如果有特殊需要,可以将其子类化。 例如,您可能想要…

developer.apple.com

NSURLCache

NSURLCache为应用程序的URL请求提供了一种组合的内存中和磁盘上缓存机制。 作为一部分…

nshipster.com

GCD 101:async()–一个免费的Swift黑客教程

通过这些免费教程学习iOS的Swift编码

www.hackingwithswift.com

源代码: