# 老司机 iOS 周报 #161 | 2021-05-31

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 新闻

### 🌟 🐕 [Flutter 2.2 发布](https://mp.weixin.qq.com/s/_btkqmzWMeZLlL4UdhtUhw)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)： Google I/O 2021 大会上， Flutter 2.2正式发布，号称是迄今为止最出色的 Flutter 版本。在稳定版和预览版均有不少新特性发布:
- 稳定版：
    - Dart 2.13
    - Flutter web 更新
    - iOS 页面转场和增量式安装
    - 更多 Material 图标
    - 改进文本处理方式
    - 自动滚动行为
    - TextSpan 上的鼠标指针
- 预览版：
    - iOS 着色器编译改进
    - Android 延迟加载组件: 可下载的 AOT 代码和资源
    - Flutter Windows UWP alpha 版
    - ARM64 Linux 主机支持

## 文章

### 🌟 🐢 [A站 的 Swift 实践 —— 下篇](https://mp.weixin.qq.com/s/EIPHLdxBMb5MiRDDfxzJtA)

[@xiaofei86](https://github.com/xiaofei86)：经过不断迭代，Swift 如今已成 iOS 乃至苹果全平台首选开发语言，A 站也已经完全投入到 Swift 浪潮中，享受到 Swift 语言带来的舒适和高效开发体验。《[A 站的 Swift 实践——上篇](https://mp.weixin.qq.com/s?__biz=MzkxOTI0MTA2OA==&mid=2247485577&idx=1&sn=8afb1e639a832c10a966ff0ab7576b44&chksm=c1a4608af6d3e99ceeff729ea6736394266cbca7ac46040a1401d1dd805d4ae0950a5f1ae411&scene=21#wechat_redirect)》介绍了 Swift 的技术背景、Swift 的架构演进过程以及对最新框架 SwiftUI 和 Combine 等技术的选型。作为下篇文章，本文会继续介绍 Swift 的混编和动态性。

### 🌟 🐎 [SwiftUI @ Netflix：推动新技术落地是怎样一种体验？](https://mp.weixin.qq.com/s/oRPRCx78owLe3_gROYapCw)

[@zvving](https://github.com/zvving)：项目中如何推动落地新技术，是技术人持续面对的问题：

- 选择什么新技术？可以是有业务/性能收益，也可以是降低开发/维护成本，切换/学习成本是否可控
- 在什么场景落地？要有足够的用户量级论证收益，也要模块独立避免引入成本过高。业务简单稳定的模块是不错的选择
- 如何在项目中发起？有充分的调研与清晰的方案（硬实力），也要与上下游团队的频繁沟通同步预期（软沟通）
- 如何落地？尤其留意通过 A/B 实验论证对产品指标及工程指标的影响，指标不负向，成功大半
- 落地的后续？反思新技术的引入过程是否和预期一致，后续的规划是怎样

[故胤道长](https://www.jianshu.com/u/8d5b91490ca5)对以上问题的思考在文中均有体现，是非常不错的参考案例。你对项目中计划引入的新技术，又有怎样的规划？

### 🚧 🐕 [源码级调试 App Store 包](https://blog.indigo.codes/2021/05/23/debug-your-app-store-app/)

[@Smallfly](https://github.com/iostalks): 你是否曾为本地 Debug 没问题，Release 包却不能稳定复现 Bug 束手无策？本文作者 @靛青 介绍了如何从一个壳工程开始，一步步实现调试 AppStore / TestFlight 包。

文中提供了自动化构建调试工程的脚本，你只需要提供自己的 ipa 和 dSYM 文件，使用少量的 `lldb` 命令，即可完成源码级断点调试。


### 🐕 [正经分析iOS包大小优化](https://mp.weixin.qq.com/s?__biz=MzU3NTY3MTQzMg==&mid=2247505253&idx=1&sn=7123c2548a3d8412a6e0ec6e72634664&chksm=fd1d0882ca6a81948d0125ca7d5a8d614bb2f79b8dc274a6d59205ddc74b71d3242826bc7e42&mpshare=1&scene=1&srcid=0527S6Ko4joeOz56MiT0Vzfj&sharer_sharetime=1622074623255&sharer_shareid=283ec3502fd417eeb429d443f712b520#rd)


[@J_Knight_](https://github.com/knightsj)：本文作者笔者根据已有的文章、知识结合自己的理解和实践，梳理了一份比较全面的包大小优化的方案。本文先分析了安装包的构成，然后给出了 Xcode 编译设置优化方案和优化前后的数据对比。另外还提供了资源文件的优化方法，包括无用资源的删除（未使用的代码和图片，重复导入的资源等）以及资源（图片，网页，音频等）的压缩方案。另外在文章结尾还提供了本文的参考文献，读者也可以做延伸阅读和学习。


### 🐎 [一种使用 CocoaPods 同步 Git hooks 的方案](https://dirtmelon.github.io/posts/cocoapods-sync-githooks/)

[@四娘](https://kemchenj.github.io/)：Git hooks 是一段脚本，可以在 Git 执行某些操作之前或者之后执行，比如说 commit ， push 或者 receive，我们可以使用它来进行代码格式化等操作。

但它不会被 Git 追踪，只能通过其它手段进行同步，本文就介绍了如何使用 Cocoapods 插件进行同步。


### 🐕 [iOS优雅实现Pipeline设计模式](https://github.com/ChenZeBin/blogs/blob/master/%E6%96%87%E7%AB%A0/PipelineDesign/iOS%E4%BC%98%E9%9B%85%E5%AE%9E%E7%8E%B0Pipeline%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md)

[@JonyFang](https://github.com/JonyFang)：本文主要介绍了 Pipeline 设计模式，使用场景，以及如何使用 OC 语言用链式语法优雅的将 Pipeline 串联起来。文中最后附带了示例 Demo，对于读者了解 Pipeline 设计模式的实践有一定的帮助。

### 🚧 🐕 [How to scan a credit card using Apple Vision and VisionKit natively in iOS Swift with SwiftUI and UIKit](https://khalidasad93.medium.com/how-to-scan-a-credit-card-using-apple-vision-and-visionkit-natively-in-ios-swift-with-swiftui-and-247fa0863141)

[@红纸](https://github.com/nianran)：iOS 13 发布的新框架 VisionKit 是关于文档识别的新框架，本文作者保姆式介绍了该框架在扫描信用卡场景下，如何配置工程、视图、逻辑，用自定义解析逻辑提高扫描精度。在文末作者还提供了完整版 Demo，有兴趣的小伙伴可以进行尝试一下~

## 摸鱼周报

[@摸鱼周报 #12](https://mp.weixin.qq.com/s/hJkXjH1OFoF1XSd1ENlpAQ)：本期摸鱼周报带来了 **程序员必知的硬核知识大全** 的第二部分内容，包含对：二进制、大小端、缓存、压缩算法等内容的介绍。

另外我们还总结了几个 Xcode 耗时统计的 Tips；博客的筛选将更偏向于主题形式的汇总，除了近期几篇优秀文章外，本期还收录了几篇 `wakeup` 崩溃相关的文章，便于大家对这一知识有更全面的认识；资料部分收录了一个很不错的网站：swiftbysundell.com，它由 [John Sundell](https://twitter.com/johnsundell) （Publish的作者） 创建，网站包含 Swift 开发的文章、播客及新闻等内容。对 Swift 的深度使用和探索一直都是国外开发者走在前面，希望对 Swift 感兴趣的各位能在这个网站中探索更多内容。


## 赞助者

虚位以待..

**非常感谢以上赞助者的支持，如果你也有赞助我们的兴趣，欢迎添加微信 iTDriverr 哦~**

## 内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

我们开通了公众号，每期发布时公众号（LSJCoding）会推送消息，欢迎关注。

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

🚧 表示需某工具，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
