初始化 IGListAdapter 负责处理 UICollectionView 的 DataSource 和 Delegate ,所有 DataSource/Delegate 的相关方法都会在 IGListAdapter 内部消化完毕,调用方只需要设置 IGListAdapter 的 dataSource 和 collectionView 即可, IGListAdapterDataSou...
IGListKit 的基石 - IGListSectionController
IGListSectionController 跟 Object 是一一对应的关系,在 IGListAdapterDataSource 的 listAdapter:sectionControllerForObject: 方法中,会根据不同的 Object 返回不同的 IGListSectionController 。它跟我们日常理解的 UICollectinoView 的 Section ...
IGListKit - 开篇
UICollectionView/UITableView 作为一个 iOS 开发者,在日常开发中少不了与 UITableView/UICollectionView 打交道。因为复用池的存在,即使在处理大量数据的情况下,它们仍能保持较低的内存占用,而简单的 DataSource/Delegate 设计方式,可以让我们只需要几行代码就可以完成对 UITableView/UICollectionV...
《 Web 性能权威指南》阅读笔记 - 无线网络性能
无线网络概览 无线网络的性能基础 所有无线技术都有自身的约束和局限。然而,无论使用哪种无线技术,所有通信方法都有一个最大的信道容量,这个容量是由相同的底层原理决定的。 香农公式: C 是信道容量,单位是 bit/s ; BW 是可用带宽,单位是 Hz ; S 是信号, N 是噪声,单位是 W 。 在所有这些因素中,与数据传输速度最直接相关的就是接收端与发送端之间的可用带宽和...
《 Web 性能权威指南》阅读笔记-HTTP
HTTP 简史 HTTP ( HyperText Transfer Protocol ,超文本传输协议)是互联网上最普遍采用的一种应用协议,也是客户端与服务器之间的共用语言,是现代 Web 的基础。从最初的一个关键字和文档路径开始, HTTP 最终不仅成为了浏览器的协议,而且也几乎成为了所有互联网软件和硬件应用的协议。 HTTP 0.9 :只有一行的协议 Tim Berners-Lee 最...
《 Web 性能权威指南》阅读笔记-网络技术概览
延迟与带宽 WPO ( Web Performance Optimization ,Web性能优化)产业从无到有,快速增长,充分说明用户越来越重视速度方面的用户体验。速度是关键: 网站越快,用户的黏性越高; 网站越快,用户忠诚度更高; 网站越快,用户转化率越高。 不仅限于网站,移动端也是相同的情况。 延迟和带宽是影响速度的两个关键因素。 延迟是 message 或 pack...
MemorySafety
原文:MemorySafety 在默认情况下, Swift 会防止你的代码中发生不安全的行为。举个例子, Swift 保证所有变量在使用前都已经完成了初始化,当它们被释放后无法对内存进行存取,数组的索引越界时报错。 Swift 还要求修改内存内容的代码具有独占的访问权限,以此来保证同时对同一区域内存的多次访问不会造成冲突。因为 Swift 会自动管理内存,所以大多数情况下你都不需要考虑有关...
Swift 与 Objective-C 互操作中的 Optional
参考 Optionals in Swift Objective-C Interoperability 本文基于 Swift 5.3 和 Xcode 12.0 beta 2 编写,不排除将来可能有变化。 nonnull 为了与 Swift 的 Optional 类型交互, Objective-C 提供了 nullable , nonnull 等关键字,用于表示某个属性是否有可能为 n...
Moya
是什么和为什么 通过 Alamofire 可以对 URLSession 进行封装,使我们不需要过多关注一些琐碎的细节。但是在 Alamofire 的上层,我们可能还需要再做一层封装,这层封装针对于我们的 App ,更接近业务层。 Moya 正是对应的这层封装。 一般来说 App 的网络架构可能如下图所示: 可能看到加入 Moya 后,整个 App 的网络层功能非常清晰, App 不会直...
Alamofire
为什么需要一个第三方框架 对于大部分 App 来说都需要跟服务器做数据传输,通常情况下都是通过 HTTPS/HTTP 来完成。 URLSession 已经封装得很好,但是如果需要把网络层跟业务层分离开来,我们需要基于 URLSession 再做一层封装,对 method ,header ,上传,下载,错误处理等再做一层处理,让业务方在调用的时候更加舒服。 Alamofire 是基于 URLS...