Tag: 延迟加载

开始进行Swift编程第16部分-inout,Lazy,Getters和Setters

之前,我们介绍了使用泛型和枚举进行闭包。 开始进行Swift编程第15部分-具有泛型和闭包的枚举 在上一篇文章中,我们讨论了错误处理。 medium.com 在本课程中,我们将逐步摆脱所有这些问题,并讨论一些可使您的代码更有效率的事情。 进出 inout是将参数传递给函数时使用的关键字。 当我们想要将变量传递给函数并修改该变量的值而不创建新变量时,使用inout 。 让我们看一下如何使用inout和不使用inout修改值。 懒 创建类时,几乎总是创建该类使用的属性。 这些属性可能只是我们打开或关闭以确定类的当前状态的标志,或者它们可能是更大的对象,例如新类用来执行某些操作的另一个类。 让我们看一个例子,我保证它是相关的。 吸气剂和二传手 获取器和设置器是计算属性的一部分。 他们是与属性观察者didSet和willSet 。 您可能还记得,当计算属性即将更改或已更改时, didSet和willSet在那里执行额外的任务。 获取器和设置器为我们提供了可用于设置值或检索值的逻辑。 这是一个例子

在Swift中使用NSOperation和NSOperationQueue在UICollectionView中进行延迟加载

在Flickr上创建帐户后,您必须生成api密钥并将该api密钥替换为搜索URL中的“ ”。 由于这不是有关Flickr服务的教程,因此我们将不再赘述。 搜索Flickr之前,需要输入API密钥。 与Flickr api调用和图像数据相关的类已经创建并包含在项目中,该项目的链接在本教程的最后提供。 在本教程中无法编写和解释整个代码,请参考所有代码片段以从项目中提供的类中获得详细的了解。 该项目包包含两个类和一个专用于执行基于Flickr的任务的结构: FlickrSearchResults :一种结构,用于包装搜索词和为该搜索找到的结果。 FlickrPhoto :从Flickr检索的照片的数据模型-其元数据信息,例如其ID。 还有一种构建Flickr URL和一些大小计算的方法。 FlickrSearchResults包含这些对象的数组。 Flickr :提供一个简单的基于块的API来执行搜索并返回FlickrSearchResult 随意看一下代码-这很简单,可能会激发您在自己的项目中使用Flickr! 打开Flickr.swift并将apiKey的值替换为apiKey获得的API密钥。 它看起来应该像这样: 当您准备好开始时,请转到下一部分-是时候进行一些准备工作,然后再熟悉Flickr。 准备图像数据 打开SearchViewController.swift ,您将在其中找到两个属性: var searchs = [FlickrSearchResults]() 让 flickr = Flickr() searches是一个数组,将跟踪应用程序中进行的所有搜索,而flickr是对将为您进行搜索的对象的引用。 创建图像下载管理器 ImageDownloadManager类将创建一个单例实例,并具有NSCache实例来缓存已下载的图像。

闪电阅读#1:Swift中的懒惰收藏

我打算暂时就Swift的日常实验写一些关于我的发现的“简短”文章……🕵 这是第一篇闪电文章! 🚀 问题:地图,flatMap和过滤器功能随附的中间杂波 假设我们在一个假想项目中具有以下要求: 可以下载6帧格式为animation_.jpeg 。 –使用Request对象下载动画帧。 –丢弃第二帧以获得更好的性能。 在现实世界中,我们很可能会有更多的帧,但可以将其视为简化示例。 我们将不使用这6帧的for循环,而是使用map , flatMap和filter方法。 让frameIndexes:[Int] = Array(1 … 6) 让imageRequests:[请求] = frameIndexes //通过每隔一帧过滤进行优化: .filter {$ 0%2 == 1} //将帧号转换为图像名称: .map {“ animation _ \($ 0).jpeg”} //将图片名称转换为网址: .flatMap {URL(string:“ https://www.somehost.com/\($0)”)} //转换网址以请求对象: .map {Request(url:$ 0)} 这比具有for循环更具可读性。 但是性能如何? 让我们逐行遍历此代码块来详细研究。 filter块对数组中的每个帧索引运行6次。 使用3个过滤的帧索引创建一个新数组。 每个图块运行3次。 将使用3个图像名称创建一个新数组。 flatMap块对每个项目运行3次。 将使用3个URL创建一个新数组。 (假设将在每个图像名称上成功创建URL。) map块在每个URL上运行3次。 使用3个请求对象创建一个新数组。 呼叫顺序将如下所示: […]