Skip to content

Commit

Permalink
Merge pull request SwiftOldDriver#2956 from ChengzhiHuang/huangchengz…
Browse files Browse the repository at this point in the history
…hi/issue_2946

fix SwiftOldDriver#2946
  • Loading branch information
ParsifalC authored Aug 22, 2021
2 parents bc7de48 + c6f6fa7 commit 14d8e88
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions Reports/2021/#172-2021.08.23.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,20 @@
### [AnyCodable](https://github.com/Flight-School/AnyCodable)
[@Smallfly](https://github.com/iostalks):[AnyCodable](https://github.com/Flight-School/AnyCodable) 对遵循 `Encodable`, `Decodable` 和 `Codable` 协议的 Model 进行包装,抹掉其具体的类型。当需要在不同模块之间传递数据时,可以使用它实现模块对 Model 的解耦。


### [Epoxy - Airbnb 声明式 iOS UI 框架开源啦!](https://mp.weixin.qq.com/s/DQ8avDt3pgMxQcb7p3WkwA)

[@ChengzhiHuang](https://github.com/ChengzhiHuang):[仓库地址](https://github.com/airbnb/epoxy-ios) ,一套完整的 Swift 实现的声明式 UI 框架。Airbnb 团队遇到的问题是:更新页面时,会需要手动操作 indexPath 来进行动画刷新,而操作 indexPath 稍有差错就会导致 crash,同时繁复的计算逻辑可读性也较差。可以回忆下即使使用 IGListKit 这样强大框架的 ListDiffPaths 计算 diff 并刷新列表,也依旧较为复杂,更不用说还需要手动控制动画了。

因此 Airbnb 团队选择了声明式编程,** 描述目标 - 让页面更新至最新内容 **。
- 一套描述页面渲染内容的语义接口:使用内容样式两种类型来描述一个 view,并分别封装在 Content 和 Style 里
- 搭建能自动更新页面渲染内容的计算框架,使用了 fast O(N) diffing 算法
- 应用单向数据流,进一步简化数据状态管理,使页面的行为更易理解

同时还提供了如 EpoxyLayoutGroups EpoxyPresentations EpoxyNavigationController 等组件,提供了 UI 层面的完整方案

[英文原文](https://medium.com/airbnb-engineering/introducing-epoxy-for-ios-6bf062be1670)

## 书

> 比较不错的书的推荐和书评
Expand Down

0 comments on commit 14d8e88

Please sign in to comment.