diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index c7623d1cf..000000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.* linguist-language=Swift
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index e43b0f988..8c687f5a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
.DS_Store
+CLAUDE.md
diff --git a/Contributors/README.md b/Contributors/README.md
new file mode 100644
index 000000000..60c129025
--- /dev/null
+++ b/Contributors/README.md
@@ -0,0 +1,281 @@
+## 老司机技术成员介绍
+
+### 没故事的卓同学 / lacklock
+
+
+
+老司机技术发起人。WWDC19 ~ 20 内参主要负责人。独立开发者(App:打工人小组件)。积极拥抱 SwiftUI。
+
+### Parsifal
+
+
+
+老司机技术二代目,新技术爱好者,微医移动技术负责人,看球不打球,虎扑十多年潜水党。
+
+### 老王 / Damonwong
+
+
+
+老司机技术三代目,WWDC20 ~ 22 内参主要负责人。目前就职于阿里巴巴,参与手机淘宝基础建设工作。对 iOS 新特性、Swift、编译等较感兴趣。除了工作和技术以外,也喜欢和朋友聊天,看电竞比赛(LPL)以及玩手机游戏(王者荣耀)。
+
+### 老黄 / ChengzhiHuang
+
+
+
+老司机技术成员,周报轮值主编。目前就职于字节跳动,参与西瓜视频质量与稳定性工作。对 OOM/Watchdog 较为了解并长期投入。月球厨师;Amphibian 与 打越钢太郎 的粉丝。
+
+### EF / EyreFree
+
+
+
+老司机周报编辑 / T 技术沙龙运营负责人 / 开源爱好者 / Sprout 技术负责人。
+
+### Cooper
+
+
+
+老司机技术成员,目前就职于 Zoom,参与 Zoom 桌面端基建开发,负责性能优化、稳定性维护和 CI 相关工作,重度自驾游爱好者。
+
+Editor of Old Driver Weekly, currently working at Zoom, involved in the development of Zoom desktop infrastructure, responsible for performance optimization, stability maintenance, and CI related work, and a heavy self driving enthusiast.
+
+### J_Knight_
+
+
+
+老司机技术成员,目前就职于同花顺,参与人工智能相关的业务开发。重度股票 & 期货爱好者。
+
+### AidenRao
+
+
+
+老司机技术成员,目前就职于字节跳动,参与抖音 APP 的开发工作,base 成都。想成为作家,又或者独立开发者,游戏设计师。擅长当韭菜。
+
+### 享耳先森
+
+
+
+老司机技术成员,目前就职于丁香园。参与丁香医生、丁香妈妈等 App 开发,还有自己的独立 App 骑行控。
+
+### 红纸
+
+
+
+老司机技术成员,WWDC 内参小助手(初号机)。目前就职于阿里巴巴,负责手淘 CI/CD 和研发效率相关工作。爱折腾新玩意儿。Dota2 仅 6k 小时的菜鸡。
+
+### 水水
+
+
+
+老司机技术成员,偶尔 T 技术沙龙 的临时工,目前就职于百度(上海),百度输入法 iOS & Mac 应用的程序媛。美食、徒步爱好者~
+
+
+### Leo
+
+
+
+老司机技术成员,目前就职于字节跳动,负责 TikTok iOS 客户端体验。喜欢研究一些技术底层的原理,业余喜欢主机游戏(特别是魂类游戏)。
+
+
+### 莲叔
+
+
+
+老司机技术成员,就职于uc,负责直播业务。主要关注音视频、端智能相关技术。原神57级摆烂中,最近开始打壁球。
+
+### 含笑饮砒霜
+
+
+
+老司机技术成员,目前就职于百度,随便做点、研究点东西。渴望尽早退休,善于发现美好,乐于享受生活。
+
+### Zvving
+
+
+
+老司机技术成员,目前就职于字节跳动,负责音乐创作客户端开发。热爱开源理念,每周一场足球不看球,任氏主机党塞尔达是天。
+
+### 邦Ben
+
+
+
+老司机技术成员,周报轮值主编,曾担任 WWDC 内参文章审核,目前就职于字节跳动 - 剪映,负责剪辑工具侧相关业务,最近入坑羽毛球被虐菜,塞尔达工业革命溜街中。
+
+### 慕牧 / Zoe
+
+
+
+老司机技术成员,目前就职于智谱华章。喜欢尝试新鲜事物,乐于探索,在变优秀的路上不断努力中~长板初学者。
+
+### BZ / BarneyZhaoooo
+
+
+
+老司机技术成员 / B站 / 原神、星穹铁道爱好者。
+
+### Damien
+
+
+
+老司机技术成员,目前就职于字节跳动,负责 TikTok 客户端隐私相关的工作。喜欢研究一些新新技术,爱折腾。
+
+### Smallfly
+
+
+
+老司机技术成员,目前就职于网易云音乐,负责长音频大前端业务。喜欢 Swift,对前端技术比较感兴趣。业务爱好健身,想当一枚粗狗。
+
+### 极速男孩007
+
+
+
+老司机技术成员,目前就职于回想科技,沉迷于 Flutter。喜欢各种数码产品。
+
+### Kyo
+
+
+
+老司机技术成员,目前就职于百度小说,负责客户端团队,关注文档、图书排版体验。喜欢的很多,这里说不过来。
+
+### xiaofei86
+
+
+
+老司机技术成员,目前就职于百度,负责百度网盘客户端基础架构相关的工作,正在折腾前端。日常躺平,梦想当一名卷王。
+
+### 四娘 / kemchenj
+
+
+
+老司机技术核心成员 / 开源爱好者 / 最近在做 3D 重建相关的开发工作
+
+### 老驴
+
+
+
+老司机技术成员,就职于某 404 公司, 努力写算法和推进项目中...
+
+### JonyFang
+
+
+
+老司机周报编辑,目前就职于哔哩哔哩,负责直播基础、业务开发。日常喜欢研究一些基础框架的底层原理,业余会跑跑步、打打球。
+
+### 天南 / CrazyCoderShi
+
+
+
+老司机技术成员,无业游民,天天瞎折腾;目前用 Flutter 写移动端。
+
+### 老峰
+
+
+
+老司机周报编辑,技术狂热,混迹币圈,希望早日自由。
+
+### CrazyZhang
+
+
+
+老司机周报编辑,另类的 Android 开发,Flutter 忠实拥护者,Unity 爱好人员,王者中毒人员。
+
+### anotheren
+
+
+
+老司机周报编辑,新晋奶爸,无业游民,正在向全栈独立开发者努力,熟悉图像与视频技术,希望在 AI 与 VR 浪潮中,找到新的定位。
+
+### mmoaay
+
+
+
+老司机早期编辑 / T沙龙负责人
+
+### Awhisper
+
+
+
+老司机技术成员,目前就职于蚂蚁金服,参与支付宝 APP 的开发工作,base 北京,常年出差杭州,不折腾不舒服司机。
+
+### 叶孤城 / Yegucheng
+
+
+
+老司机早期作者,现在佛系划水,独立开发者(app:灵动大陆),积极拥抱 SwiftUI too
+
+### 芒果 / 100mango
+
+
+
+https://github.com/100mango
+
+老司机早期编辑,喜欢清晰简洁的代码与技术方案
+
+### 小T / tom510230
+
+
+
+老司机技术曾经活跃的编辑,从 iOS 4 开始入坑,目前在剪映项目组,专注于跨平台技术相关领域
+
+### Jason Yu
+
+
+
+### 张嘉夫 / josephchang10
+
+
+
+独立开发者,数字游民。
+
+### Looping
+
+
+
+老司机技术成员,目前全力为小项目打杂,争取做大。业余爱好代码重构和算法设计,资浅科幻推理迷。
+
+### JimQ
+
+
+
+老司机技术候补队员。All in AI-App。理想是:大河向东流,财务挺自由。已经实现了上半句。
+
+### 五子棋 / SatanWoo
+
+
+
+老司机技术成员,就职于阿里巴巴淘宝,负责 端智能/AR/VR 等技术
+
+### Kyle-Ye
+
+
+
+老司机技术成员,Swift Documentation Workgroup 成员,独立开发者
+
+### DylanYang
+
+
+
+老司机技术成员,目前就职于字节跳动,参与音乐相关客户端开发,业余喜欢看看番、打打游戏。
+
+### BluesJiang
+
+
+
+iOS 开发者,老司机技术成员,目前就职于淘宝,负责淘宝原生基础架构。热衷于 Swift/SwiftUI 等基础技术领域。
+
+### 阿权 / bq
+
+
+
+老司机技术成员,base 广州,就职于字节剪映团队,喜欢音视频和图像处理,做过许多翻译和 WWDC 内参,热爱摇滚与爵士。喜欢文艺喜欢电影,曾经幻想诗与远方,却囿于昼夜、厨房与爱。
+
+### zhangferry
+
+
+
+老司机技术成员,目前在抖音基础技术团队从事代码分析相关工作。对 LLM、Stable Diffusion 有过短暂热爱,目前较大精力在带娃。
+
+### David
+
+
+
+老司机技术成员,目前从事 iOS Infra 相关工作,对跨平台技术比较感兴趣。喜欢摄影、跳舞,会点 Popping,为多上街舞大师课,现定居大阪。
diff --git "a/Posts/Swift5 \346\233\264\346\226\260\347\254\224\350\256\260.md" "b/Posts/Swift5 \346\233\264\346\226\260\347\254\224\350\256\260.md"
new file mode 100644
index 000000000..16f4ec326
--- /dev/null
+++ "b/Posts/Swift5 \346\233\264\346\226\260\347\254\224\350\256\260.md"
@@ -0,0 +1,470 @@
+## [Swift 5 Release Notes for Xcode 10.2](https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes/swift_5_release_notes_for_xcode_10_2)
+
+Swift5 正式更新,官方提供了更新笔记说明,我们周报编辑团队的 [@Tom](https://xiaozhuanlan.com/u/6682065345) 组织 [@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang) 和 [@极速男孩](https://github.com/ztlyyznf001) 为大家做了第一手的翻译工作,方便大家了解这次对于 Swift 发展史很重要的一次迭代。另外,[@Tom](https://xiaozhuanlan.com/u/6682065345) 所在的深圳头条研发中心正在招募各路好手,有兴趣的可以加他微信 tomtan,切磋技术和聊情怀都可以喔~~~~
+
+### 概要
+
+在 Xcode10.2 版本中,将可以使用 Swift5.0 进行开发
+
+### 总体(General)
+
+#### Swift 5 运行时对命令行工具的支持
+
+- Swift 命令行工具从 Xcode 10.2 开始需要依赖于 macOS 中的Swift库。这些库将从 macOS Mojave 10.14.4 开始默认包含在 macOS 中。在 macOS Mojave 10.14.3 和更早的版本中,可以选择从 [More Downloads for Apple Developers](https://developer.apple.com/download/more/) 下载 Swift 命令行工具所需要的运行时库。如果你安装了 beta 版本,需要将其替换成正式版本。只有在 Swift 命令行工具中才需要这个包,而并不适用于具有图形用户界面的应用程序。
+
+### App 瘦身(App Thinning)
+
+#### 新特性
+
+ - Swift 不再包含 Swift 标准库的动态链接,并且会在 iOS 12.2, watchOS 5.2, and tvOS 12.2 中内置 Swift SDK 。从而 Swift apps 在你上传 App Store ,发布 TestFlight 测试,和本地打包时会变得更小。
+
+ 想要比较应用在 iOS 12.2 和 iOS 12.1 之前版本瘦身的大小的区别,你可以把应用的 deployment target 设为 iOS 12.1 或之前的版本,然后将scheme 设为 Generic iOS Device 生成一个归档文件。然后用选择 Archives organizer 中的发布应用中的 Development distribution。确定在 App Thinning 的下拉菜单中选中某个特定的设备如:iPhone XS 。当发布完成以后,在刚刚创建的文件夹中打开 App Thinning Size Report ,可以看到 iOS 12.2 的安装包要比 iOS 12.1 或者更早的版本要小。准确的大小差别取决于你的 app 使用系统框架的数量。
+
+ 想要获取更多 app 瘦身的信息,可以参考 [Xcode Help](https://help.apple.com/xcode/mac/current/) 中的 [What is app thinning?](https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f) 。
+
+ 获取更多 app文件大小的信息,可以参考 [App Store Connect Help](https://help.apple.com/app-store-connect/) 中的 [View builds and file sizes](https://help.apple.com/app-store-connect/#/dev3b56ce97c) 。
+
+### Swift 语言特性(Swift Language)
+
+#### 新特性
+
+- 字符串的声明,现在可以使用更好用的分隔符了。当使用(#)号来包住一个字符串的时候,可以使用多个(#)号来分割纯字符和变量声明。使用增强的分隔符,可以避免写得很混乱的字符串转义声明。([SE-0200](https://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md))(47725014):
+
+ ```swift
+ print(#""#)
+ // 等价于:
+ print("")
+ ```
+
+- 如果声明的类型与标准库中的类型具有相同的名称,则会覆盖了标准库中的类型声明。(46767892)
+
+ 例如,在模块 Foo 中声明了一个类型,名字是 Result
+ ```swift
+ // Module `Foo`.
+ public enum Result {
+ case value(T)
+ case error(Error)
+ }
+ ```
+
+ 这样在任何使用了 Foo 模块的代码中,Result 类型都将被认为是 ```Foo.Result```:
+ ```Swift
+ import Foo
+
+ func doSomething() -> Result { /* … */ }
+ ```
+
+ 那么如果真的想要引用标准库中的 [Result](https://developer.apple.com/documentation/swift/result) 类型,那么必须加上显式的声明:
+
+ ```swift
+ import Foo
+
+ func useStandardLibraryResult() -> Swift.Result { /* … */ }
+ ```
+
+- 如果一个变量声明为```@dynamicCallable```的话,这样可以使用一个函数调用的语法糖,这个语法糖主要的使用场景是动态语言互操作([SE-0216](https://github.com/apple/swift-evolution/blob/master/proposals/0216-dynamic-callable.md))(47325423)
+
+ 例如:
+ ```swift
+ @dynamicCallable struct ToyCallable {
+ func dynamicallyCall(withArguments: [Int]) {}
+ func dynamicallyCall(withKeywordArguments: KeyValuePairs) {}
+ }
+
+ let x = ToyCallable()
+
+ x(1, 2, 3)
+ // 上面的代码实际上是一个语法糖,如果不用语法糖的话,代码会像这样子写 `x.dynamicallyCall(withArguments: [1, 2, 3])`
+
+ x(label: 1, 2)
+ // 上面的代码实际上是一个语法糖,如果不用语法糖的话,代码会像这样子写 `x.dynamicallyCall(withKeywordArguments: ["label": 1, "": 2])`
+ ```
+
+- ```标识键路径(Key paths)```功能现在支持一个特殊的标记方式```(\.self)```,[WritableKeyPath](https://developer.apple.com/documentation/swift/writablekeypath) 指代了整个输入值([SE-0227](https://github.com/apple/swift-evolution/blob/master/proposals/0227-identity-keypath.md))(40538312)
+
+ ```swift
+ let id = \Int.self
+ var x = 2
+ print(x[keyPath: id]) // Prints "2"
+ x[keyPath: id] = 3
+ print(x[keyPath: id]) // Prints "3"
+ ```
+
+- 在 Swift5 之前,可以编写一个带有可变参数的枚举体:
+
+ ```swift
+ enum X {
+ case foo(bar: Int...)
+ }
+
func baz() -> X {
+ return .foo(bar: 0, 1, 2, 3)
+ }
+ ```
+ 这不是一个特意支持的特性,现在会产生编译错误了。(46821582)
+ 相对地,你可以用数组的声明来代替可变参数声明:
+
+ ```swift
+ enum X {
+ case foo(bar: [Int])
+ }
+
func baz() -> X {
+ return .foo(bar: [0, 1, 2, 3])
+ }
+ ```
+
+- 在 Swift5 下,```try?```如果用在[可选类型](https://developer.apple.com/documentation/swift/optional)上的话,就算是多层使用,也不会导致返回值是一个多层嵌套的可选类型了。([SE-0230](https://github.com/apple/swift-evolution/blob/master/proposals/0230-flatten-optional-try.md))(47313584)
+
+- 如果一个类型```T```符合 [Initialization with Literals](https://developer.apple.com/documentation/swift/swift_standard_library/initialization_with_literals) 中的一个协议,例如 [ExpressibleByIntegerLiteral](https://developer.apple.com/documentation/swift/expressiblebyintegerliteral) ,并且是一个标量表达式的话,那么将不需要一直使用```T```用在泛型协议声明中了
+
+ 例如:现在可以这样子写一个变量表达式
+
+ ```swift
+ UInt64(0xffff_ffff_ffff_ffff)
+ ```
+
+ 在之前的版本的话将会导致 [Int](https://developer.apple.com/documentation/swift/int) 溢出错误。([SE-0213](https://github.com/apple/swift-evolution/blob/master/proposals/0213-literal-init-via-coercion.md))(17088188)
+
+- 字符串插入大幅提高了性能表现。([SE-0228](https://github.com/apple/swift-evolution/blob/master/proposals/0228-fix-expressiblebystringinterpolation.md))(43621912)
+
+- 一个旧的协议```_ExpressibleByStringInterpolation```被移除了。如果你希望继续使用这个协议的话,你可以通过条件编译选项来实现新老板本的兼容。
+
+ 例如:
+ ```swift
+ #if compiler(<5)
+ extension MyType: _ExpressibleByStringInterpolation { /*...*/ }
+ #else
+ extension MyType: ExpressibleByStringInterpolation { /*...*/ }
+ #endif
+ ```
+
+### Swift 标准库(Swift Standard Library)
+
+#### 新特性
+
+- 标准库现在包括 `Result` 枚举 ` Result.success(_:)` 和 `Result.failure(_:)` 。在`do-catch` 语句和 `try` 表达式不能使用的情况下(例如在使用可能失败的异步api时),使用 `Result` 手动传递和处理错误。
+
+ 作为添加的一部分,`Error` 协议的自我一致性,这使得在通用上下文中处理错误更加容易。([SE-0235](https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md))(21200405)
+
+- [SIMD](https://developer.apple.com/documentation/swift/simd) 类型和基本操作符现在在标准库中定义。在 `simd` 框架提供的类型中, [float2](https://developer.apple.com/documentation/simd/float2) 和 [float3](https://developer.apple.com/documentation/simd/float3),现在是新标准库类型的类型别名。
+
+ `SIMD` 类型是标量元素类型上的泛型。例如,旧的 [float3](https://developer.apple.com/documentation/simd/float3) 类型是 `SIMD3` 的类型别名。任何符合 [SIMDScalar](https://developer.apple.com/documentation/swift/simdscalar) 协议的类型都可以用作 `SIMD` 向量的标量类型,但是有效的向量化依赖于为相关的 [SIMDStorage](https://developer.apple.com/documentation/swift/simdstorage) 类型选择一个良好的数据布局并进行有效的下标操作。
+
+ 大多数使用 `simd` 类型的现有代码可以继续使用新的泛型 `simd` 类型,但是需要注意一些更改。
+
+ 新类型增加了一些新的一致性; [SIMD](https://developer.apple.com/documentation/swift/simd) 向量现在是 [Hashable](https://developer.apple.com/documentation/swift/hashable) 、[Equatable](https://developer.apple.com/documentation/swift/equatable) 和 [Codable](https://developer.apple.com/documentation/swift/codable)。这可能允许您删除在您自己的代码中提供这些一致性的一些现有扩展。
+
+ 为提供向量标量算法而重载的运算符集得到了极大的扩展。这使得编写一些东西变得更容易,但是在某些情况下会给 `typechecker` 带来歧义,并且可能需要分解一些表达式或使用显式类型进行注释。
+
+ 由于现在的类型是泛型而不是具体的,如果您已经在 `simd` 框架类型上定义了自己的协议,那么可能有必要重构一致性,因为 `Swift` 泛型类型不能对协议有多个条件一致性。这种情况相对比较少见,但通常需要重构如下代码:
+
+ ```swift
+ protocol MyVectorProtocol { /* ... */ }
+ extension float2: MyVectorProtocol { /* ... */ }
+ extension double2: MyVectorProtocol { /* ... */ }
+
+ ```
+
+ 要改为使用以下结构:
+
+ ```swift
+ protocol MySIMDScalarProtocol: SIMDScalar { /* ... */ }
+ extension SIMD2 where Scalar: MySIMDScalarProtocol { /* ... */ }
+ // Or even:
+ protocol MySIMDScalarProtocol: SIMDScalar { /* ... */ }
+ extension SIMD where Scalar: MySIMDScalarProtocol { /* ... */ }
+ ```
+
+ 这种更改通常允许您删除许多冗余实现,但它要求您定义任何必要的实现 `Hook`,这些 `Hook` 引用 `Darwin` 系统上标量类型的C头文件中的具体函数。([SE-0229](https://github.com/apple/swift-evolution/blob/master/proposals/0229-simd.md))(17045503)
+
+- [Set](https://developer.apple.com/documentation/swift/set) 和 [Dictionary](https://developer.apple.com/documentation/swift/dictionary) 现在为每个新创建的实例使用不同的散列种子。因此,在 [Set](https://developer.apple.com/documentation/swift/set) 和 [Dictionary](https://developer.apple.com/documentation/swift/dictionary) 中,元素的顺序每次都会改变:
+
+ ```swift
+ let a: Set = [1, 2, 3, 4, 5]
+ let b: Set = [1, 2, 3, 4, 5]
+ a == b // true
+ print(a) // [1, 4, 3, 2, 5]
+ print(b) // [4, 2, 5, 1, 3]
+ ```
+
+ 现有的代码错误地假设两个不相关但相等的集合或字典将以相同的顺序包含元素,这在 `Swift 5` 中更容易产生错误的结果。尽管元素顺序在不同的 `Set` 或 `Dictionary` 实例之间并不稳定,但是在同一个实例上的多次迭代之间,顺序不会发生变化。除了强调这些集合不能保证一致的元素顺序外,此更改还修复了大量操作的情况。例如:`union(_:)` 二次性能。(44760778)
+
+- 为了防止 `Cocoa` 对象的不一致哈希,`NSObject` 上的 [hashValue](https://developer.apple.com/documentation/objectivec/nsobject/1418615-hashvalue) 属性不再是可重写的。在 `Swift 4.2` 废弃重写 `hashValue`。要在 `NSObject` 子类中重写属性 [hash](https://developer.apple.com/documentation/objectivec/nsobjectprotocol/1418859-hash) 来自定义哈希值。下面展示一个例子:
+
+ ```swift
+ class Person: NSObject {
+ let name: String
+
+ init(name: String) {
+ self.name = name
+ super.init()
+ }
+
+ override func isEqual(_ other: Any?) -> Bool {
+ guard let other = other as? Person else { return false }
+ return other.name == self.name
+ }
+
+ override var hash: Int {
+ var hasher = Hasher()
+ hasher.combine(name)
+ return hasher.finalize()
+ }
+ }
+ ```
+
+ 哈希和相等判断是相辅相成。如果重写 `hash`,还需要覆盖 `isEqual(_:)`,反之亦然。(42623458)
+
+- [DictionaryLiteral](https://developer.apple.com/documentation/swift/dictionaryliteral) 类型改名成 [KeyValuePairs](https://developer.apple.com/documentation/swift/keyvaluepairs)。 ([SE-0214](https://github.com/apple/swift-evolution/blob/master/proposals/0214-DictionaryLiteral.md)) (23435865)
+
+- `Swift` 字符串桥接到 `Objective-C` 可能适当地在 [CFStringGetCStringPtr(_:_:)](https://developer.apple.com/documentation/corefoundation/1542133-cfstringgetcstringptr) 返回非 `nil` 值,而从 `UTF8String` 方法返回的指针则绑定到字符串的生命周期,而不是最内层的自动释放池。正确的程序应该不会有任何问题,并可能看到显著的加速。但是,它可能导致以前未测试的代码运行,从而暴露潜在的bug;例如,如果对非 nil 值进行检查,该分支可能从未在 `Swift 5` 之前被执行过。(26236614)
+
+- [Sequence](https://developer.apple.com/documentation/swift/sequence) 协议不再具有 `SubSequence` 关联类型。以前返回子序列的 `Sequence` 上的方法现在返回具体类型。例如,[suffix(_:)](https://developer.apple.com/documentation/swift/sequence/3128822-suffix) 现在返回一个数组。(45761817)
+
+ 使用子序列的序列上的扩展应该修改为类似地使用具体类型,或者修改为 [Collection](https://developer.apple.com/documentation/swift/collection) 上的扩展(如果子序列仍然可用)。
+
+ 例如:
+
+ ```swift
+ extension Sequence {
+ func dropTwo() -> SubSequence {
+ return self.dropFirst(2)
+ }
+ }
+ ```
+
+ 变为:
+
+ ```swift
+ extension Sequence {
+ func dropTwo() -> DropFirstSequence {
+ return self.dropFirst(2)
+ }
+ }
+ ```
+
+ 或者:
+
+ ```swift
+ extension Collection {
+ func dropTwo() -> SubSequence {
+ return self.dropFirst(2)
+ }
+ }
+ ```
+
+- [String](https://developer.apple.com/documentation/swift/string) 结构的本地编码从 `UTF-16` 转换为 `UTF-8`,这可能会提高 `String.UTF8View` 相对 `String.UTF16View` 的性能。考虑重新评估使用 `String.UTF16View` 来调优性能的代码。(42339222)
+
+#### 已知的问题
+
+- Xcode 10.2 beta 版本 [Sequence](https://developer.apple.com/documentation/swift/sequence?language=objc) 协议中增加的 ```count(where:)``` 方法已经被移除。(47549309)
+**解决方案:**使用 [reduce(_:_:)](https://developer.apple.com/documentation/swift/anycollection/2906169-reduce?language=objc) 可以高效率地计算与谓词匹配的出现次数:
+
+ ```swift
+ let occurrences = sequence.reduce(0) { predicate($1) ? $0 + 1 : $0 }
+ ```
+
+#### 已解决的问题
+
+- 可以按预期在字符串上设置 `utf8` 属性。(47864538)
+
+- 传递 null [UnsafeBufferPointer](https://developer.apple.com/documentation/swift/unsafebufferpointer?language=objc) 给 [String](https://developer.apple.com/documentation/swift/string?language=objc) 结构体的 [init(decoding:as:)](https://developer.apple.com/documentation/swift/string/2907004-init?language=objc) 初始化方法现在可以正常的返回空字符串。 (47864610)
+
+### Swift 包管理(Swift Package Manager)
+
+#### 新特性
+
+- 当使用 `Swift 5 Package.swift tools-version` 时,`Targets` 可以声明一些常用的、特定于目标的构建设置。还可以根据平台和构建配置对新设置进行条件设置。所包含的构建设置支持 `Swift` 和 `C` 语言定义、`C` 语言头文件搜索路径、链接库和链接 framework。([SE-0238](https://github.com/apple/swift-evolution/blob/master/proposals/0238-package-manager-build-settings.md))(23270646)
+
+- 当使用 `Swift 5 Package.swift tools-version` 时,可以指定最低部署版本。如果包的任何包依赖项指定的最小部署目标大于包本身的最小部署目标,则构建会出现错误。([SE-0236](https://github.com/apple/swift-evolution/blob/master/proposals/0236-package-manager-platform-deployment-settings.md)) (28253354)
+
+- 一个新的依赖项镜像特性允许顶级包覆盖依赖项url。([SE-0219](https://github.com/apple/swift-evolution/blob/master/proposals/0219-package-manager-dependency-mirroring.md))(42511642)
+
+ 使用以下命令设置镜像:
+ ```
+ $ swift package config set-mirror \
+ --package-url --mirror-url
+ ```
+
+- `swift test` 命令可以以一种标准格式生成代码覆盖率数据,这种格式适合使用标记 `--enable-code-coverage` 的其他代码覆盖率工具使用。生成的代码覆盖率数据在`//codecov` 中可用。(44567442)
+
+- `Swift 5` 不再支持 `Swift 3 Package.swift tools-version`。仍然在 `Swift 3 Package.swift tools-version` 的包应该更新到一个新版本。(41974124)
+
+- 包管理器处理大型包的速度显著加快了。(35596212)
+
+- Swift 包管理器有一个新的 `--disable-automatic-resolution` 标志,它强制包解析在包失败时失效。已解析项不再与 `Package.swift manifest` 文件中指定的依赖项版本兼容。这个特性对于持续集成系统检查包 `Package.resolved` 是否过期非常有用。(45822895)
+
+- `swift run` 命令有一个新的 `--repl` 选项,该选项启动 `Swift REPL`,支持导入目标包的库。这使您可以轻松地从包目标测试API,而不需要构建调用该API的可执行文件。(44889181)
+
+- 有关使用Swift包管理器的更多信息,请访问上 [swift.org](https://swift.org/) 的 [Using the Package Manager](https://swift.org/getting-started/#using-the-package-manager)。
+
+### Swift Compiler
+
+#### 新特性
+
+- 为了减少 Swift 元数据的占用体积,Swift 中的 convenience initializers 现在将不会提前分配内存空间,除非其调用了在 Objective-C 中定义的 designated initializer。多数情况下,这不会对你的 app 产生任何影响。唯一例外是当你的 convenience Initializers 被 Objective-C 调用,同时,没有调用自身暴露给 Objective-C 的 `self.init` ,那么[最初始分配的内存空间](https://developer.apple.com/documentation/objectivec/nsobject/1571958-alloc?language=objc)会在没有调用任何 initializer 下被释放掉。这可能会对使用 initializer 的人产生困扰,因为他们并没有意识有 object replacement 的发生。一个例子是 [`initWithCoder:`](https://developer.apple.com/documentation/foundation/nscoding/1416145-initwithcoder?language=objc):[`NSKeyedUnarchiver`](https://developer.apple.com/documentation/foundation/nskeyedunarchiver?language=objc) 如果调用了在 Swift 中定义的 `initWithCoder:` 并且保存了存在循环的对象图,它最后的实现将会出错。
+
+ 要避免这样的问题,你需要保证 convenience initializers 不支持 object replacement,同时,确保最终调用的 initializers 暴露给 Objective-C,这可以是在 Objective-C 中定义 initializers,或是被标记了 `@objc`,亦或是他们被暴露给 Objective-C 的 initializers 覆写了,也可以是他们遵从任何一个标记了 `@objc` 的协议。
+
+- 超过 16 字节对齐的 C 语言类型已不再被 Swift 支持。其实,之前版本 Swift 编译器也没有正确的处理这些类型过。(31411216)
+
+- 在 Swift 5 模式中,非 `final` 类的 convenience initializer 中 Self 的类型是动态的 Self 类型,而非具体类型了。(47323459)
+
+- 在 `optimized build`(`-O` 和 `-Osize`) 设置下,独占内存访问会在 runtime 中默认强制启用。若程序在 runtime 中违反独占内存访问,则程序会产生一条诊断信息:“Simultaneous accesses to […], but modification requires exclusive access"。你可以通过用命令行标记 -enforce-exclusivity=unchecked 来禁用检查,但是可能会导致产生未知的结果。Runtime 中违反独占内存访问一般会是由同时对类属性和全局变量(包括顶层代码中的变量和被逃逸闭包持有的变量)同时访问导致的。更多信息,请查看 [Swift 5 Exclusivity Enforcement](https://swift.org/blog/swift-5-exclusivity/). ([SR-7139](https://bugs.swift.org/browse/SR-7139)) (37830912)
+
+- 移除对 Swift 3 的支持。现在编译器支持的 `-swift-version` 是 4,4.2 和 5。
+
+- 在 Swift 5 中,在 Switch 中遍历在 Objective-C 中定义的,或由系统框架定义的枚举时,将被要求处理 unknown case。Unknown case 有可能来自于后来新增或在 Objective-C 的 `.m` 文件里进行私有定义。之前,Objective-C 允许枚举变量储存符合定义类型的任何值。这些情况现在都可以用新的 `@unknown default` 来处理。不用担心,编译器依然会对漏掉的 case 进行警告。当然,普通的 `default` 也是可以处理的。
+
+ 如果你在 Objective-C 自定义了枚举变量,也不需要客户端对未知情况进行处理的话,那么,你可以使用 `NS_CLOSED_ENUM` 宏来代替 `NS_ENUM`。 Swift 编译器会识别这些宏,之后,就不会再要求对 `default` case 处理了。
+
+ 在 Swift 4 和 Swift 4.2 模式下,你还是可以使用 `@unknown default` 进行处理。如果你没有添加 `@unknown default`, 而 runtime 中有未知 case 传入,runtime 会捕获到这样的异常,这和 Xcode 10.1 中的 Swift 4.2 是一致的。([SE-0192](https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md)) (39367045)
+
+- 现在 SourceKit 生成的 Swift Modules 的接口中,默认参数会被显示出来,而非之前用 `placeholder default` 来显示。(18675831)
+
+- `unowned` 和 `unowned(unsafe)` 变量现已支持 [`Optional`](https://developer.apple.com/documentation/swift/optional?language=objc) 类型。(47326769)
+
+### Known Issues
+
+- Key Path 中如果引用另外一个 Swift Module 中 `Protocol Extension` 中的属性,可能会导致编译器奔溃。(48001932)
+
+ 暂时解决方案:在当前 Module 中定义中间属性(`wrapper property`),在 key path 中引用这个中间属性而非原有属性。
+
+- 若启用`Thread Sanitizer`,可能导致 Swift 编译器在编译过程中奔溃。
+
+ 暂时解决方案:在 `Scheme Editor` 的 `Diagnostics` 标签页下禁用 `Thread Sanitizer`。
+
+- 链接静态 Swift 库可能会导致创建的二进制程序中缺失类型元数据,原因是静态库中的定义元数据的 Object 文件被错误的当做未使用。
+
+ 这有可能导致一个 Swift runtime 错误,同时会有类似 “failed to demangle superclass of MyClass from mangled name ‘’” 的错误信息。
+
+ 暂时解决方案:如果你能重新编译静态库,请尝试启用 `whole module optimization` 下进行编译。 否则,可以考虑添加 `-all_load` 到客户端二进制程序的链接器中来保证所有的 Object 文件都被链接入二进制程序。
+
+- `self.init()` 在 [NSView](https://developer.apple.com/documentation/appkit/nsview?language=objc) 和 [UIView](https://developer.apple.com/documentation/uikit/uiview?language=objc) 的子类的 designated initializers 未被禁止,即便 `init()` 在 NSView 和 UIView 中是 convenience initializer。使用 `self.init()` 可能会导致储存属性被多次初始化,最终可能导致内存泄漏或者是其他问题。(SR-9836) (47734208)
+
+ 暂时解决方案:使用 `super.init(frame:)` 来替代 `self.init()`
+
+### Resolved Issues
+
+- 除非你安装 Swift 5 命令行工具包的运行时支持,否则 Swift 命令行项目将无法在 macOS 10.14.3 及更早版本上运行。 如果没有该工具包,Swift 命令行项目会在启动时因“dyld:Library not loaded” 错误而崩溃。(46824656)
+
+- 直接从命令行用 swiftc 编译器链接一个 Swift 项目,现在可以在 macOS Mojave 10.14.4 上输出正确的结果。(43616773)
+
+- 与 Xcode 10.1 相比,Xcode 10.2 中的编译时间倒退现在在大多数情况下得到解决。 有些项目可能会继续经历小幅倒退;文件错误报告会记录您遇到的案例。(47304789)
+
+- 即使引用了 [UIAccessibility](https://developer.apple.com/documentation/uikit/uiaccessibility?language=objc) 结构体的成员或包含 NS_ERROR_ENUM 嵌套类型的其他类型,Swift 编译器也会完成“Merge swiftmodule”构建步骤。(47152185)
+
+- 在某些上下文中允许使用单元素标记的元组表达式,如 (```label:123```),但通常会导致令人惊讶的,不一致的行为,这些行为在编译器版本中会有所不同。 他们现在完全被禁止了。
+在 Swift 3 中已经禁止使用单元素标记类型,如```var x:(label:Int)```。([SR-8109](https://bugs.swift.org/browse/SR-8109)) (41474370)
+
+- 如果 KeyPath 字面量引用了在 Objective-C 中定义的属性或者在 Swift 中使用 @objc 和动态修饰符定义的属性,它
+现在可以成功编译并在运行时生成正确的哈希值或与其他 KeyPath 的相等比较。(47184763)
+
+- 扩展绑定现在支持嵌套类型的扩展,这些类型本身是在扩展内定义的。之前可能会因为声明顺序问题而失败,出现“undeclared type”错误。([SR-631](https://bugs.swift.org/browse/SR-631)) (20337822)
+
+- In Swift 5 mode, inferred associated types are no longer exposed publicly when a public type conforms to a non-public protocol. Instead, they get the minimum possible access to be visible from both the protocol and the conforming type. For source compatibility, Swift 4 and 4.2 modes continue to expose inferred associated types as publicly as the enclosing type unless the inferred associated type is itself less public than the conforming type.
+
+ 在 Swift 5 模式下,当公共类型实现非公共协议时,推断的关联类型不再公开。 相反,它们获得同时对协议和实现类型可见的最小访问权限。对于版本兼容性,Swift 4 和 4.2 模式继续将推断的关联类型公开为封闭类型,除非推断的关联类型本身不如实现类型开放。(46143405)
+
+- 在 Swift 5 模式下,返回 Self 的类方法不能再使用返回具体类类型(非 final)的方法来覆盖。这类代码不是类型安全的,需要将它们改掉。 ([SR-695](https://bugs.swift.org/browse/SR-695)) (47322892)
+
+ 例如:
+
+ ```swift
+ class Base {
+ class func factory() -> Self { /*...*/ }
+ }
+
+ class Derived: Base {
+ class override func factory() -> Derived { /*...*/ }
+ }
+ ```
+
+- 在 Swift 5 模式下,现在明确禁止声明与嵌套类型同名的静态属性,而之前可以在泛型类型的扩展中进行这样的声明。([SR-7251](https://bugs.swift.org/browse/SR-7251)) (47325738)
+
+ 例如:
+
+ ```swift
+ struct Foo {}
+ extension Foo {
+ struct i {}
+
+ // Error: Invalid redeclaration of 'i'.
+ // (Prior to Swift 5, this didn’t produce an error.)
+ static var i: Int { return 0 }
+ }
+ ```
+
+- 现在可以在子类中正确继承具有可变参数的指定初始化器。(16331406)
+
+- 在 Swift 5 模式下,@autoclosure 参数不能再被转发给另一个函数调用的 @autoclosure 参数。相反,你必须使用括号显式调用函数值。调用将被包含在一个隐式闭包中,保证了与 Swift 4 模式相同的行为。([SR-5719](https://bugs.swift.org/browse/SR-5719)) (37321597)
+
+ 例如:
+
+ ```swift
+ func foo(_ fn: @autoclosure () -> Int) {}
+ func bar(_ fn: @autoclosure () -> Int) {
+ foo(fn) // Incorrect, `fn` can’t be forwarded and has to be called.
+ foo(fn()) // OK
+ }
+ ```
+
+- 现在完全支持复杂的递归类型定义,包括之前在运行时会导致死锁的类和泛型。(38890298)
+
+- 在 Swift 5 模式下,在将 Optional 值转换为通用占位符类型时,编译器在展开值时会更加保守。这种转换结果现在更接近于非通用上下文中获得的结果。([SR-4248](https://bugs.swift.org/browse/SR-4248)) (47326318)
+
+ 例如:
+
+ ```swift
+ func forceCast(_ value: Any?, to type: U.Type) -> U {
+ return value as! U
+ }
+
+ let value: Any? = 42
+ print(forceCast(value, to: Any.self))
+ // Prints "Optional(42)"
+ // (Prior to Swift 5, this would print "42".)
+
+ print(value as! Any)
+ // Prints "Optional(42)"
+ ```
+
+- 协议现在可以将符合类型限定为给定类的子类。支持两种等效形式:
+
+ ```swift
+ protocol MyView: UIView { /*...*/ }
+ protocol MyView where Self: UIView { /*...*/ }
+ ```
+ Swift 4.2 接受了第二种形式,但还没有完全实现,在编译时或运行时偶尔会发生崩溃。([SR-5581](https://bugs.swift.org/browse/SR-5581)) (38077232)
+
+- Swift 4.2 接受了第二种形式,但还没有完全实现,在编译时或运行时偶尔会发生崩溃。
+ - 在 Swift 5 模式下,当在自己的 didSet 或 willSet observer 中设置属性时,observer 现在只在 self 上设置属性(不管是隐式的还是显式的)时才会避免被递归调用。([SR-419](https://bugs.swift.org/browse/SR-419)) (32334826)
+
+ 例如:
+
+ ```swift
+ class Node {
+ var children = [Node]()
+ var depth: Int = 0 {
+ didSet {
+ if depth < 0 {
+ // Won’t recursively call didSet, because this is setting depth on self.
+ depth = 0
+ }
+
+ // Will call didSet for each of the children,
+ // as this isn’t setting the property on self.
+ // (Prior to Swift 5, this didn’t trigger property
+ // observers to be called again.)
+ for child in children {
+ child.depth = depth + 1
+ }
+ }
+ }
+ }
+ ```
+
+- 如果你使用 #sourceLocation 将生成文件中的行映射回源代码,那么诊断信息将显示在源文件中而不是生成文件中。(43647151)
+
+- 使用泛型类型别名作为 @objc 方法的参数或返回类型不会再生成无效的 Objective-C 标头。([SR-8697](https://bugs.swift.org/browse/SR-8697)) (43347303)
+
+
diff --git "a/Posts/\350\200\201\345\217\270\346\234\272\346\212\200\346\234\257\345\221\250\346\212\245.md" "b/Posts/\350\200\201\345\217\270\346\234\272\346\212\200\346\234\257\345\221\250\346\212\245.md"
new file mode 100644
index 000000000..0ba1e2a95
--- /dev/null
+++ "b/Posts/\350\200\201\345\217\270\346\234\272\346\212\200\346\234\257\345\221\250\346\212\245.md"
@@ -0,0 +1,63 @@
+# 老司机技术周报
+
+
+
+老司机技术周报是一个由移动端技术爱好者组成的公益技术团体。经过近 4 年发展,编辑组已经聚集了 38 位 iOS 圈内一线开发者,成员来自各个城市,涵盖了互联网行业的各个头部企业。我们致力于在信息爆炸的时代将真正有价值的内容输送给读者,为社区发展注入一点活力,曾联合 SwiftGG 和知识小集等一起组织了近 4 年的《WWDC 内参》活动,GitHub、公众号和掘金等平台均拥有广大的读者群体,2018 年至今共发布周报 160 余期,各个渠道累计阅读量达 500 多万次,同时运营有总共超过 2500 多人的微信读者群。
+
+## 周报
+
+每周一期推荐优质内容的期刊是我们的核心内容,从 2018 年 1 月 1 号开始,至今已经发布 166 期。分发的平台不限制于 GitHub、公众号、微博、RSS、掘金和 CSDN 等。全平台累计阅读量达到 500 多万次,深受国内粉丝的喜爱,也与许多国内头部开发者保持着良好的关系。
+
+## 线下沙龙
+
+2021 年,我们组织了两场超百人规模的线下沙龙活动,活动均是免费参与,不仅邀请了国内外优秀开发者来做主题分享,并且为到场的开发者朋友准备了精美伴手礼和茶歇。
+
+### WWDC21.T 沙龙 - 杭州场(7.3,阿里巴巴西溪园区)
+
+杭州场我们联合了阿里巴巴淘系技术团队共同主办了这次活动,总共放出 200 张免费门票,均是当天内售罄。现场实际到达 170 多位开发者朋友,我们进行了 4 场线下分享和 2 场线上分享。
+
+
+
+
+
+
+
+更多现场照片:https://www.dropbox.com/sh/oychqg41nwvrj6s/AAC1BJfCshRSWNtPhCbhwJRpa?dl=0
+分享主题与嘉宾介绍:https://mp.weixin.qq.com/s/7NnD0Co2Xd9WPk61yO1aHQ
+录像及 slide(更新中):https://wudnh5f9ky.feishu.cn/drive/folder/fldcn6BBmquvtnUf7fKjKnaZBTf
+
+### WWDC21.T 沙龙 - 上海场(7.10,字节音乐上海部)
+
+上海场我们找到了字节音乐技术团队联合主办线下沙龙,总共放出了 160 张门票,几乎在半小时内就售罄了,并不断在后台收到读者朋友要求增加门票。现场实际到达约 120 多人。同样是 4 场线下分享(每个城市不同)和 2 场线上分享。
+
+
+
+
+
+
+
+分享主题与嘉宾介绍:https://mp.weixin.qq.com/s/-bRXpilEk4PRraOc7ZWELQ
+录像及 slide(更新中):https://wudnh5f9ky.feishu.cn/drive/folder/fldcn6BBmquvtnUf7fKjKnaZBTf
+
+## WWDC 内参系列活动
+
+从 2017 年开始,为了和社区开发者一起享受这场 iOS 圈的 WWDC 技术盛宴,老司机技术周报开始组织 WWDC 内参系列活动,累计已有上万的读者订阅。我们会组织业内的优秀开发者针对 WWDC 中的 Session 进行学习和实践,并将他们的学习成果写成技术文章分享出来。所有人都是基于兴趣出发来参与这个活动,因而早期内参的发布是完全免费的。但根据我们很长一段时间的读者反馈来看,免费发布这样的形式虽然说门槛低了,但同样导致了很多读者订阅之后并没有很认真地来看我们的内容。于是我们在最近几年的内参的发布策略调整为了设置一定的门槛价格,来引导读者来付费重视,而在发布一年后再免费发给读者。
+
+WWDC 21 我们尝试了全新的创作者参与机制,由原来的邀请参与变为了公开募集,并引入多人审核机制来把控内容质量。今年总计吸引了 200 多名开发者共同参与到内参活动中,大家一起编写和审核文章内容,预计将产出超过 100 篇的高质量精华文章。现在正在活动宣传期,已经有超过 2400 多读者订阅。我们承诺内参活动所有所得收入,除了活动宣传的部分开销外,我们会按内容质量全部用于给参与者稿费,并且老司机技术周报也会单独拿经费给参与者赠送活动纪念品等。
+
+- WWDC 17:https://xiaozhuanlan.com/wwdc17
+- WWDC 18(与掘金社区合作):https://juejin.cn/post/6844903618823340040
+- WWDC 18:https://xiaozhuanlan.com/wwdc18
+- WWDC 19:https://xiaozhuanlan.com/wwdc19
+- WWDC 20:https://xiaozhuanlan.com/wwdc20
+- WWDC 21:https://xiaozhuanlan.com/wwdc21
+
+## 其他内容
+
+除了周报、线下沙龙以及内参活动外,我们还会不定期地向业内的优秀开发者约稿,鼓励大家进行原创优秀博文;另外针对很多读者感兴趣的话题,我们也会不定期组织周报编辑一起热议,并将结果输出给社区。
+
+## 渠道
+
+GitHub:https://github.com/SwiftOldDriver/iOS-Weekly
+RSS:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom
+公众号、掘金等全网平台:老司机技术周报
diff --git "a/Posts/\350\200\201\345\217\270\346\234\272\346\212\200\346\234\257\345\221\250\346\212\245\347\262\276\345\223\201.md" "b/Posts/\350\200\201\345\217\270\346\234\272\346\212\200\346\234\257\345\221\250\346\212\245\347\262\276\345\223\201.md"
new file mode 100644
index 000000000..79e52fe93
--- /dev/null
+++ "b/Posts/\350\200\201\345\217\270\346\234\272\346\212\200\346\234\257\345\221\250\346\212\245\347\262\276\345\223\201.md"
@@ -0,0 +1,79 @@
+# 老司机技术周报
+
+
+
+## WWDC 内参
+
+- WWDC 17:https://xiaozhuanlan.com/wwdc17
+- WWDC 18(与掘金社区合作):https://juejin.cn/post/6844903618823340040
+- WWDC 18:https://xiaozhuanlan.com/wwdc18
+- WWDC 19:https://xiaozhuanlan.com/wwdc19
+- WWDC 20:https://xiaozhuanlan.com/wwdc20
+- WWDC 21:https://xiaozhuanlan.com/wwdc21
+
+## 技术沙龙
+
+### [淘系技术](http://t.cn/A6IZpL06)
+
+淘宝工程渐进式拥抱 Swift
+- 视频:https://mp.weixin.qq.com/s/67TM_ljN_OH96TroyUFGFA
+- 文字版本:https://mp.weixin.qq.com/s/T8iwgSk1MiB3Xg9CGzgYbw
+- PPT:https://github.com/SwiftOldDriver/PPT/blob/main/%E6%89%8B%E6%B7%98%E5%B7%A5%E7%A8%8B%E6%B8%90%E8%BF%9B%E5%BC%8F%E6%8B%A5%E6%8A%B1Swift%20-%20%E5%80%BE%E5%AF%92.pdf
+
+西瓜视频的 IAP 支付实践与 StoreKit 新特性
+- 视频:https://mp.weixin.qq.com/s/GWSBYEPB5bjjEAkxNEXWoQ
+- 文字版本:https://mp.weixin.qq.com/s/XGj95MLg4HWU6dhuqGdEOg
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/%E2%BB%84%E7%93%9C%E8%A7%86%E9%A2%91%E7%9A%84IAP%E6%94%AF%E4%BB%98%E5%AE%9E%E8%B7%B5%20%E4%B8%8EStoreKit%E6%96%B0%E7%89%B9%E6%80%A7%20-%20%E9%BB%84%E9%AA%8B%E5%BF%97.pdf
+
+Flutter 混编工程的模块化架构设计实践
+- 视频:https://mp.weixin.qq.com/s/ciztZLEH-ZrDgAamjvZuOg
+- 文字版本:https://mp.weixin.qq.com/s/A2gYRPJ0u8TVXZyMtEArlA
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/Flutter%E6%B7%B7%E7%BC%96%E5%B7%A5%E7%A8%8B%E7%9A%84%E6%A8%A1%E5%9D%97%E5%8C%96%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E5%AE%9E%E8%B7%B5-%20Jackie.pdf
+
+抖音智能创作如何做防劣化
+- 现场:https://mp.weixin.qq.com/s/PV9mcPZnPNY-OtUxKfraLQ
+- 文字版本:https://mp.weixin.qq.com/s/_c3y9KnbKS6VnqTb0AKRWg
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/%E6%8A%96%E9%9F%B3%E5%88%9B%E4%BD%9C%E5%B7%A5%E5%85%B7%E9%98%B2%E5%8A%A3%E5%8C%96%E5%AE%9E%E8%B7%B5%20-%20Crespo.pdf
+
+### [字节音乐](http://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491558&idx=1&sn=4ca4f3a9c1eb31f5052272e2649cbd6f&chksm=eaa280edddd509fbe6af2f3fa7d5a2800c01d054257e0ef8ed63bb0705155c517d7bcfe5e19c&token=1167868960&lang=zh_CN#rd)
+
+Async and Await in Swift 5.5
+- 现场视频:https://mp.weixin.qq.com/s/Yu9eQywcPiZgNME4y5sXfw
+- 文字整理版:https://mp.weixin.qq.com/s/DopuYyy479eSjgns3iaWaw
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/%E9%BB%84%E6%99%BA%E6%9D%B0%20-%20Advanced%20Property%20Wrapper%20in%20Swift.pdf
+
+From Idea To Product
+- 现场视频:https://mp.weixin.qq.com/s/tFpxHTnGY7DgDN60gWON3g
+- 文字整理版:https://mp.weixin.qq.com/s/TZHrFOU65iG7QQwP8b96-w
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/Roc%20Zhang%20-%20From%20Idea%20to%20Product.pdf
+
+Advanced Property Wrapper in Swift
+- 现场视频:https://mp.weixin.qq.com/s/4drAztYJR3Cte1z5qVi_vg
+- 文字整理版:https://mp.weixin.qq.com/s/psgRgIZlVDtIeQeDmUmXOw
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/%E9%BB%84%E6%99%BA%E6%9D%B0%20-%20Advanced%20Property%20Wrapper%20in%20Swift.pdf
+
+基于 Bazel 的 iOS MonoRepo
+- 文字整理版:https://mp.weixin.qq.com/s/zFrKoHPBv3qz8TiwdqP8Fw
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/%E5%BC%A0%E5%BF%BB%E6%AD%A3%20-%20%E5%9F%BA%E4%BA%8E%20Bazel%E7%9A%84%20iOS%20MonoRepo%20%E5%AE%9E%E8%B7%B5.pdf
+
+### [得物技术](http://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247492047&idx=1&sn=dbdf8bb3f6cb8746fcaeb41ccfb40a60&chksm=eaa17ec4ddd6f7d2074a9caa01a24edfcd160c0e22c1e9bfb62f3e75721bbca55f81fbb6cd95&token=1167868960&lang=zh_CN#rd)
+
+得物 iOS 工程演进之路
+- 现场视频:
+ - 上 https://mp.weixin.qq.com/s/bl7DgIv5ICX7hBXF26Q2zA
+ - 下 https://mp.weixin.qq.com/s/o-gRZZzQBdP33EhFZh2_Ow
+- 文字整理版:https://mp.weixin.qq.com/s/Lr6tDxacQKGZ19cKdmNg1w
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/Casa%20-%20%E5%BE%97%E7%89%A9iOS%E5%B7%A5%E7%A8%8B%E6%BC%94%E8%BF%9B%E4%B9%8B%E8%B7%AF.pdf
+
+字节跳动移动研发工具链 - MBox
+- 现场视频:https://mp.weixin.qq.com/s/-oGRc22gkk-HVHUA7hBVpg
+- 文字整理版:https://mp.weixin.qq.com/s/OD2lYfA9tkdgEp4QGRtdog
+- PPT: https://github.com/SwiftOldDriver/PPT/blob/main/%E6%9D%8E%E5%B0%A7%20-%20%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E7%A7%BB%E5%8A%A8%E7%A0%94%E5%8F%91%E5%B7%A5%E5%85%B7%E9%93%BEMBox.pdf
+
+基于 MNN 的端侧 AI 实践
+- 现场视频:https://mp.weixin.qq.com/s/I8Vq7h3ODnWt81NM13onmw
+- PPT:https://github.com/SwiftOldDriver/PPT/blob/main/%E4%BA%94%E5%AD%90%E6%A3%8B%20-%20%E5%9F%BA%E4%BA%8E%20MNN%20%E7%9A%84%E7%AB%AF%E4%BE%A7%20AI%20%E5%AE%9E%E8%B7%B5.pdf
+
+视频特效揭秘
+- 现场视频:https://mp.weixin.qq.com/s/EGFi0A21tzB6XMlDimlFUQ
+- PPT:https://github.com/SwiftOldDriver/PPT/blob/main/Matrix%20-%20%E8%A7%86%E9%A2%91%E7%89%B9%E6%95%88%E6%8F%AD%E7%A7%98.pdf
diff --git "a/Posts/\350\256\251\351\235\242\350\257\225\345\256\230\346\235\245\345\221\212\350\257\211\344\275\240\357\274\214\345\223\252\347\261\273 iOS \345\274\200\345\217\221\346\233\264\345\256\271\346\230\223\350\242\253\351\235\222\347\235\220\357\274\237.md" "b/Posts/\350\256\251\351\235\242\350\257\225\345\256\230\346\235\245\345\221\212\350\257\211\344\275\240\357\274\214\345\223\252\347\261\273 iOS \345\274\200\345\217\221\346\233\264\345\256\271\346\230\223\350\242\253\351\235\222\347\235\220\357\274\237.md"
new file mode 100644
index 000000000..baeba6ed1
--- /dev/null
+++ "b/Posts/\350\256\251\351\235\242\350\257\225\345\256\230\346\235\245\345\221\212\350\257\211\344\275\240\357\274\214\345\223\252\347\261\273 iOS \345\274\200\345\217\221\346\233\264\345\256\271\346\230\223\350\242\253\351\235\222\347\235\220\357\274\237.md"
@@ -0,0 +1,83 @@
+# 让面试官来告诉你,哪类 iOS 开发更容易被青睐?
+
+
+
+在当下这个**金三银四**的时期,我们经常会看到「XXX 的面试准备」、「XXXX 面试心得」、「XXX 面试之路」之类的文章。但是这些都是站在**面试者**的角度出发的文章。总结了各大公司的面试流程,分享面试深度、广度。对于自己面试的表现只能从自身的表现,亦或者是从面试官的微表情中透露出来的一些动作来感知。但是我认为这些不一定准确的,只是自己的主观意识罢了~
+
+所以今天,我们换个角度,我们来问问看**面试官**,在我们的面试过程中,面试官们更青睐于哪类人呢?下面的回答,我期望读者们能类比一下自身,小编自己看完之后,也是深有体会💪💪💪。那么就让我们开始吧~
+
+## 折腾范儿_味精
+蚂蚁金服会员技术部面试官,江湖俗称味精,在 Web 方面有很深的了解
+
+1. **探寻机制原理**,不满足于只完成功能需求的。这一点侧面可以证明候选人有解决疑难杂症的优秀潜力,见识过更多优秀的代码,只停留在遇到问题再谷歌百度,最终完成功能需求的,并不是我青睐的。
+2. 对于工作有自己的**主动性设计与产出**,并且能体现出**技术深度与成长**的。简单的来说如果有一天老板不给你安排任务了,不给你提明确的需求做 xxx 了,你自己能有什么样的规划思考以及对项目对自己的技术提升,这一点体现主观能动性与发现问题解决问题的潜质。
+
+## 没有故事的卓同学
+老司机周报发起人,目前是奇志科技 iOS 团队负责人
+
+我们当下的主要业务是利用无人机采集数据,推动行业作业效率。移动端要处理:无人机的任务控制(按规定的航线、动作采集数据)、无人机的数据处理(拍到的图片、视频)。和服务器的通讯是很重要的一环,也有类似直播推无人机的图传视频流的场景。我们的产品 UI 的比重少,没有那么多页面,更多时候是针对一个需求,提出一个合理的技术方案,然后保证这个方案高质量的实现。
+
+按照前面提到的要求,我们会要求移动端的开发人员一定要有良好的**计算机基础知识**。不是计算机专业,培训班了几个月 UI 写的溜的就完全不合适。在大的业务型公司中写了几年 UI 的也不匹配。我们要解决一个需求时,要考虑无人机硬件上的能力、飞控的能力、无人机通信上的限制、数据到 native 层后如何处理。如果计算机基础知识掌握的好,遇到我们业务上的难题就能解决的越好。所以背后还隐含了对新技术的探索、理解能力。
+
+因为看中**新技术的探索**、**学习能力**,所以喜欢**折腾**其他端技术的程序员我们也很偏爱。为了保证移动团队可以有效的沟通,会尽量 iOS 和 Android 大的架构上保持一致。两端也都深度使用了 Rx。我们面向不同行业应用的 UI 是使用类似 RN 技术实现的,UI 构建代码是 js。因此 iOS 团队提供了接触安卓、前端的机会。如果一个程序员有兴趣,在我们这边就可以实现一个功能,三端代码一个人写。
+
+## Tom
+广州头条 EE 团队初创成员,资深面试官
+
+1. **沟通能力**第一位,其次考察学习能力和知识深度,特别喜欢能够举一反三的候选人。
+2. 有强烈的**学习自驱力**会加分,另外能够经常了解项目上下游事情的候选人也会加分。
+3. 软素质部分,比较看中是否能够在相对苛刻的外部压力下找到解决方案,譬如对一个随机出现的 BUG 揪住不放,用了较多的个人业余时间赶上当前版本周期解决。
+
+> 广州头条急招各种岗位,求简历ing,小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+## Parsifal
+老司机周报负责人,微医生 iOS 团队负责人
+
+对不同职位要求倾向性也会有一定区别。若招的是初中级或者实习生,我想基本功和学习能力是会占到比较大的比重的。而相对若招的是更深层次的人才,则对于技术深度和广度都会有更大的要求。在硬能力差不多的前提下,我谈谈在面试过程中会让我感觉眼前一亮有加分的一些表现吧。
+
+1. 认真听题目,理解考察目的,针对性和有**条理性**地梳理思路而后开始回答。一类应聘者在面试过程中,会试图打断面试官提问做抢答,这是极不好的一个习惯。不仅会让面试官觉得你会较急躁,且不太礼貌,而且往往回答得并不是面试官真正想要问的。另一类应聘者则是回答问题并没有一个很清晰的思路,自顾自地侃侃而谈了很多,最后越来越偏离主题,反而是起到反效果。相应地,如果你能够分点有层次地答题,不仅自己不会答漏,也能让面试官轻松得 get 到你的掌握程度。
+2. **气质**与团队的**气质**能够有较大地契合。每个团队都会有自己的**气质**,这会在平常工作中体现的很明显。如果你应聘的团队是较激进有活力的,对各类新技术都很热衷尝试和沉淀,而你属于较沉稳保守的,那到团队内久了就会显得格格不入。
+3. 喜欢自己从事的工作,关注业内的技术和生态发展,对近期圈子里能够有一定的了解。这一点很可能会映射出你是否会持续成长。在 WWDC 期间,我往往会聊一些相关的作为破冰话题。
+4. 定期有**计划**地梳理自己的知识体系。如果你有这个习惯,可以提前传到 GitHub 等地方,并在简历上体现。
+5. 保持**谦逊**,不要浮夸和自以为是。遇到过太多对自己迷之自信的应聘者,但往往技术是越到深处越觉得学无止境的。
+
+## 享耳先森
+丁香园 iOS 团队负责人
+
+1. iOS 及软件工程上有足够的硬实力。
+2. 软实力方面,比较考察 **学习能力**、**主动性**,我们比较喜欢做事能够做到实时反馈的人,而不是需要其他人去推动。
+3. 心态方面,我们会要求候选人 **心智成熟、心态开放**,并不太喜欢甩锅的行为,能够主动承担责任。
+
+## Jason
+即刻 iOS 团队负责人
+
+除了专业技能、算法基本功符合岗位要求之外,我们还有一个 iOS 面试原则,不论职级高低都需要满足:
+
+1. 真实直接,是什么说什么,绕弯子的不要。
+2. 心态一定要开放,有旺盛的好奇心和想象力,不管自己 Level 是高是低,都愿意拥抱新的更好的技术和思想,**少年心气**。
+3. **沟通协作**能力一定要强,只喜欢单打独斗的不要。
+4. 遇到问题的时候,老从其他人身上找原因的不要。
+
+我们认为公司氛围与个人能力都很重要。只要文化足够好,就算刚入职的时候经验不足,将来成长空间和速度也是非常可观的。
+
+## 总结
+
+OK~我们看完了这么多大佬的话语之后是不是都有一些自己的感触呢?小编我自己作为面试官的次数并不多,就不高谈阔论了。简单几个词,总结一下本篇的言论。(如果每个单题都是20分,你给自己打几分呢?评论区可以留言哦!打💯或者超过💯的童鞋,🙄让我们膜拜一下。)
+
+1. 探索精神
+2. 心智成熟、心态开放
+3. 沟通协作能力
+4. 主动性
+5. 强逻辑思维
+
+最后,祝大家看完本文后都有所收获,面试顺利~😊😊😊
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
\ No newline at end of file
diff --git a/README.md b/README.md
index 2e0050ba4..2cc9916c7 100644
--- a/README.md
+++ b/README.md
@@ -1,177 +1,210 @@
-
+
-这个时代的问题不是缺乏信息,而是信息太多,不知道那些信息是有价值的,哪些是对我而言有效的信息。既然我们平时也在关注 iOS 开发相关的资讯信息,不如整理出来。我们并不只是资讯的搬运工,也是价值的布道者。关于内容,不局限于具体的 iOS 技术相关的内容。也包括我们认为对于 iOS 开发者有价值的信息,比如软件工程、程序员话题。
+这个时代的问题不是缺乏信息,而是信息太多,不知道哪些信息是有价值的,哪些是对我而言有效的信息。既然我们平时也在关注 iOS 开发相关的资讯信息,不如整理出来。我们并不只是资讯的搬运工,也是价值的布道者。关于内容,不局限于具体的 iOS 技术相关的内容。也包括我们认为对于 iOS 开发者有价值的信息,比如软件工程、程序员话题。
+
+[查看往期周报](https://github.com/SwiftOldDriver/iOS-Weekly/releases)
## 欢迎参与
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues ](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues ](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
-## 支持我们:老司机精选专栏
-
-我们在小专栏上开通了一个收费专栏:[SwiftOldDriver 精选](https://xiaozhuanlan.com/olddriver-selection) 。**专栏的收入会用于周报编辑部日常运营**。平均每周专栏会更新一篇文章,**持续更新至 18 年底**,专栏的价格为 59 元。如果愿意支持我们欢迎订阅,相信内容也不会让你失望。
-
-## 归档
-
-[周报列表](https://github.com/SwiftOldDriver/iOS-Weekly/tree/master/Reports)
-
-## RSS 订阅
-
-[https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom](https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom)
-
-## 其他平台
-
-掘金:[老司机 iOS 周报](https://juejin.im/user/5a52075e6fb9a01c9d31b107/posts)
-
-公众号:OldDriverWeekly
-
-
-
-## 编辑
-
+## 支持我们:[WWDC24 内参](https://xiaozhuanlan.com/wwdc23)
+
+**WWDC24 内参** 目前已经更新了 21 篇内容,并且我们今年做出了一个重大改变,关注老司机技术公众号并回复 ``2024`` 可以免费领取,后续也会在公众号上定期推送对应内容。
+
+**WWDC 内参** 系列是由「老司机技术」牵头组织的精品原创内容系列。已经做了几年了,口碑一直不错。和往年不同,今年几乎没有脱水稿了,得益于组建的审核团队和不断优化的创作流程,大家创作的内容都已经超越了视频本身的内容,非常有学习和参考意义。
+
+> 双审核机制:一位审核从专业性角度看内容是否正确,另外一位审核从读者角度看知识是否正确引导。
+
+## 订阅周报
+
+我们提供了多种订阅方式,大家可以按照自己的需求进行选择:
+
+- 邮件订阅:点击顶部 Watch 按钮选择 Release Only 模式

+- 公众号:老司机技术周报

+- RSS:[点击获取 RSS 源](https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom)
+- 掘金:[老司机技术周报](https://juejin.im/user/5a52075e6fb9a01c9d31b107/posts)
+
+## 检索周报
+
+利用 GitHub [Search In This Repository](https://github.com/SwiftOldDriver/iOS-Weekly/search?q=swift&unscoped_q=swift) 功能可以快速检索出往期周报收录的内容。
+
+## 贡献名单
+
+#### 轮值主编
+
+
+#### 现任编辑
+
+
+
+#### 荣誉编辑
+
+
+
+## 关于我们
+
+老司机技术周报是一个由移动端技术爱好者组成的团体,致力于在信息爆炸的时代将真正有价值的内容输送给读者。我们曾联合 SwiftGG 和知识小集等一起组织了近 4 年的《WWDC 内参》活动,GitHub、公众号和掘金等平台均拥有广大的读者群体,2018 年至今共发布 180 余期,各个渠道累计周报的阅读量达 500 多万次。
## 其他
-本周报图标及头图设计者为知名设计美学博主 [mmoaay](https://weibo.com/smmoaay),`Swift 老司机活动中心` 与 `mmoaay` 对其以及其衍生物保留一切权利。
+本周报图标及头图设计者为知名设计美学博主 [@SketchK](https://github.com/SketchK),`Swift 老司机活动中心` 与 `SketchK` 对其以及其衍生物保留一切权利。另外,非常感谢 [mmoaay](https://weibo.com/smmoaay) 为周报团队设计的第一代 Logo。
+
+## 赞助者
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
## 协议
-
+
iOS-Weekly 基于 Apache-2.0 协议进行分发和使用,更多信息参见协议文件。
-
+
iOS-Weekly 所含文章使用以下协议进行保护:[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/3.0/cn/)。
diff --git a/Report template.md b/Report template.md
index 54d49fa11..4f7ff3747 100644
--- a/Report template.md
+++ b/Report template.md
@@ -1,55 +1,60 @@
-# 老司机 iOS 周报 #1 | 2018-03-25
+# 老司机 iOS 周报 #319 | 2025-01-06
-
+
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
## 新闻
-新闻
+> 行业相关的新闻、趣事、看法
+## Developer - 设计开发加速器
-## 文章
+> 设计开发加速器相关活动
+
+## 新手推荐
-文章
+> 收集一些对新手友好且质量不错的文章
+
+## 文章
-## 设计
+> 写的不错的技术博客,包含但不局限于 iOS、多端统一、设计、产品等
## 工具
-第三方工具服务
+> 开发过程中常用的工具,及一些新工具的介绍
## 代码
-库,代码段,开源app
+> 库,代码段,开源app
## 书
-可选
+> 比较不错的书的推荐和书评
## 音视频
-可选,音视频
+> 比较不错的书的推荐和书评
## 内推
-可选,内推招聘
+重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考
-## 关注我们
+具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)
-我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+## 关注我们
-
+我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+**关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参**
-## 本期编辑
+
-[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445)
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 说明
-🚧 表示需翻墙,🌟 表示编辑推荐
+🚧 表示需某工具,🌟 表示编辑推荐
-预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
\ No newline at end of file
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/#36-2018.09.17.md b/Reports/#36-2018.09.17.md
deleted file mode 100644
index d05ca4080..000000000
--- a/Reports/#36-2018.09.17.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# 老司机 iOS 周报 #36 | 2018-09-17
-
-
-老司机 iOS 周报,只为你呈现有价值的信息。
-
-你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
-
-## 新闻
-
-新闻
-
-
-## 文章
-
-### 🐎 [你的标签是什么?](https://github.com/SwiftOldDriver/iOS-Weekly/issues/722)
-
-每个人都会被打上标签,可能是正向的善于解决问题、Web 安全专家或者是擅长创新。也可能是负向的粗心、眼高手低。程序员不能一直埋头苦干,要适当建立起自己的标签,尤其对职场新人而言,好的标签会让你脱颖而出,更多的机会会垂青于你。
-
-
-### 🐢 [Swift for TensorFlow 官方教程](https://github.com/tensorflow/swift-tutorials/blob/master/iris/swift_tensorflow_tutorial.ipynb)
-
-Swift for TensorFlow 是今年的 TensorFlow 峰会上,Chris 团队发布的一项新的技术,旨在为 Swift 提供内置的、first class 的机器学习的能力。Swift for TensorFlow 使用一系列很有趣的技术来实现了同时具备可用性和性能,有兴趣的同学可以进一步了解。同时,Swift for TensorFlow 也提供了 jupyter kernal 得支持,使得可以使用 notebook 来写 swift。
-
-机器学习入门教程最经典就是识别鸢尾花,iris detection。本篇教程就是 Swift for TensorFlow 版本的 iris detection,对 Swift 做机器学习感兴趣的筒子不要错过。
-
-### 🐢 [镣铐之舞:美团安全工程师Black Hat USA演讲](https://juejin.im/post/5b9b178ce51d450e5d0aec26)
-
-这是一篇来自美团安全团队的分享。美团安全团队在今年的 Black Hat USA 上做了关于 App Store Malware Automatic Hunting System 的演讲分享。团队设计了一套可自动大规模获取应用样本的 Crawl 系统,通过使用基于树莓派的构建集群来实现沙盒自动分析系统,最终实现了自动化收集样本并对样本进行自动化安全分析的APT攻击捕获及分析系统。
-
-这篇文章中很多概念对于不做安全或者对安全领域接触较少的同学来说比较难理解,但是不妨边搜索概念和知识点边读,可增加一些安全方面的基础概念知识。
-
-## 设计
-
-## 工具
-
-第三方工具服务
-
-## 代码
-
-库,代码段,开源app
-
-## 书
-
-可选
-
-## 音视频
-
-可选,音视频
-
-## 内推
-
-可选,内推招聘
-
-## 关注我们
-
-我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
-
-
-
-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
-
-## 本期编辑
-
-[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445)
-
-## 说明
-
-🚧 表示需翻墙,🌟 表示编辑推荐
-
-预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/#1.md b/Reports/2018/#1.md
similarity index 100%
rename from Reports/#1.md
rename to Reports/2018/#1.md
diff --git a/Reports/#10.md b/Reports/2018/#10.md
similarity index 100%
rename from Reports/#10.md
rename to Reports/2018/#10.md
diff --git a/Reports/#11.md b/Reports/2018/#11.md
similarity index 100%
rename from Reports/#11.md
rename to Reports/2018/#11.md
diff --git a/Reports/#12-2018.03.25.md b/Reports/2018/#12-2018.03.25.md
similarity index 99%
rename from Reports/#12-2018.03.25.md
rename to Reports/2018/#12-2018.03.25.md
index 1480ece1f..afbb254c0 100644
--- a/Reports/#12-2018.03.25.md
+++ b/Reports/2018/#12-2018.03.25.md
@@ -6,7 +6,7 @@

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
diff --git a/Reports/#13-2018.03.31.md b/Reports/2018/#13-2018.03.31.md
similarity index 99%
rename from Reports/#13-2018.03.31.md
rename to Reports/2018/#13-2018.03.31.md
index 54f260a1f..39f1ca96a 100644
--- a/Reports/#13-2018.03.31.md
+++ b/Reports/2018/#13-2018.03.31.md
@@ -8,7 +8,7 @@

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
diff --git a/Reports/#14-2018.04.09.md b/Reports/2018/#14-2018.04.09.md
similarity index 99%
rename from Reports/#14-2018.04.09.md
rename to Reports/2018/#14-2018.04.09.md
index 8e2ee276d..63944143b 100644
--- a/Reports/#14-2018.04.09.md
+++ b/Reports/2018/#14-2018.04.09.md
@@ -8,7 +8,7 @@

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
diff --git a/Reports/#15-2018.04.16.md b/Reports/2018/#15-2018.04.16.md
similarity index 99%
rename from Reports/#15-2018.04.16.md
rename to Reports/2018/#15-2018.04.16.md
index 8f0f33a11..adf75200e 100644
--- a/Reports/#15-2018.04.16.md
+++ b/Reports/2018/#15-2018.04.16.md
@@ -110,7 +110,7 @@ alpha 版本发布了。其实关于公司的自动化也是老生常谈的问

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#16-2018.04.21.md b/Reports/2018/#16-2018.04.21.md
similarity index 99%
rename from Reports/#16-2018.04.21.md
rename to Reports/2018/#16-2018.04.21.md
index 44eff7cb2..caeb74ea7 100644
--- a/Reports/#16-2018.04.21.md
+++ b/Reports/2018/#16-2018.04.21.md
@@ -115,7 +115,7 @@ BTW,这是 Kickstarter 两位前任工程师,创办的网站 [Point Free](ht

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#17-2018.05.02.md b/Reports/2018/#17-2018.05.02.md
similarity index 99%
rename from Reports/#17-2018.05.02.md
rename to Reports/2018/#17-2018.05.02.md
index 30daa9372..02b1396f8 100644
--- a/Reports/#17-2018.05.02.md
+++ b/Reports/2018/#17-2018.05.02.md
@@ -120,7 +120,7 @@ App Builders Conference 是由来自欧洲各国的 Android 和 iOS 移动开发

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#18-2018.05.07.md b/Reports/2018/#18-2018.05.07.md
similarity index 99%
rename from Reports/#18-2018.05.07.md
rename to Reports/2018/#18-2018.05.07.md
index 646d443d2..a09585d21 100644
--- a/Reports/#18-2018.05.07.md
+++ b/Reports/2018/#18-2018.05.07.md
@@ -69,7 +69,7 @@ Lobe 可以让开发者不需要撰写任何代码,即可为应用程式加入

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#19-2018.05.14.md b/Reports/2018/#19-2018.05.14.md
similarity index 99%
rename from Reports/#19-2018.05.14.md
rename to Reports/2018/#19-2018.05.14.md
index 585d6a04e..a11027feb 100644
--- a/Reports/#19-2018.05.14.md
+++ b/Reports/2018/#19-2018.05.14.md
@@ -88,7 +88,7 @@ Swift 4 的新功能 Codable 可以自动生成解析 JSON 的构造器,但这

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#2.md b/Reports/2018/#2.md
similarity index 100%
rename from Reports/#2.md
rename to Reports/2018/#2.md
diff --git a/Reports/#20-2018.05.21.md b/Reports/2018/#20-2018.05.21.md
similarity index 99%
rename from Reports/#20-2018.05.21.md
rename to Reports/2018/#20-2018.05.21.md
index 28e430a32..26edfe6c9 100644
--- a/Reports/#20-2018.05.21.md
+++ b/Reports/2018/#20-2018.05.21.md
@@ -99,7 +99,7 @@ Google I/O 大会推出了谷歌的全新移动端机器学习框架 MLKit,可

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#21-2018.05.28.md b/Reports/2018/#21-2018.05.28.md
similarity index 99%
rename from Reports/#21-2018.05.28.md
rename to Reports/2018/#21-2018.05.28.md
index 898d0bfd0..c52f2da9d 100644
--- a/Reports/#21-2018.05.28.md
+++ b/Reports/2018/#21-2018.05.28.md
@@ -75,7 +75,7 @@ Ray Wenderlich 的新书《ARKit by Tutorials》,在这本书里会教你如

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#22-2018.06.04.md b/Reports/2018/#22-2018.06.04.md
similarity index 99%
rename from Reports/#22-2018.06.04.md
rename to Reports/2018/#22-2018.06.04.md
index 2a93c6f01..745567d45 100644
--- a/Reports/#22-2018.06.04.md
+++ b/Reports/2018/#22-2018.06.04.md
@@ -163,7 +163,7 @@ macOS 平台上的 Unofficial WWDC app for macOS 这款第三方 WWDC 应用更

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#23-2018.06.18.md b/Reports/2018/#23-2018.06.18.md
similarity index 99%
rename from Reports/#23-2018.06.18.md
rename to Reports/2018/#23-2018.06.18.md
index 2fbdd33f8..9abaa7a76 100644
--- a/Reports/#23-2018.06.18.md
+++ b/Reports/2018/#23-2018.06.18.md
@@ -135,7 +135,7 @@ Facebook 出品,一个可扩展的移动应用调试工具,同时支持 iOS

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#24-2018.06.25.md b/Reports/2018/#24-2018.06.25.md
similarity index 99%
rename from Reports/#24-2018.06.25.md
rename to Reports/2018/#24-2018.06.25.md
index c4fd8181b..1fb9c7729 100644
--- a/Reports/#24-2018.06.25.md
+++ b/Reports/2018/#24-2018.06.25.md
@@ -134,7 +134,7 @@ StyledTextKit 是一款支持后台渲染和 LRU 缓存的富文本框架。在

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#25-2018.07.02.md b/Reports/2018/#25-2018.07.02.md
similarity index 99%
rename from Reports/#25-2018.07.02.md
rename to Reports/2018/#25-2018.07.02.md
index 5435f92fe..8d4ffffa7 100644
--- a/Reports/#25-2018.07.02.md
+++ b/Reports/2018/#25-2018.07.02.md
@@ -161,7 +161,7 @@ Ole Begemann 大神出品的 What's New in Swift 系列,使用 Playground 为

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#26-2018.07.09.md b/Reports/2018/#26-2018.07.09.md
similarity index 99%
rename from Reports/#26-2018.07.09.md
rename to Reports/2018/#26-2018.07.09.md
index 0d3050688..92c6a439e 100644
--- a/Reports/#26-2018.07.09.md
+++ b/Reports/2018/#26-2018.07.09.md
@@ -225,7 +225,7 @@ Bartinter 是一个状态栏外观管理器,根据状态栏的背景内容来
我们开通了公众号【OldDriverWeekly】,每期发布时公众号会推送消息,欢迎关注。
-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#27-2018.07.16.md b/Reports/2018/#27-2018.07.16.md
similarity index 99%
rename from Reports/#27-2018.07.16.md
rename to Reports/2018/#27-2018.07.16.md
index 33713dafc..deb5d2c80 100644
--- a/Reports/#27-2018.07.16.md
+++ b/Reports/2018/#27-2018.07.16.md
@@ -166,7 +166,7 @@ GPUImage 的作者实在是太高产了。GPUImage3 的 shader 处理部分完

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#28-2018.07.23.md b/Reports/2018/#28-2018.07.23.md
similarity index 99%
rename from Reports/#28-2018.07.23.md
rename to Reports/2018/#28-2018.07.23.md
index 6a81d4a86..0817a895c 100644
--- a/Reports/#28-2018.07.23.md
+++ b/Reports/2018/#28-2018.07.23.md
@@ -127,7 +127,7 @@ Twitter Network Layer (TNL) 是 Twitter 开源的一套基于 NSURLSession 的

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#29-2018.07.30.md b/Reports/2018/#29-2018.07.30.md
similarity index 98%
rename from Reports/#29-2018.07.30.md
rename to Reports/2018/#29-2018.07.30.md
index 992da7557..d426ccd42 100644
--- a/Reports/#29-2018.07.30.md
+++ b/Reports/2018/#29-2018.07.30.md
@@ -68,7 +68,7 @@ Mattt 重启了 NSHipster.cn 之后,更新了一篇关于 WKWebView 的旧文
## 代码
-### [DBDebugToolkit](https://github.com/dbukowski/DBDebugToolkit) | [Wormholy](https://github.com/pmusolino/Wormholy) | [CocoaDebug](https://github.com/CocoaDebug/CocoaDebug) | [GodEye](https://github.com/zixun/GodEye)
+### [DBDebugToolkit](https://github.com/dbukowski/DBDebugToolkit) | [Wormholy](https://github.com/pmusolino/Wormholy) | [GodEye](https://github.com/zixun/GodEye)
最早看到监控或是 Debug 类 SDK 完整功能的实现是子循的 Godeye ,最近似乎此类 SDK 又重新被大家关注起来了。
@@ -111,7 +111,7 @@ Appdevcon 是由 App 开发者组织,面向 App 开发者的技术大会,它

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#3.md b/Reports/2018/#3.md
similarity index 100%
rename from Reports/#3.md
rename to Reports/2018/#3.md
diff --git a/Reports/#30-2018.08.06.md b/Reports/2018/#30-2018.08.06.md
similarity index 99%
rename from Reports/#30-2018.08.06.md
rename to Reports/2018/#30-2018.08.06.md
index d82f38fdc..4b2bcb2dc 100644
--- a/Reports/#30-2018.08.06.md
+++ b/Reports/2018/#30-2018.08.06.md
@@ -101,7 +101,7 @@ ADDC 是 2018 年 7 月 4 日至 6 日在西班牙巴塞罗那举办的 App 设

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#31-2018.08.13.md b/Reports/2018/#31-2018.08.13.md
similarity index 99%
rename from Reports/#31-2018.08.13.md
rename to Reports/2018/#31-2018.08.13.md
index f2e436fa6..d48d18e82 100644
--- a/Reports/#31-2018.08.13.md
+++ b/Reports/2018/#31-2018.08.13.md
@@ -115,7 +115,7 @@ Knil 是一款帮助你测试和验证 Universal link 是否有效的工具。

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#32-2018.08.20.md b/Reports/2018/#32-2018.08.20.md
similarity index 99%
rename from Reports/#32-2018.08.20.md
rename to Reports/2018/#32-2018.08.20.md
index 106bbdfc1..6dbb58826 100644
--- a/Reports/#32-2018.08.20.md
+++ b/Reports/2018/#32-2018.08.20.md
@@ -103,7 +103,7 @@ Swift Codable 优化了解析 JSON 的体验。但是如果有一个属性的解

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#33-2018.08.27.md b/Reports/2018/#33-2018.08.27.md
similarity index 99%
rename from Reports/#33-2018.08.27.md
rename to Reports/2018/#33-2018.08.27.md
index 9e079e182..54778e68b 100644
--- a/Reports/#33-2018.08.27.md
+++ b/Reports/2018/#33-2018.08.27.md
@@ -128,7 +128,7 @@ zip(with: User.init)(

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#34-2018.09.03.md b/Reports/2018/#34-2018.09.03.md
similarity index 99%
rename from Reports/#34-2018.09.03.md
rename to Reports/2018/#34-2018.09.03.md
index 086f789ad..6609a96c4 100644
--- a/Reports/#34-2018.09.03.md
+++ b/Reports/2018/#34-2018.09.03.md
@@ -145,7 +145,7 @@ Xcode 10 快要发布正式版本了,所以有必要了解一下新的改动

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/#35-2018.09.10.md b/Reports/2018/#35-2018.09.10.md
similarity index 99%
rename from Reports/#35-2018.09.10.md
rename to Reports/2018/#35-2018.09.10.md
index c35182229..48046c7fd 100644
--- a/Reports/#35-2018.09.10.md
+++ b/Reports/2018/#35-2018.09.10.md
@@ -159,7 +159,7 @@ Docker用类似git的方式管理了我们对容器的修改,这也就意味

-同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
## 本期编辑
diff --git a/Reports/2018/#36-2018.09.17.md b/Reports/2018/#36-2018.09.17.md
new file mode 100644
index 000000000..f6b1e50d3
--- /dev/null
+++ b/Reports/2018/#36-2018.09.17.md
@@ -0,0 +1,169 @@
+# 老司机 iOS 周报 #36 | 2018-09-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [DCloud 发布又一个跨端开发框架 uni-app](https://mp.weixin.qq.com/s/oujjGXFaK4qc44KWuj0zXw)
+
+随着微信、支付宝、百度陆续发布小程序,手机厂商联盟发布快应用,移动互联网快速向以 js 为核心的动态 App 发展。手机硬件性能日益提升,动态App体验也越来越好。一方面前端工程师迎来历史性的机遇,另一方面又发现开发如此多版本让开发者苦不堪言。
+
+DCloud 大力投入资源为开发者打造动态 App 时代的最佳解决方案:**uni-app**。开发者使用vue技术,开发一次,可以同时生成 iOS、Android、微信小程序。接下来 uni-app 还将覆盖到 H5、其他厂商小程序及快应用。
+
+### [提交 app 适配 iOS 12,watchOS 5, and tvOS 12](https://developer.apple.com/news/?id=09122018c)
+
+现在,可以使用 Xcode10 GM 版本构建您的应用,并对 iOS 12, watchOS 5, and tvOS 12的最新版本进行测试。从2019年3月开始,苹果会要求所有 iPhone 的应用更新都要使用 iOS12 SDK,以支持 iPhone XS Max;而手表的应用更新需要使用 watchOS 5 SDK 以支持 Apple Watch Series 4.
+
+## 文章
+
+### 🌟 🐎 [老司机推荐书单](https://xiaozhuanlan.com/topic/6134790258)
+
+周报编辑们根据各自喜好推荐给程序员的书单。每一本被推荐的书都有它的独到之处,按照自己的兴趣挑几本去买来看看吧。
+
+### 🐎 [你的标签是什么?](https://github.com/SwiftOldDriver/iOS-Weekly/issues/722)
+
+每个人都会被打上标签,可能是正向的善于解决问题、Web 安全专家或者是擅长创新。也可能是负向的粗心、眼高手低。程序员不能一直埋头苦干,要适当建立起自己的标签,尤其对职场新人而言,好的标签会让你脱颖而出,更多的机会会垂青于你。
+
+### 🐢 [Swift for TensorFlow 官方教程](https://github.com/tensorflow/swift-tutorials/blob/master/iris/swift_tensorflow_tutorial.ipynb)
+
+Swift for TensorFlow 是今年的 TensorFlow 峰会上,Chris 团队发布的一项新的技术,旨在为 Swift 提供内置的、first class 的机器学习的能力。Swift for TensorFlow 使用一系列很有趣的技术来实现了同时具备可用性和性能,有兴趣的同学可以进一步了解。同时,Swift for TensorFlow 也提供了 jupyter kernal 得支持,使得可以使用 notebook 来写 swift。
+
+机器学习入门教程最经典就是识别鸢尾花,iris detection。本篇教程就是 Swift for TensorFlow 版本的 iris detection,对 Swift 做机器学习感兴趣的筒子不要错过。
+
+### 🐢 [镣铐之舞:美团安全工程师 Black Hat USA 演讲](https://juejin.im/post/5b9b178ce51d450e5d0aec26)
+
+这是一篇来自美团安全团队的分享。美团安全团队在今年的 Black Hat USA 上做了关于 App Store Malware Automatic Hunting System 的演讲分享。团队设计了一套可自动大规模获取应用样本的 Crawl 系统,通过使用基于树莓派的构建集群来实现沙盒自动分析系统,最终实现了自动化收集样本并对样本进行自动化安全分析的APT攻击捕获及分析系统。
+
+这篇文章中很多概念对于不做安全或者对安全领域接触较少的同学来说比较难理解,但是不妨边搜索概念和知识点边读,可增加一些安全方面的基础概念知识。
+
+### 🐕 [How Apps Adapt to the Series 4 Apple Watch Screen Sizes](https://medium.com/@hacknicity/how-apps-adapt-to-the-series-4-apple-watch-screen-sizes-2be49f8ae8f5)
+
+9 月 21 日新一代 Apple Watch Series 4 就要开始发货了,包含 40、44 毫米两个新屏幕尺寸,文章介绍了 watchOS App 如何适配新的设备:对于 watchOS 4 的 App, watchOS 5 默认兼容,只是还是以老的 38、44 毫米显示,以 Xcode 10 编译后,再辅以适当的调整,就能在不同屏幕尺寸上以实际大小显示。
+
+### 🐕 [JSPatch 的 dealloc 忧伤](http://lingyuncxb.com/2018/01/21/JSPatch%E7%9A%84dealloc%E5%BF%A7%E4%BC%A4/)
+
+有挖过 JSPatch 源码的同学应该都会留意到,它为了让 JS 能够更安全合理地 Hook `dealloc`,做了以下的处理:
+
+1. 调用 dealloc 时 self 不包装成 `weakObject`,而是包装成 `assignObject` 传给 JS,解决了 over-released crash 问题;
+2. 调用 `ORIGdealloc` 时因为 `selectorName` 改变,ARC 不认这是 `dealloc` 方法,所以需要欺骗 ARC,解决了对象正常释放的问题;
+
+这样的处理可谓巧妙,但这位细心的读者却发现了另一个遗留问题 - JS 的 `dealloc` 方法和 `OC` 里面的 `dealloc` 方法会同时被调用。于是他针对这个问题进行了深挖,从 OC 对象的 `dealloc` 原理开始,一步步尝试,最终仅使用几行代码便解决了这个遗留问题。目前该问题已经反馈给 Bang,相信很快便会发版解决。值得一提的是,这是小编看到的第一篇从解决实际问题角度出发,来解读 Runtime 中 `dealloc` 原理的好文,好奇作者解决方案的同学快点开文章链接阅读吧。
+
+### 🐕 [iOS 中的多进程,下拉关闭系统的词典界面(Tweak 开发)](http://iosre.com/t/ios-tweak/12806)
+
+本文作者就下拉关闭系统的词典界面需求的实现过程进行了记录,从发现 `_UIRemoteViewController` 到找目标进程,再到 hook delegate 实现功能。整个过程都比较常规,但是 iOS 多进程这块确实是个冷门,资料也很少,iOS 开发一般是接触不到这块知识的,就算知道,也很难在实际开发中得到运用。不过当作扩展知识了解一下还是很有意思的,特别是文中提到的 Ole Begemann 写的那几篇 [关于 Remote View Controllers 的博文](https://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/)。
+
+### 🐕 [关于 iOS 私有 API 扫描](https://www.jianshu.com/p/24026b30975f)
+
+作者就网易游戏开源的 iOS private api checker 项目,一一阐述了如何构建私有 API 库、该项目又是如何识别 APP 中的私有 API、该方案存在哪些问题。并提出了行之有效的改进建议。
+构建私有 API 库需要先构建 documented API 数据集,而新版 Xcode 的 API 文档不再使用 docSet 这种格式。[这篇文章](https://www.jianshu.com/p/999f4cc7e1fc)分享了 Xcode 9 在 Mac 上存储 documented API 的细节。
+
+> 推荐人:[balloonsys](https://github.com/balloonsys)
+
+### 🐕 [Preparing Your App For iOS 12 Notifications](https://www.smashingmagazine.com/2018/09/preparing-your-app-for-ios-12-notifications/)
+
+iOS 12 带来了一些新的与用户通知相关的功能,如新的授权选项、动态的快速操作与在通知内进行的用户交互。了解并适配这些新特性以助于改进应用通知在 iOS 12 中的体验。
+
+> 推荐人:[RocZhang9673](https://github.com/RocZhang9673)
+
+### 🐢 [一次高效的依赖注入](https://juejin.im/post/5b960cbfe51d450e4f388296)
+
+本文分析了 iOS 目前依赖注入的几个开源库。 并选择 EXTConcreteProtocol 进行了详细的分析,给出了实际项目中遇到的问题与解决方案。
+
+### 🐎 [DRIVING CARS WITH ARKIT](https://martinmitrevski.com/2018/09/13/driving-cars-with-arkit/)
+
+这篇小短文会教你如何利用 ARKit 制作一款增强现实的奥迪 Q7 驾驶 app。利用平面检测模拟真实的驾驶效果,而不至于漂浮在半空中。
+
+### 🐎 [利用 ARkit,eBay 用头部运动控制 iPhone X 屏幕进行购物](https://mp.weixin.qq.com/s/me_uVJYpFsSCT0Yxp7uSMw)
+
+电商巨头 eBay 日前揭晓了一项新技术 HeadGaze,利用了苹果 ARKit 平台和 iPhone X 的原深感前置摄像头(支持 Face ID)来支持残障人士通过头部运动来与 iPhone X 屏幕进行交互,并已经将底层技术开源托管至 GitHub。简而言之,HeadGaze 会通过虚拟触针紧跟用户的头部运动,把游标移向滚轴或其他交互式按钮。系统可检测游标停留在一个位置的时间,并在达到一定阀值时予以触发,实现激活点击操作。
+
+### 🐕 [利用柯里化去除重复代码](https://iweiyun.github.io/2018/09/04/curry-cleancode/)
+
+柯里化是把接受多个参数的函数,变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数,的函数式编程方式,本文通过一个实际案例尝试了使用柯里化来完成对代码的精简,对于理解柯里化是很好的案例。
+
+### 🐢 [JSPatch VS Aspects](http://lingyuncxb.com/2018/01/24/iOS%E6%B6%88%E6%81%AF%E8%BD%AC%E5%8F%91%E7%9A%84%E6%AD%A3%E7%A1%AEHook%E5%A7%BF%E5%8A%BF/)
+
+JSPatch 应该已经无需过多介绍。Aspects 是 iOS 上的一个轻量级面向切面编程(AOP)的库。本文先后介绍了 JSPatch 和 Aspects 如何利用 forwardInvocation 将实现自己的功能,同时介绍了 iOS 上消息转发机制的 Hook 原理。而Hook 是有风险的,那么项目中同时接入这两个库会有什么样的问题呢?文章作者通过实践列出了可能遇到的一些问题。现实中,一个工程往往会接入更多的一些三方库,以及自己的一些功能也可能使用 Hook,所以,在对 Hook 的处理上要格外小心,关于如何正确使用这一点,作者也给出了自己的答案。
+
+## 工具
+
+### [pointfreeco/swift-html](https://github.com/pointfreeco/swift-html)
+
+swift-html 是一款 server side swift 的工具,能够帮助swift使用者在开发服务器后端的时候方便快捷的生成html,从而进行后端渲染页面,并且类型安全,可扩展性强。
+
+## 代码
+
+### [VideoFlint/Cabbage](https://github.com/VideoFlint/Cabbage)
+
+Cabbage 是一个基于 AVFoundation 封装,易于使用和方便扩展的视频编辑框架,能够缩短开发者在短视频功能上的开发时间。
+
+> 推荐人:[vitoziv](https://github.com/vitoziv)
+
+## 专栏
+
+### 🌟 [WWDC18 内参](https://xiaozhuanlan.com/wwdc18)
+
+6 月的时候我们联合一些开发者翻译了一些 WWDC 18 的 session([老司机x知识小集xSwiftGG WWDC 18 专题目录](https://juejin.im/post/5b1d284df265da6e572b3d87)),当时为了尽快呈现一些内容给大家,也只是挑选了一部分 session 讲解。于是剩下的几篇 session 的内容就留到了这个专栏上发布。
+
+如果没有时间看 session 的同学强烈推荐购买支持一下作者们了。
+
+## 音视频
+
+[提交镜像到 DockerHub](https://boxueio.com/series/docker-based-vapor-env/episode/424)
+Docker 提供了一种和 git 类似的机制来管理我们对容器的修改,因此我们也可以利用这种机制来提交和分享镜像。这段视频里,我们就来分享 DockerHub 的用法。
+
+[构建 Vapor 开发环境 1](https://boxueio.com/series/docker-based-vapor-env/episode/425)
+这段视频里,我们和大家分享如何让 Nginx 容器作为一个反向代理,把需要动态请求的部分,转发给 Vapor。
+
+[构建 Vapor 开发环境 2](https://boxueio.com/series/docker-based-vapor-env/episode/425)
+Docker 提供了一个 link 的功能,我们可以使用它把之前创建的 Nginx 和 Vapor 容器连接起来,这样,就有一个最原始的 Vapor 开发环境了。
+
+[关于 iPhone Xs, iPhone Xs Max, iPhone Xr, 和 Apple Watch Series 4 的适配](https://developer.apple.com/videos/)
+苹果官方提供了新的视频,用于指导开发者如何适配新的手机和新的watch,Apple Watch Series 4 堪称超级传感器的集合,因此对于开发者来说需要适配的东西还是蛮多的,建议大家在9月份发布新版app之前都先用`Xcode10-GM`版过一下模拟器,看看有没有明显的问题。
+
+[Building Apps for iPhone XS, iPhone XS Max, and iPhone XR](https://developer.apple.com/videos/play/tech-talks/207/)
+[Designing for Apple Watch Series 4](https://developer.apple.com/videos/play/tech-talks/802/)
+[Developing Complications for Apple Watch Series 4](https://developer.apple.com/videos/play/tech-talks/208/)
+P.S. 我们团队发现如果用 `Xcode10-GM` 打包 IPA,里面的 Assets.car 文件,包含了重复的 png 图片信息,而之前 `Xcode9.4.1` 却没有此问题。`Xcode10-GM` 版的这个 bug,会导致 iOS9.0 ~ iOS9.2 的机子在使用 Assets.xcassets 里面的图片后,发生随机 Crash。
+解决方法有二:要不不使用 Assets.xcassets 而改用 Bundle 取图片(对旧项目改动较大),要不就将 APP 支持的最低版本升级到 iOS9.2 以上。目前已将此 bug 报告给苹果,希望在 `Xcdoe 10 正式版`中得到改善。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [杭州-丁香园招 iOS 开发](https://app.dxy.cn):招中高级 iOS 开发,要求有 Swift 开发经验,简历请邮件至 gp@dxy.cn。
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱) 或这微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#37-2018.09.24.md b/Reports/2018/#37-2018.09.24.md
new file mode 100644
index 000000000..623771522
--- /dev/null
+++ b/Reports/2018/#37-2018.09.24.md
@@ -0,0 +1,182 @@
+# 老司机 iOS 周报 #37 | 2018-09-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Swift 4.2 正式发布](https://swift.org/blog/swift-4-2-released/)
+
+Swift 4.2 正式发布。我们可以通过 WWDC 2018 的 Session [What’s New in Swift ](https://developer.apple.com/videos/play/wwdc2018/401/) 快速了解新特性。Ole Begemann 总结的 [Playground](https://oleb.net/blog/2018/06/whats-new-in-swift-4-2-playground/) 也方便我们上手试验把玩。
+
+### [一本走心的 JS-Native 交互电子书](https://juejin.im/post/5ba03ea25188255c3f6bcc8c)
+
+知识小集团队 @lefe_x @halohily 同学潜心著作的一本学习 JS-Native 交互的电子书,这个专题旨在能够帮助更多的同学掌握 Hybrid 在 iOS 中的应用。整个专题总共分为四章,强烈推荐给大家
+
+第一章 主要介绍 JS 语法,为后续的章节做好铺垫,不过建议读者系统地学习一下 JS,对整个专题的理解有很大的帮助;
+
+第二章 介绍了 JavaScriptCore 这个框架与 OC 间的通信;
+
+第三章 介绍了 WKWebView,以及一些调试技巧;
+
+第四章 主要对前面讲到的知识进行实践,其中 JSPatch 部分理解起来比较吃力,如果读者想深挖 JSPatch可以结合源码一起看本章内容,理解起来更透彻。
+
+### [微信开源基于 mmap 内存映射的 key-value 组件 MMKV](https://github.com/Tencent/MMKV)
+
+微信团队于最近宣布开源 MMKV,这是一个基于 mmap 内存映射的 key-value 组件。而这个组件在微信内部已经使用了 3 年,稳定性上得到了验证。而在性能上,也比传统的 NSUserDefaults 等方案更加出色。并且也移植到了 Android 平台,在这次一起开源。
+
+
+## 专栏
+
+### 🐢 [Swift for TensorFlow, First Class Machine Learning in Swift](https://xiaozhuanlan.com/topic/6123854970)
+
+Swift for TensorFlow 是 Chris 到 Google 之后发布的新项目,目的在为 Swift 提供内建的机器学习能力。整个技术用了非常巧妙的方式,在编译器层面实现了对 TensorFlow 的支持,非常创新。并且从项目的设计思路也能够感受到 Chris 对 Swift 这门语言的一些想法,Swift 绝不简单是客户端或者服务端编程语言,而是一个全新的编程平台,开放优雅的架构使其能够无缝和其他语言进行交互,而且是在类型安全的前提下。
+
+我在 2018@Swift 大会上分享了一这项技术的一些原理和应用,这篇文章是分享的文字版。
+
+Swift for TensorFlow
+
+
+
+### 🐢 [[译]SE-0206 Hashable 加强](https://xiaozhuanlan.com/topic/1470362958)
+
+Swift 4.2 其中一个比较大的改动就是 `Hashable` 协议,对这么一个基础的协议做改动,即使在一年出一门新语言的 Swift 大家族里也几乎是第一次🤷♂️,看到这篇提案的时候我就产生了这么几个疑问:
+
+1. 为什么要用 `inout` 这种大家很陌生的概念?
+2. Hasher 好像是哈希函数的抽象,那为什么它不是一个泛型,而是结构体?那应该怎么去自定义哈希函数?
+3. 而且为什么要去改动这么一个基础协议?之前的协议有哪些不足?
+
+在查阅了一些资料之后,我发现国外对于这件事情的讨论其实也不多,最好的资料还是 Swift-Evolution 的提案,所以特意翻译出来,希望能够帮助大家更好地了解这一次基础协议改动的来龙去脉。
+
+## 文章
+
+### 🐎 [这次 swift 大会分享准备的幻灯片和 demo](https://www.jianshu.com/p/57331c22d788)
+这次 2018@Swift 大会,戴铭的幻灯片惊艳全场,把本身就比较晦涩的编译原理相关的知识,用美轮美奂的漫画体现出来,给人一种耳目一新的感觉。这篇文章讲了一些分享的背景还列出了全部幻灯片的截图,错过大会的同学不容再错过文章。
+
+个人最喜欢的是 AST 那几 p,你们呢?
+
+### 🐎 [Facebook 工作体验之绩效考核](https://mp.weixin.qq.com/s/eJ1ue5l5f0W1jvZ4unJJkA)
+
+本文讨论了 Facebook 和国内公司的业绩考核之间的异同。讲来不同的考核制度本身并没有什么好坏之分,更多的还是在不同环境下取得对公司和员工最有利的情况。
+
+Peak 老师自加入 Facebook 后贡献了好多篇国内和湾区的工作生活比较的文章,对于好奇湾区这边(不代表美国其他地区)码农的工作生活状态的同学,值得一读。
+
+### 🐎 [员工之间可不可以讨论工资收入?](http://mrpeak.cn/blog/salary-share/)
+
+Peak 大神抛出了一个比较有意思和值得讨论的问题,员工之间可不可以讨论工资收入?Peak 大神还贴出了阿里和Facebook在这个问题上的态度对比并附上了自己的见解。不知你们对这个问题又有什么看法呢?
+
+### 🐢 [深入浅出 Swift Numerics](https://github.com/xwu/xwu-swift-numerics)
+
+Swift 社区开发者 [Xiaodi Wu](https://github.com/xwu) 写了一系列文章,介绍了 Swift 中数字类型背后的设计思想(如 Int、Float 等)以及许多 `Numeric Protocols` 间的关系,建议有 Swift 开发经验的开发者们精读。
+
+### 🐕 [FastImageCache 原理](https://mp.weixin.qq.com/s/5rgQjokaUduSuiPKbJIudw)
+
+对于大多数 app 来说,图片存取/编解码都是绕不过去的话题,而这通常会占用相当一部分的计算/存储资源,值得大家反复研究。本文作者分析了 path 维护的 FastImageCache,从 mmap、decoding 和 byte alignment 几个角度来分析其对图片加载性能的优化。
+
+### 🐎 [iOS 12 JS 数组 Bug,可能带来互联网风波,附解决方案](https://juejin.im/post/5ba1c129e51d450e6237da01)
+
+iOS 12 发布了,但很多前端同学却发现 iOS 12 中 WebView 的一个大 BUG ,对数组进行 reverse 操作会导致 webview 将该数组的最后形态进行缓存,关闭页面退出页面都不会清掉,在 StackOverFlow 上也有人探讨,好在博主给了一个解决方案,快来看看吧。
+
+### 🐎 [Capturing Self with Swift 4.2](https://benscheirman.com/2018/09/capturing-self-with-swift-4-2)
+
+Swift 4.2 中 `self` 在 optional binding 中不再作为保留关键字。现在可以忘记 strongSelf 了,直接这样写吧:
+
+```swift
+guard let self = self else { return }
+```
+
+### 🐕 [Adding Padding To A Stack View](https://useyourloaf.com/blog/adding-padding-to-a-stack-view/)
+
+UIStackView 是苹果在 iOS9 中引入的一个新的视图类。Stack View 可以高效的排列一行或者一列视图。在使用中,我们的子 View 很可能是需要动态调整高度的,这时候,我们既可以通过 Interface Builder,也可以通过代码在需要调整高度时候重新布局。但是,实际上,我们可以更简单高效的解决这个问题,就是使用 Readable Content Guides。
+
+### 🐎 [Async/await in Swift unit tests](https://www.swiftbysundell.com/posts/asyncawait-in-swift-unit-tests)
+
+Async/await 一直是 Swift 开发者期待的功能,但是由于在写单元测试的时候需要一些异步测试场景,所以 sundell 通过对 Futures & Promises 的进一步改造实现了一个 await 函数 的作为 Swift 还没支持 Async/await 的折中方案。整个实现思路还是很通俗易懂的。
+
+### 🐕 [What I Learned Making 5 ARKit Prototypes](https://medium.com/@nathangitter/what-i-learned-making-five-arkit-prototypes-7a30c0cd3956)
+
+5 个基于 ARKit2 的原型,用来提升购物体验、给报纸添加视频、观看绘画时增强关键人物,使涂鸦墙能够观看历史,给穿戴设备做屏幕延展。 AR 有非常大的潜力,这 5 个原型也许能激发你的灵感。
+
+### 🐕 [2018 Google 开发者大会现场纪要](https://juejin.im/post/5ba5b94ae51d4527ed0023dc)
+
+Google 今年在上海的 GDD (Google Developer Days) 上周末圆满结束,算是一次做的非常成功的国际公司在国内搞的 Developer 相关的活动。如果你没有去现场参加的话,赶紧跟着去参加了的开发者们去看看 GDD 上的亮点吧。
+
+### 🐕 [What’s new in Swift 5.0](https://www.hackingwithswift.com/articles/126/whats-new-in-swift-5-0)
+
+Swift 的下一个版本是5.0,首要目标就是让 ABI 稳定(存疑,现在还有好几个[issue](https://swift.org/abi-stability/)没动静),另外还有一些比较重要的特性,通过[预设置好的playground](https://github.com/twostraws/whats-new-in-swift-5-0)可以体验这些特性
+* Raw strings:可以将字符串的转义操作变得更好用了
+* Handling future enum cases:switch 操作中,default 的处理通常意味着一些未能处理得很好的逻辑,现在可以在 default 前加上`@unknown`标记,让编译器在编译时产生一个 warning
+* Checking for integer multiples:增加了`isMultiple(of:)`函数,相当于之前的模除操作,譬如`if rowNumber % 2 == 0`跟`rowNumber.isMultiple(of: 2)`等价
+* Counting matching items in a sequence:数组的 count 函数也可以加上一些 filter 操作了
+* Transforming and unwrapping dictionary values with compactMapValues():对于 Dictionary 对象增加了`compactMapValues()`函数,将`compactMap()`和`mapValues()`结合起来,变得更加方便
+
+### 🐢 [iOS 12](https://nshipster.com/ios-12/)
+
+NSHipster 出品,从 API 角度解析 iOS 12 中值得关注的改进。主要包括了以下几部分内容:为重要数据请求提高网络优先级、后台读取 NFC 标签、使用电话号码和电子邮件地址来匹配通讯录、在航空中更新位置、识别平放的设备、输入框中的自动填充新密码和短信验证码。十分推荐阅读。
+
+### 🐕 [操作系统是如何管理内存的](http://limboy.me/tech/2018/09/14/os-memory.html)
+作者针对[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/)这本书中关于内存管理这块的做了一个小结,介绍了操作系统在处理内存管理中遇到的问题和演化方案,帮助读者增加内存管理方面的知识
+* 如果是单进程模型,很简单,一块内存空间是内核的,一块内存空间是进程的
+* 如果是多进程模型,考虑一下上下文切换问题,就需要有 base 和 bounds 来表示如何切换
+* 考虑多进程间使用内存的空间利用效率问题,出现了分段的解决方案
+* 为了解决分段方案带来的内存碎片问题,出现了分页的解决方案
+
+## 工具
+
+### [Xcode 10 小技巧: NSData 的 popover 里可以直接下载内容](https://twitter.com/weichsel/status/1042794107259764736)
+
+Xcode 在 debug 的时候,能够直接查看 `UIImage`、`NSString` 等类型数据,但是一直不支持 `NSData` 的查看。现在 Xcode 10 已经提供了这么一个功能,可以允许你通过预览小窗导出当前正在 debug 的 `NSData` 对象到本地,再进行查看。
+
+## 代码
+
+### [2018 中国 Swift 开发者大会源文件,包括 pdf 和源工程文件](https://github.com/atConf/atswift-2018-resources)
+
+@Swift CON 2018 - 一场面向 Swift 开发者的知识盛宴,已于 09 月 15 日在北京顺利举行。由于各种原因未能去参加的各位同行,现如今可以通过这个开发者大会源文件了解到此次大会的主要内容。
+
+### [Awesome README](https://github.com/matiassingers/awesome-readme)
+
+好的 README 包括但不限于配图、屏幕截图、GIF、文本排版等。这是一个优秀 README 列表,以及一些帮助你写好 README 的工具。
+
+
+## 设计
+
+### [Designing and Developing for Siri Shortcuts](http://blog.maxrudberg.com/post/178153402778/designing-and-developing-for-siri-shortcuts)
+
+作者从代码和 UI/UX 设计角度展示了如何为现有的 app 加入 Siri Shortcuts 功能,包括增加 App Store 截屏、启动屏通知并且在设置界面里着重展示。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱) 或这微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#38-2018.10.08.md b/Reports/2018/#38-2018.10.08.md
new file mode 100644
index 000000000..954fb9476
--- /dev/null
+++ b/Reports/2018/#38-2018.10.08.md
@@ -0,0 +1,184 @@
+# 老司机 iOS 周报 #38 | 2018-10-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [TestFlight 开始支持邀请链接](https://developer.apple.com/news/?id=09262018a)
+
+在今年的 WWDC 中,苹果就已经透露将在下半年推出 TestFlight 的公开链接邀请功能,现在这个功能已经正式开放。
+
+> 另外 [dustturtle](https://github.com/dustturtle) 也第一时间分享了自己的实践成果 - [千呼万唤始出来 - TestFlight public link 功能正式发布了!](https://juejin.im/post/5bac3ba7e51d450e531c9d2c)。
+
+### [Apple’s use of Swift in iOS 12](https://blog.timac.org/2018/0924-state-of-swift-ios12/)
+
+iOS 中使用 swift 的地方在持续增加,在 iOS 12 中包含 swift 的库相比 iOS 11 增加了一倍。
+
+### [Swift 5.0 Release Process](https://swift.org/blog/5-0-release-process/)
+
+Swift5.0 离我们越来越近了,了解一下最近的进展吧
+1. 二进制不向下兼容,容易理解,Swift 新版本就没有向下兼容过
+2. 必须强制迁移 Swift3.0 的代码,不然你只能使用 Swift4.2 来编译了
+3. 现在提供了 Swift5.0 的[尝鲜版](https://ci.swift.org/)
+4. 预计2018年11月16日对于 Swift5.0 是一个很关键的时间结点(真的吗?)
+5. 希望你们会喜欢 Swift5.0 的新编程思想(又变?)
+
+## 专栏
+
+### [iOS 上修改私有方法的几种方式解析](https://xiaozhuanlan.com/topic/1278405369)
+
+iOS 开发中,或多或少都会有遇到修改私有方法的需求,这篇文章总结了目前我们能够使用的方式,并从面试官的角度推荐应聘者应该怎么回答这类开放性问题。
+
+## 文章
+
+### 🐢 [Mirror 的工作原理](https://swift.org/blog/how-mirror-works/)
+
+这篇文章主要介绍了 Mirror 的工作原理,Mirror 简单来说就是用来做类型反射的 API,可以在运行时里获取实例的类型信息,例如 Playground 里的变量数据预览就是基于这一套 API 来完成的。
+
+文章主要分为两个部分,第一部分是元类型的抽象(类型的类型),运行时函数动态派发的实现原理,第二部分就是 enum / struct / class / tupe 四种元类型各自的实现。
+
+通篇看完感觉其实 Mirror 的实现非常直截了当,因为 Swift 的泛型功能要求它必须有足够丰富完整的 Metadata,才能在运行时更好的描述泛型实例的存在,完成函数派发,属性存取和类型转换的工作。
+
+在这么一个背景下,Mirror 的实现基本就是从已有 Metadata 里获取类型数据,然后展示出来,或者是通过 Metadata 定位成员变量的相对位置,然后进行存取操作。
+
+### 🐢 [AR Face Tracking Tutorial for iOS: Getting Started](https://www.raywenderlich.com/5491-ar-face-tracking-tutorial-for-ios-getting-started)
+
+Ray Wenderlich 的又发新教程了。这次是教你如何用 TrueDepth Camera 来做 AR 面部追踪。
+
+和往常一样,他家教程类文章会有非常详细的步骤和截图,带你一步一步的操作,非常适合对文章中涉及的知识领域不是很熟悉的同学们。
+
+另外这篇文章也是免费教程的一部分,所以并不需要进行任何付费。
+
+### 🐎 [Why #if DEBUG Conditional Should Be Avoided in Library Code](http://holko.pl/2018/09/24/compilation-directives-in-libraries/)
+
+文章作者分享了一次自己使用 Carthage 导入自己的库时遇到的坑,来说明了为什么在 SDK 的开发中尽量避免条件编译指令,因为你不知道使用你 SDK 的人的编译环境会有怎样的变数,文章很短,算是一次有趣的小分享。
+
+
+### 🐢 [[译] Metal 渲染管线教程](https://juejin.im/post/5b9dbd76e51d450e877f3780)
+
+Apple 在 2018 的 WWDC 上正式宣布 OpenGL ES 标记为 deprecated,推荐使用 Metal 来做 3D 渲染,很有勇气。在细致的了解 Metal 后,就能发现苹果的勇气不是没有原因的,Metal 几乎最大限度的利用了 iOS 的硬件特性来提升性能,是 iOS 的首要选择。
+
+本篇文章的文风很像很多经典的 OpenGL 教程,从渲染的概念,流程讲起,并一步步教你如何画出第一个三维的物体,强烈推荐有兴趣的同学仔细阅读。
+
+> 推荐人:[史前图腾](https://juejin.im/user/5a311af051882554bd510dd0)
+
+### 🐢 [beeshell:开源的 React Native 组件库](https://mp.weixin.qq.com/s/c1WId0Rr4m7hUOa2HDGnXg)
+
+文章介绍了美团所开发的基于 React Native 的组件库,提供了一系列基础 UI 组件,包括按钮、弹窗、表单、输入框等等,覆盖了 iOS 和安卓两端,并分析了一些设计理念。
+
+
+### 🐕 [从 FE 视角看大前端](https://zhuanlan.zhihu.com/p/45421800)
+
+大前端是现在比较流行的话题与方向,相信也有很多移动端的同学对这个方向有很浓厚的兴趣,而这篇文章的目标阅读群体刚好适合对前端 FE 感兴趣的 Native 开发同学, 聚焦在 PC 和 H5 浏览器层面。可以让你对前端开发有全景方式的了解, 以及引发大家的兴趣。很多 native 开发可能苦于前端众多的名词,众多的框架不知从何下手,这篇文章刚好适合你。
+
+### 🐕 [UIFieldBehavior](https://nshipster.com/uifieldbehavior/)
+
+文章以悬浮框为例,讲解了 iOS 物理引擎 UIKit Dynamics 中的 UIFieldBehavior 的相关内容。首先描述了 Field Behaviors 是什么,接着讲解了 Spring Fields 怎么用,最后结合 Behaviors 的一些特性实现了一个适用于开发调试的悬浮框。
+
+> 推荐人:[WXGBridgeQ](https://github.com/WXGBridgeQ)
+
+### 🐕 [巧妙实现 debugOnly 函数](https://kemchenj.github.io/2018-09-24/)
+
+作者在学习 Vapor 的源码看到一段不需要宏定义的 debugOnly 函数实现。代码如下:
+
+```Swift
+func debugOnly(_ body: () -> Void) {
+ assert({ body(); return true }())
+}
+```
+
+对于大部分项目来说,这个功能看似没有什么用处,但是仔细考虑一下,对于一个可以被任何一个项目依赖的 SDK 来说,这个 debugOnly 实现可以说是很完美了。
+
+### 🐢 [Bloom Filters and Swift 4.2](http://khanlou.com/2018/09/bloom-filters/)
+
+文中实现了 Bloom Filter,并使用了 Swift 4.2 中 Hasher 新特性来优化代码。
+
+### 🐕 [驴妈妈客户端频道页模块化设计思路](https://juejin.im/post/5bad0632f265da0ab41e62fe)
+
+对于做偏运营类的应用开发,有一项很重要的技术需求就是能够做到对应用内容进行实时更新,而且是越灵活越好。本文就详细介绍了驴妈妈客户端团队在 SOLID 原则的指导下,重点围绕面向接口、数据驱动、模块隔离这三个点设计了适合自身业务场景的模块化框架。它既满足了缩短内容上线周期的需求,也为创建一个统一规范的业务组件库提供了思路和方向,同时框架的整体设计也是非常值得参考和学习的。
+
+### 🐕 [INSIDE AUDIOKIT SYNTH ONE: A BRIEF TOUR FOR DEVELOPERS](https://audiokitpro.com/inside-audiokit-synth-one/)
+
+本文的大部分内容是作者在对 Synth One 应用添加 AUv3 扩展时的开发笔记。后来他为了分享自己捣鼓开源项目 [AudioKit](https://github.com/AudioKit/AudioKit) 和 [Synth One](https://github.com/AudioKit/AudioKitSynthOne) 的经历,就写了这篇文章,也希望借此帮助那些想要做类似 iOS 音乐合成器开发的人能够快速了解框架内部的设计。
+
+### 🐎 [代码评审的不可能三角](https://juejin.im/post/5ba99fa35188255c8138f4d2)
+
+Code Review 是保证代码质量的重要手段之一,但许多研发团队中它常常由于各种原因并未得到真正的落地。为什么会这样呢?本文作者用一个非常简单的观点理解了这个现象,并据此给出一点优化的想法。希望本文的想法对同样被评审困扰的同学有帮助 :)
+
+### 🐕 [利用函数组合提升代码可维护性](https://iweiyun.github.io/2018/10/03/func-compose/)
+
+在平时的开发中,我们可能会遇到一些场景,开发起来,代码写的很繁琐,例如文中作者举的例子:
+
+```Swift
+process1(_ param: String) -> String
+process2(_ param: String) -> String
+process3(_ param: String) -> String
+process4(_ param: String) -> String
+```
+
+这种情况,如果直接采用函数式编程,可读性又不会太好。而为了重构让代码变得具有更好的可维护性,作者利用函数的组合来解决这个问题。除了上面函数签名致的例子,作者还提到了函数签名不一致,以及异步操作这两种情况的解决方案。
+
+> 推荐人:[matthew](https://github.com/matthewyan)
+
+### 🐎 [MMKV 中的简单 LRU 缓存(LRUCache)](https://mp.weixin.qq.com/s/KbUHec1_sMiV1S5V-9QxlQ)
+
+本文简明地分析了开源库 [MMKV](https://github.com/Tencent/MMKV) 中 LRUCache 的实现。MMKV 中的 LRUCache 实现简单易懂,文章中的源代码也加上了注释,大家看一遍这篇文章就能明白具体的实现原理。
+
+### 🐕 [Migrating to Unified Logging, Swift Edition](https://www.bignerdranch.com/blog/migrating-to-unified-logging-swift-edition/)
+
+本文介绍了一种更优雅的打log方式,使得开发人员不要再混乱地管理log代码
+1. 正确对待 OSLog,他本来就帮你分了 log 的等级
+2. Console.app 能够帮你更好地查看客户端的 log (如果你用的是 os_log 的话)
+3. 尽量使用 os_log
+4. 更多应该注意的细节
+
+
+## 代码
+
+### [andreamazz/SubtleVolume](https://github.com/andreamazz/SubtleVolume)
+
+SubtleVolume 是一个音量条组件,也支持在 iPhone X(S/R) 的刘海上做文章,如果你的播放器需要一个自定义音量条,不妨看看它。
+
+## 设计
+
+### [一定要会的Sketch设计方法和工作流](https://boxueio.com/series/sketch-basics)
+
+泊学关于 Sketch 入门相关的视频课程。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#39-2018.10.15.md b/Reports/2018/#39-2018.10.15.md
new file mode 100644
index 000000000..67086ba3f
--- /dev/null
+++ b/Reports/2018/#39-2018.10.15.md
@@ -0,0 +1,135 @@
+# 老司机 iOS 周报 #39 | 2018-10-15
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Swift in 2018](https://www.jetbrains.com/research/devecosystem-2018/swift-objc)
+
+JetBrains 针对 Swift 编程生态做了一个调查。结果显示只使用 Swift 的开发者占比 54%,混编的占 16%。83% 的 Swift 开发者在使用 4.0 或者以上的 Swift 版本。
+
+### [仅 23 天,iOS 12 安装率超过 50% ](https://9to5mac.com/2018/10/06/ios-12-now-installed-on-50-of-devices-outpacing-ios-11/)
+
+iOS 12 推出仅 23 天装机量超过 50%,而 iOS 11 达到这个成绩用了超过一个月。相比 iOS 11 发布后的 bug 满天飞,iOS 12 的改进赢得了用户口碑。
+
+## 文章
+
+### 🐎 [质量监控 - 卡顿检测](https://juejin.im/post/5bb09795f265da0ac84946e0)
+
+卡顿检测是 APM 里体验是否流畅的重要标准,被大家熟知的卡顿检测方式通常是基于主线程是否执行任务过载来进行。这篇文章较为系统地分析了卡顿检测的各种手段及其实际效果和性能损耗,除了借助 Instruments 工具,在代码侧还有 FPS、Ping、Runloop、Stack Backtrace 和 msgSend observe 5 种手段。
+
+### 🐎 [It’s wrappers all the way down](https://oleb.net/2018/lastindex-reversed/)
+
+"Swift 标准库目前的求值策略是:如果一个操作的惰性求值是无需消耗性能的话,那就应该让它成为一个惰性操作。如果惰性求值的实现反而会消耗性能的话,那应该就让它及早求值,如果它有一种等价的 lazy 实现的话,那就应该通过 .lazy 去实现。"
+
+基于这种求值策略,我们在对数组进行一些复杂的操作时,更 Swifty 的方式是考虑如何为这一种操作创建合适的 wrapper。这篇文章带着我们重新实现 `lastIndex(of:)` 函数,为这一种集合操作创建 `ReversedCollection2` 的抽象,并解释 `joined` / `reversed` 之类的集合操作的原理。
+
+### 🐕 [如何实现可以获取最小值的栈?](https://mp.weixin.qq.com/s/tLaRUCEgtQwoFdELZlcsZA)
+
+这是前几周微博上和微信大家争相转发的一篇公众号文章。文章用漫画的形式讲了一道算法题目的解题过程、文中一步一步逐渐深入,逐渐优化,最后得出最优解。
+
+其实在真正的面试过程中,情况也是一样的。面试官很多时候并不希望你能一次就给出最优解,反而是期待你能从最简单的暴力解法开始,一步一步优化出最优解。面试中很多同学一旦遇到了自己曾经准备过的题目,往往会选择直接写出最优解,殊不知很多时候反而会得到一个负面评价,原因是你曾经做过了这道题,但是却没有主动让面试官换一题新的,不够诚实。这种时候,跟着面试官的思路,从暴力解法开始一步一步优化,最后得出最优解,反而更能体现你的解决问题的能力。
+
+没读过这篇文章的同学不妨读读文章,来看看解题应该是个怎么样的思考过程。
+
+### 🐕 [[译] 揭秘 iOS 布局](https://sq.163yun.com/blog/article/200743376636538880)
+
+iOS 的布局系统是每个 iOS 工程师都需要具备的基础知识,我们可能每天都在跟诸如 setNeedsLayout()、updateConstraints() 之类的方法打交道,但是可能并没有形成一个非常系统的认识。本文作者详细讲解了每个方法的作用以及不同方法之间的联系,相信能带给大家一个相对全面的认识,加强对布局原理的理解。
+
+
+### 🐢 [iOS Memory Deep Dive](https://www.jianshu.com/p/dad9f27e412e)
+
+这是一篇内容非常详实的文章,作者围绕着内存这个话题,从现代计算机操作系统的虚拟内存机制一步步讲到 iOS 的虚拟内存机制,最后给出了在实际开发中一些如何高性能运用内存的建议。
+
+### 🐕 [Access Control Management with Swift](https://medium.com/ios-os-x-development/access-control-management-with-swift-cc3c3d68cbc3)
+
+本文介绍了用户权限管理的抽象方式,构建了一个基于用户属性的访问控制框架(Attribute Based Access Control),利用了 swift 中 protocol 的强大功能,以策略(Policy = Role ShouldBeAbleTo Action when Condition)的形式,对需求进行建模。该框架可以以非常小的变更成本,增加新的策略来维护权限要求,最后产生的判断用户权限的 API 也非常优雅。
+
+### 🐢 [How to Write Clean Code](https://medium.com/quick-code/how-to-write-clean-code-bbcf35ac1aef)
+本文是一篇介绍 Code Review 工作流程的文章,从以下四个维度介绍了作者的经验
+1. Code Review 的必要性和最佳时间点
+2. 如果已经准备提交 Review ,注意代码规模(太多别人看不来,太少看不出端倪)
+3. 执行 Code Review
+4. Code Review 的例子
+总体而言,Code Review 应该是审查代码内容、代码逻辑和安全边界,如果可以的话连测试用例也一起进行 Review,对于代码风格类的东西应该借助 Checkstyle、TSLint、Baseline、Prettier 等工具完成,而 Review 的记录应该保存在一个平台上以供参考,可以使用 Reviewable、Gerrit、GitHub 等工具
+
+### 🐕 🚧 [On Learning to Code (for 2019)](https://medium.com/coderbyte/on-learning-to-code-for-2019-aa086284a218)
+
+通过[谷歌 learn to code 趋势](https://trends.google.com/trends/explore?date=all&geo=US&q=learn%20to%20code,learn%20coding)可以看出从 2012 年开始人们学习编码并成为职业人员的趋势开始有所增长。作者就自己从业 7 年的经验,给大家分享作者认为很重要的三点。
+1. 学习的初始编程语言应与您的目标保持一致
+2. 计算机科学≠软件工程
+3. 技术面试并不是完美的
+
+
+## 工具
+
+### [JSDebugger 一款iOS的动态调试器 ](https://github.com/SatanWoo/JSDebugger)
+
+一款可以动态在 iOS 中执行调试代码的工具,原理是利用 JavascriptCore 与强大的 iOS Runtime 还有很多其他的 dynamic call 方式来结合形成的一套可以动态调试 iOS app 的工具。工具内的代码堪称对 JSCore 还有 iOS Runtime 学习的样本,值得一看,值得一学
+
+### [Sizes](https://github.com/marcosgriselli/Sizes)
+
+Sizes 这款工具可以根据不同 iPhone/iPad 设备及尺寸规格、横竖屏、字体预览界面显示效果,省去同时打开很多模拟器并来回切换的麻烦,提高布局测试的效率。
+
+## 代码
+
+### [smoke-framework](https://github.com/amzn/smoke-framework?utm_source=gold_browser_extension)
+
+SwiftNIO 的推出被视作 APPLE 终于肯“认真对待” server-side swift 的标志。目前各大 swift 服务端框架都纷纷接入了 SwiftNIO 的支持。简单的总结 SwiftNIO 就是:很强。
+
+smoke-framwork 是 Amazon 推出的 server-side swift 的框架,默认使用 SwiftNIO 来做网络层,并且支持 OpenAPI 这样的代码自动生成工具。Amazon 作为行业主要是云服务提供商,这个发布是极具指导意义的,代表 swift 真正被服务端市场所接纳、认可。虽然目前针对 smoke-framework 的评测还不多,但基本可以确定的是该框架会和 Amazon 的 AWS 生态有较好的融合,这对于绝大多数公司而言绝对是利好。
+
+还等什么呢,学就 vans 了。
+
+> 推荐人:[LeeCenY](https://github.com/LeeCenY)
+
+### [Logan](https://github.com/Meituan-Dianping/Logan)
+
+对于一个 App 来讲,日志的收集、上报、查询是非常重要的。而目前在各个公司中,对日志的处理大多并没有形成一套完整的体系,都是针对不同的日志类型,如crash、性能、打点等等进行单独的处理。近日,美团点评开源了移动端基础日志库 Logan ,Logan 是一个功能完善、无侵入的日志框架,解决了很多移动端日志方面的痛点,并且拥有较好的性能,可以很方便的接入。
+
+## 音视频
+
+### [NSSpain](https://vimeo.com/nsspain)
+
+一份来自西班牙 Cocoa 开发者的视频合集,最近一篇就来自 Mattt 大神,同时,作为英语听力材料也是很棒的说。
+
+### 🚧 [SwiftConf '18](https://www.youtube.com/playlist?list=PLgUjQUYKwG_hkD2ZcfAs7bTZwbEtAnNFs)
+
+Swift Conf 是欧洲技术爱好者组织的 Swift 大会,今年大会的主题演讲视频在大会完成之后立刻放了出来,里面包括一些今年比较火的主题,例如机器学习,ARKit,Swift ABI 稳定,Swift 服务端开发等,有兴趣的同学可以看一下。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/#4.md b/Reports/2018/#4.md
similarity index 100%
rename from Reports/#4.md
rename to Reports/2018/#4.md
diff --git a/Reports/2018/#40-2018.10.22.md b/Reports/2018/#40-2018.10.22.md
new file mode 100644
index 000000000..e7a694fb9
--- /dev/null
+++ b/Reports/2018/#40-2018.10.22.md
@@ -0,0 +1,91 @@
+# 老司机 iOS 周报 #40 | 2018-10-22
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [New LSP language service supporting Swift and C-family languages for any editor and platform](https://forums.swift.org/t/new-lsp-language-service-supporting-swift-and-c-family-languages-for-any-editor-and-platform/17024)
+
+这应该是过去一周 Swift 社区最大的新闻,Apple 将主导一个新的开源项目,来为其在 Xcode 生态中的 Swift 和 C family 的语言添加 LSP 的支持,这意味着之后在 VS Code 上写 Swift 也能享受自动完成,定义跳转等功能。目前来看,Swift 已经成为全域通用型程序设计语言,但目前对于非 Apple 生态下的 Swift 开发的工具体验并不友好,Apple 此举无疑对于 Swift 社区是重大福音。
+
+### [Photoshop for iPad hands-on: an exclusive look](https://www.theverge.com/2018/10/15/17969754/adobe-photoshop-apple-ipad-creative-cloud)
+
+Adobe 在近期的 Max 大会上发布了 Photoshop iPad 版本的预览版,正式版将在 2019 年发布。The verge 进行了评测,结合月底苹果的发布会,随着全面屏 iPad Pro 的更新,可能会有一系列生产力 app 随之发布。
+
+
+## 文章
+
+### 🐕 [SwiftOldDriver 精选: Diff 算法在 iOS 中的应用(一)](https://xiaozhuanlan.com/topic/6921308745)
+
+文章来自 [SwiftOldDriver 精选](https://xiaozhuanlan.com/olddriver-selection),将是一个系列,本文是开篇:讲 Diff 算法的一些基本概念。
+> 在计算机领域中,Diff 是一个很重要的概念,被广泛的运用于各式各样的场景。比如说,React 利用 Diff 优化 Dom 刷新导致的性能问题;Git 借助 Diff 算法实现了版本之间的差异化对比;腾讯 Tinker 热修复借助 Diff 算法生成 patch 包等。
+
+### 🐎 [Xcode 10 Library Tips](https://useyourloaf.com/blog/xcode-10-library-tips/)
+
+相信不少人已经更新到了 Xcode 10。Xcode 10 的 UI 控件窗口从右下角挪到了右上角。默认的使用逻辑是点开后,拖拽一个控件到界面上控件窗口会自动消失。如果一个页面需要连续拖几个控件就会很痛苦。所以分享一个重要的 tip:**按住 option 建点击弹出控件窗口的按钮,窗口就会常驻**。
+
+### 🐎 [拍照聚焦和曝光,AVFoundation 简明教程](https://juejin.im/post/5bc2123ee51d450e6c75157d)
+
+这是利用 `AVFoundation` 实现拍照、聚焦和曝光等功能后的一篇总结文章,包含代码和示例,对有这方面应用需求的朋友可以花点时间看看。
+
+### 🐕 [Unleashing the power of asset catalogs and bundles on iOS](https://rambo.codes/ios/2018/10/03/unleashing-the-power-of-asset-catalogs-and-bundles-on-ios.html)
+
+对于 iOS 开发者来说,`Bundles` 和 `Asset catalogs` 应该是再熟悉不过了。文章介绍了一些高级用法,特别是利用 Asset Catalogs 存储一些配置文件,可以给不同的设备配置不同的值,打开了另一个世界。文末还结合 `Bundles` 和 `Asset catalogs` 介绍了一个实际 App 中的使用场景。
+
+### 🐕 [Tricky UIViewController transition animations](https://medium.com/rosberryapps/tricky-uiviewcontroller-transition-animations-59131b540b33)
+
+目前有很多为初学者准备的简单过渡动画教程,但鲜有为高级开发者准备的。在这篇文章里,作者图文并茂地分享了他最近实现的几个复杂过渡动画,以及几个他在实现过渡动画时的小技巧。
+
+### 🐕 [揭秘Flutter Hot Reload(原理篇)](https://juejin.im/post/5bc80ef7f265da0a857aa924)
+
+本文介绍了 Flutter 的`热重载(HotReload)`的实现原理,如果有兴趣自行实现`热重载(HotReload)`特性的同学可以关注一下。
+* Flutter 热重载的关键代码位于`/flutter/packages/flutter_tools/lib/src/run_hot.dart`
+* 在需要重新加载时,扫描有修改的文件,通知 UI 线程重绘 View 树
+* 在 Flutter 中,因为 Dart 代码是工作在自己的 VM 下,所以 UI 层的 reload 是通过服务注册的方式来跟外界进行打交道的
+
+### 🐕 [TimeInterval, Date, and DateInterval](https://nshipster.com/timeinterval-date-dateinterval/)
+
+作者讲述了 TimeInterval、 Date、 DateInterval 的历史由来。使用这些 API 的同时了解这些有趣的历史,不失为一个愉快的过程。
+
+## 代码
+
+### [Panda - 基于 Swift 的 Autolayout 实现](https://github.com/nangege/Panda)
+
+使用 Swift 重新实现 Cassowary 算法、不依赖 UIView 的 Autolayout 机制,使得 Layout 和渲染都可以在后台进行。抛去多线程的影响,算法本身的效率也是略高于 Apple 的实现,即使不用的话,也可以通过源码了解 Autolayout 内部的运作原理。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@没故事的卓同学](https://weibo.com/1926303682/profile),[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#41-2018.10.29.md b/Reports/2018/#41-2018.10.29.md
new file mode 100644
index 000000000..2d833ca2c
--- /dev/null
+++ b/Reports/2018/#41-2018.10.29.md
@@ -0,0 +1,157 @@
+# 老司机 iOS 周报 #41 | 2018-10-29
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 小专栏
+
+### [[译] Swift 标准库源码阅读指南](https://xiaozhuanlan.com/topic/8732549601)
+
+对于 Swift 开发者来说,Swift 标准库的开源可以说是很值得高兴的事情,因为我们可以在标准库中学到很多优秀的设计以及了解具体的实现逻辑。当然,很多人可能和我一样,不知道如何在本地搭建一个可编译的 Swift 标准库。这篇文章就提供了一个很通俗易懂的教程,如果你对阅读源码感兴趣,可以借助这篇文章,在自己的电脑搭建一个 Swift 标准库项目,然后在闲暇之余看一看里面的代码。
+
+## 文章
+
+### 🌟 🐕 [iOS 内存管理研究](https://medium.com/@jasonyuh/ios-%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E7%A0%94%E7%A9%B6-9bf37fc209c6)
+
+来自周报编辑 Jason Yu 同学的大作。
+
+虽然现在 iOS 设备的内存容量越来越大,很多时候开发者也不再需要去考虑内存占用的问题。但是,当产品越来越大,功能越来越复杂的时候,内存优化依然会成为一个避不开的问题。
+
+本文介绍了 iOS 内存管理的一些基本知识,同时也涵盖了在解决 OOM 问题时候的一些小技巧。若是你对 iOS 的内存优化依然存在一些问题,相信读完文章能让你有更加清晰的了解。
+
+### 🌟 🐢 [iOS 系统中导航栏的转场解决方案与最佳实践](https://mp.weixin.qq.com/s/CQ-uUJuX-nlPrM_tHBdbNQ)
+
+在 App 开发阶段,涉及到导航栏样式改变的需求时,经常会遇到转场效果不佳或者与预期样式不符的“小问题”。本文由美团技术团队出品,详细讲解了 UINavigationBar 的生命周期、导航栏样式转换的时机,同时给出了相关最佳实践,建议仔细阅读。
+
+### 🌟 🐢 [iOS UI Automation Tests at Babylon](http://ilya.puchka.me/ios-ui-automation-tests-at-babylon/)
+
+UI 自动化测试是非常不好做的,如果拿捏不准很容易导致它变成投入产出比低、维护成本高、稳定性差的一个失败项目。所以在使用自动化测试验证产品功能的同时,也要投入人力在解决技术本身的问题上做深入研究。本文就描述了他们在使用自动化测试时遇到的问题,以及如何解决的。可以看出他们在处理测试场景失败率高和测试效能低这些问题上有自己的最佳实践,特别是对网络请求这块问题的处理思路,非常值得借鉴。要想把自动化测试做好或者正打算做自动化测试的团队可以仔细研读参考下。
+
+### 🐎 [【QCon2018】Flutter & Dart三端一体化开发](https://juejin.im/post/5bcd470e6fb9a05d2469f723)
+
+Flutter 可以说是 2018 年移动开发领域最热的技术, 不论是跨平台+独立渲染的工作机制,还是 Google 积极推广的下一代移动 OS:fuchsia 的核心开发框架,都为 Flutter 赚足了眼球。而闲鱼作为国内第一个认真使用 Flutter 的团队, 为 Flutter 社区带来了非常多有价值的内容。本文介绍了闲鱼目前正在践行的“三端一体化开发”概念。什么意思?就是不仅通过Flutter 实现 iOS,Android 端都用Dart 来开发,而且还使用 Dart 来构建微服务的胶水层,由客户端开发同学自己构建需要用到的服务与接口,并且通过一系列工具链的完善提升开发效率。当然,任何听起来过于优雅的方案都免不了会踩坑,不过可以预见的是这套架构在绝大多数场景下能够显著提升整个业务迭代的效率。(麻麻再也不用担心客户端和后台 debug 时互相甩锅了)。
+
+当然,这样“胶水层”要 work 的前提是,有一套很优雅鲁棒稳定的底层服务与接口,能够让胶水层中各种组合与调用,这一点对于目前国内很多野蛮生长的互联网公司来说还是挺难的。
+
+
+### 🐎 [Flutter瘦身大作战](https://juejin.im/post/5bd2ac975188252928653585?utm_source=gold_browser_extension)
+
+这篇文章依然是闲鱼团队带来的 Flutter 使用经验,从 iOS 的编译产物构成角度,深度探讨了如何对 Flutter 项目进行瘦身优化。从文章中可以看出,除了一些常规的编译指令优化,符号文件移除,资源精简等方面,显示的进行类型转换也会导致包大小的增加,看起来主要是编译系统自动增加的一些异常处理导致的。
+
+
+### 🐎 [从爬虫攻击者角度谈客户端 API 安全设计](https://mp.weixin.qq.com/s/yv9Ph_8pzej3Wasbsc-fXQ)
+
+本文介绍了基本的 API 被逆向的实例,提醒开发者需要多注意安全防护。
+常规的 API 安全,需要做好安全保护,见招拆招,加大逆向难度:
+
+- `Android` 必须混淆加固,防止源码简单被逆(iOS混淆作为可选项)
+- 请求使用 `HTTPS`,防止内容被抓包,安全要求高的,可以开启**双向校验**,需要注意证书的**过期**问题,做好**证书更新功能**。证书内容最好以**字符串**的方式写入到程序内,以防止文件容易被解压得到
+- 请求携带**签名**,**签名**算法通常使用 `token` + `params` + `盐值` 进行算法计算,算法最好使用 `C/C++` 编写,并且混淆加固,防止被轻易破解进行篡改或者伪造请求
+- 对**异常请求**进行限制,如:`ip` 在短时间内大量访问,请求重复提交
+- 通过 `Cookie Session/OAuth/JWT` 等方式进行鉴权校验,进行权限管理(可阅读下方链接深入了解)
+
+延展阅读:
+- [深入聊聊微服务架构的身份认证问题](http://www.infoq.com/cn/articles/identity-authentication-of-architecture-in-micro-service?spm=a2c4e.11153940.blogcont593230.23.2b0b19e51HRJAx)
+
+### 🐕 [Best strategies for configuring multiple environments in Xcode projects](https://kenb.us/best-strategies-for-configuring-multiple-environments-in-xcode-projects)
+
+在 Xcode 项目中配置不同环境,很多人会选择添加 Target,但这并不是一个很好的方法,太重了,你需要维护多个 Target 及它们的 Info.plist。最好的策略是添加新的 Configurations,然后给其设置该环境下的 xcconfig 配置文件。还能在 Build Settings 里为 Configuration 设置不同的 bundle identifier、产品名称,应用图标,使它们能同时运行在一个手机上,并得到很好的区分。
+
+### 🐕 [将 75000 行原生 iOS 应用程序移植到 Flutter 后,结果太惊讶!](https://www.toutiao.com/i6615151835814560264/?tt_from=dingtalk&utm_campaign=client_share&wxshare_count=2&from=timeline×tamp=1540228468&app=news_article&utm_source=dingtalk&isappinstalled=0&iid=42369912095&utm_medium=toutiao_ios&dtshare_count=1&group_id=6615151835814560264&pbid=6615388314311558670)
+
+原文:[Porting a 75,000 line native iOS app to Flutter](https://medium.com/flutter-community/porting-a-75-000-line-native-ios-app-to-flutter-57c6571c57b4)
+
+吐槽一下翻译文的标题,浓浓的国内枪文的感觉。但是,讲回来这篇文章本身的质量还是非常不错的。
+
+文章作者是澳大利亚的 Easy Diet Diary App 的作者。他们之前有 iOS 版本,也一直计划出一个 Android 版本,鉴于两个代码库的复杂度一直没有施行。
+
+在进行了 Flutter 重构之后,作者发现代码量相对于之前 Objective-C 和 Swift 混编有了很明显的下降。大部分少掉的代码量来自于 Storyboard 被 Widget 替换,这也是 Flutter 从一开始就在设计上的一个优势。
+
+文章对还没尝试过 Flutter 的开发者来说,是个可以借鉴的参考。
+
+### 🚧 🐕 [Building an iOS App Without Xcode’s Build System](https://medium.com/@vojtastavik/building-an-ios-app-without-xcodes-build-system-d3e5ca86d30d)
+
+本文主要介绍了一个简易 App 的构建流程。
+
+其并非一个纯理论的构建描述,而是将整个过程分解成多个步骤,主要分为编译源文件、编译&拷贝资源文件、拷贝 Info.plist、拷贝 Swift 运行库、签名和安装。文中作者有心地附注了相应脚本以及相关原理,读者可以跟着作者,完整实验作者的每一个步骤,更加深刻地了解到一个 App 整体的构建流程。另外,在文末作者留了几个可继续实验钻研的方向,可供读者继续深入探究。
+
+文章对于未了解过 App 构建流程的开发者来说,是个不错的参考。
+
+### 🐕 [从汇编代码探究 NSClassFromString 实现](https://xiaozhuanlan.com/topic/5781026934)
+
+虽然在 iOS 中,Foundation 库是不开源的,但是可以通过一定的方法,取得其编译后的汇编指令,对于有一定汇编知识的人来说,可以大致推断出某些接口的大体实现细节。本文作者通过开发中遇到的一个问题,刨根问底,对于 `NSClassFromString` 这个方法的具体实现进行了细致的分析。
+
+诚然,iOS 的各种官方闭源框架里,我们不可能一个一个接口去推断其实现。但当遇到具体困扰我们的问题时候,我觉得我们正需要本文作者那样,可以深入研究的精神。通过阅读本文,相比于知道 `NSClassFromString` 的实现细节,了解如何通过汇编来推敲接口的实现细节更加重要一些。
+
+### 🐕 [SwiftSyntax](https://nshipster.com/swiftsyntax/)
+
+[libSyntax](https://github.com/apple/swift/tree/master/lib/Syntax) 是 Swift 项目的工具库,目前被用于 Swift 项目的迁移工作。通过直接操作 AST 的方式,生成结构化的代码。而 [SwiftSyntax](https://github.com/apple/swift-syntax) 则是 libSyntax 的封装,为我们提供了 Swift 类型安全的方式,来操作和生成代码。
+
+Mattt 在文章前半部分主要讲了什么是 AST 以及 SwiftSyntax 如何通过 AST 生成代码,在文章后半部分描述了如何通过 SwiftSyntax 生成 Swift 代码、如何通过 SwiftSyntax 替换 Swift 代码以及如何通过 SwiftSyntax 实现 Swift 代码高亮的功能。
+
+### 🐎 [Dealing with Swift toolchain](https://blog.krzyzanowskim.com/2018/10/11/dealing-with-a-swift-toolchain/)
+
+文章重点介绍了各系统下如何安装 Swift toolchain、不同版本的 Swift 如何共存?以及各执行文件之间的关系,如 `swift-build`, `swift-package` 和 `swift-run`。
+
+### 🐕 [Using PromiseKit](https://agostini.tech/2018/10/08/using-promisekit/)
+当你需要连续地执行多个异步过程时,总会无可避免的出现地狱回调。为此,PromiseKit 是一个不错的解决方案。本文从实际的案例出发,为你深入浅出的讲解了如何优雅的使用它,建议阅读。
+
+### 🐎 [通过 internal 隐藏内部属性](https://holko.pl/2018/10/08/internal-modifier/)
+
+这篇文章介绍了作者在封装数据库时遇到的问题——如何处理 public 类型的 internal 属性,让外部调用者可以在无法得知 internal 属性的同时生成这个 public 类型的实例。在暴露必要接口的同时隐藏实现细节,是一件不容易做对的事情,文章很简短,希望大家看完之后可以更好地处理类似的接口设计问题。
+
+### 🐢 [从Xcode10不再支持libstdc++说起](https://juejin.im/post/5bcff7b1f265da0adc1909e7)
+
+Xcode10起,苹果摒弃了对 libstdc++ 库的支持转而支持 libc++ 库。本文对 Xcode 中的 C++ 标准库进行了深入的研究。值得对编译器话题和 C++ 有兴趣的读者阅读。
+
+### 🐕 [Prefetching images size without downloading them [entirely] in Swift](https://medium.com/ios-os-x-development/prefetching-images-size-without-downloading-them-entirely-in-swift-5c2f8a6f82e9)
+
+如果在处理自定义布局时遇到需要远程加载的图片,很容易出现先有鸡还是先有蛋的问题——需要为图片预留出合适的空间,但不下载图片就无法知道它的尺寸。如果一边下载一边调整布局,这些元素就会出现和 web 一样胡蹦乱跳的滑稽效果,直到下载结束才能停下来,从而导致糟糕的 UX/UI 体验,让用户大感失望。在这篇文章里,作者会教你如何在显示图片之前预加载图片的尺寸信息,以便用在 UICollectionView/UITableView 的 pre-fetching 方法中。
+
+## 工具
+
+### [iOSLocalizationEditor](https://github.com/igorkulman/iOSLocalizationEditor)
+
+通常 iPhone 上的一些应用需要支持多国语言,这要确保所有内容都已翻译,任何语言都不能丢失任何字符串,这是一件比较痛苦的事情。而 `iOSLocalizationEditor` 是一款在 macOS 上帮助用户编辑和管理 app localizations 的图形化工具,它会显示每种语言的所有本地化版本,并能方便快捷的找出你缺失的 key 。如果想要试试看的朋友,也可以参考下这篇文章:[Checking for missing translations in iOS projects](https://blog.kulman.sk/checking-for-missing-translations-in-ios/)
+
+## 代码
+
+[MVCTodo](https://github.com/davedelong/MVCTodo)
+
+我们曾在 [17 期周报中推荐过 - A Better MVC](https://github.com/SwiftOldDriver/iOS-Weekly/blob/48427eac5663bacdb00beddf2653ff1c32f4d5d1/Reports/%2317-2018.05.02.md#-a-better-mvc) 的文章和视频,现在时隔半年,作者为这篇文章提供了一个简单的 demo,帮助读者去理解和实践他推荐的 MVC 架构。强烈建议阅读下这个 repo 的 readme,作者很有心地列出了这个 demo 你应该重点看哪些,略过哪些东西。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#42-2018.11.05.md b/Reports/2018/#42-2018.11.05.md
new file mode 100644
index 000000000..07ac3e827
--- /dev/null
+++ b/Reports/2018/#42-2018.11.05.md
@@ -0,0 +1,161 @@
+# 老司机 iOS 周报 #42 | 2018-11-05
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 小专栏
+
+### [北美软件工程师面试简单介绍](https://xiaozhuanlan.com/topic/4263189057)
+
+好多同学都比较好奇北美的软件工程的面试和国内的有什么不同,具体情况又是如何的,这篇小专栏就简单的给大家介绍了一下北美的 Software Engineer 的面试情况,有兴趣的不妨读一读了解一下。
+
+## 新闻
+
+### [App Store Connect API Now Available](https://developer.apple.com/news/?id=11022018)
+
+WWDC 2018 中苹果提及了 App Store Connect 将迎来一次比较大的更新,其中有两个内容比较受国内开发者关注 - TestFlight Public Links 和 App Store Connect API。前者已经在前一段时间发布了,而后者这周也正式发布。
+
+> 相关功能介绍可以在 [What’s New in App Store Connect](https://developer.apple.com/videos/play/wwdc2018/301/) 和 [Automating App Store Connect](https://developer.apple.com/videos/play/wwdc2018/303) 中进一步了解。
+
+## 文章
+
+### 🌟 🐕 [支付宝客户端架构解析:iOS 容器化框架初探](https://mp.weixin.qq.com/s/KGDD-Qe1TLzIVlDIEzM25g)
+
+你是否好奇一款航母级 App 他的内部客户端架构是怎样实现的?到底什么样的架构设计才能满足几十上百人共同开发迭代一款 App ?这篇文章会带大家深入到支付宝的 mPaaS 框架之中,了解一下支付宝客户端业务容器化的实践 -- 将业务隔离成相对独立的模块,而整个框架作为容器管理着众多子业务子模块,并着力追求模块与模块之间高内聚、低耦合,灵活的插件式开发。
+
+mPaaS iOS 框架源自于支付宝客户端,为了实现这种上千个工程之间的低耦合和相关依赖调用,mPaaS 框架直接接管了 App 的生命周期,负责整个 App 启动托管、App 生命周期管理、处理与分发 UIApplication 的代理事件。mPaaS 框架提供了容器化环境,业务开发人员在这个容器化环境中使用 `微应用` 和 `微服务` 进行具体的业务需求开发。
+
+### 🌟 🐎 [The power of key paths in Swift](https://www.swiftbysundell.com/posts/the-power-of-key-paths-in-swift)
+
+由于 Swift 是一门追求编译时安全和静态类型的语言,它缺少其它更注重运行时的语言(Objective-C、Ruby 和 JavaScript 等)所拥有的动态特征。例如在 Objective-C 里,我们可以在运行时动态访问对象的任意方法和属性,甚至可以替换其实现。虽然动态性的缺失是 Swift 的一大优势之一,有助于写出容易预测、正确率更高的代码,但在某些时候,如果能用更动态的方式来使用代码,会很有帮助。幸运的是,Swift 正在不断推出更多更动态的功能,同时仍然保持类型安全的原则,key path 就是其中之一。在这篇文章里,会为你展示 key path 在 Swift 中的使用方式,以及利用它实现的一些强大功能。此外,还可以参考这篇文章 [Swift Tip: Auto Layout with Key Paths](https://www.objc.io/blog/2018/10/30/auto-layout-with-key-paths/)。
+
+### 🌟 🐢 [Protocol Oriented Programming(POP) in Swift: Is it better than Object Oriented Programming(OPP)?](https://www.appcoda.com/pop-vs-oop/)
+
+自从 Swift 2.0 引入面向协议编程(POP)这一概念以来,已经有成百上千篇关于这一概念的讨论文章,本次作者以专注编码 30 年老司机的身份,在实际开发中大量运用 POP 模式之后,写出了他心目中的 POP。本文将由以下几点展开讨论:
+
+- 为什么 Swift 被认为是一门面向协议的语言;
+- 比较 POP 与 OOP 的异同,指出他们主要区别在于能否实现多继承;
+- 对比值语义与引用语义的区别;
+- 分析了苹果在 WWDC 2016 提出的 “局部推断(Local reasoning)”;
+- 举了 Protocol 的几个使用场景:如实现委托模式、作为类型和实现多态;
+- Review 作者在 Swift 项目中的实践代码;
+
+至于作者对 POP 最终的态度,点进来看看吧,另外有兴趣的话不妨看看作者的前一篇[关于 POP 的入门文章](https://www.appcoda.com/protocol-oriented-programming/)。
+
+### 🐕 [React Native 重构路线图发布!](https://mp.weixin.qq.com/s/-BXsXp0HnrGMS3CLLvfEtQ)
+
+Facebook 6月中旬发布了他们即将“大规模重构 RN” 的消息,时隔四个月,近期终于公布了他们的一些计划细节,不过大部分都是工具链,流程上的增强。颇有一种裤子都脱了就给我看这个的感觉,不知道是不是对“大规模重构”有什么误解。这些增强虽然普通开发者可能感触不深,但对于一个团队做技术选型时候肯定是有帮助的,但是不是真能抵挡住 Flutter 的冲击呢?我表示不乐观。
+
+### 🐎 [Speeding Up Custom Script Phases](https://indiestack.com/2014/12/speeding-up-custom-script-phases/)
+
+文章主要介绍了三种方案来加速 Xcode 自定义脚本的执行。
+
+- 第一种:勾选配置项中的 `when installing`,标识 APP 只在 `Archive` 模式下才执行脚本。
+- 第二种:添加你自己的逻辑代码来标识脚本的执行程度。
+- 第三种:利用两个可选项 Input Files 和 Output Files,这两个列表中填写为文件路径或文件夹路径,它们就是 Xcode 来判断脚本是否需要执行的依据。
+
+对于最后一种方案,文中表达不是很明确,我花了点时间做了一个实践,最后归结如下,Xcode 会重新执行脚本的条件如下:1. 两者中任一`文件`有`修改`。 2:两者中任一`文件夹`内有文件`添加/删除/替换`。
+
+> 在 Xcode 10 之后脚本增加为4个可选项,除上面表述的两个外,还有 Input File List 和 Output File List。如有兴趣可以参考 [\[New Feature\] Generate xcfilelist for Script Build Phases](https://github.com/SwiftGen/SwiftGen/issues/441) 文中对于 File List 的看法。
+
+### 🐎 [Running Other Apps' Siri Shortcuts Through Deep Links in Swift](https://swiftrocks.com/running-other-apps-siri-shortcuts-through-deep-links-in-swift.html)
+
+文中作者展示了使用 Deep Link 来打开捷径的案例。通过 `shortcuts//` 这个 URL Scheme 来跳转捷径应用。若 URL 中的 Path 为 `run-shortcut` 则可以去执行捷径,当然我们可以通过参数 `name` 来指定执行对应的捷径,`input` 参数来为你的捷径增加入参,`x-success`/`x-cancel`/`x-error` 参数来为你的捷径提供执行状态的回调处理。此外,作者还介绍了具有导入功能的捷径 URL 和 一些捷径 APP 的配置页面。
+
+### 🐕 [Let's Set Up Your iOS Environments](https://robots.thoughtbot.com/let-s-setup-your-ios-environments)
+
+本文介绍了一些对于新手来说非常实用的 Xcode Project 设置的小知识:使用 .xcconfig 文件来合理设置工程。这东西可能在工程体量还不是很大的时候,显得不是那么的重要,但是当工程逐渐变大,结构也变的越来越复杂的时候,有一个清晰合理的结构,容易配置的工程对整个团队来说都是一个福音。
+
+### 🐕 [Text Kit Tutorial: Getting Started](https://www.raywenderlich.com/5960-text-kit-tutorial-getting-started?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more)
+
+`TextKit` 是 iOS 7 开始推出的图文混排框架,其基于底层的 `CoreText`。`UIKit` 中的 `UILabel`、`UITextView`、`UITextField` 都构建在 `TextKit` 之上。本文介绍介绍了两部分内容:如何适配 `Dynamic Type` 特性;如何实现图文混排及文字环绕图片布局。
+
+### 🐕 [【基本功】深入剖析Swift性能优化](https://mp.weixin.qq.com/s/U95QmOOjeXkk-yC23cuZCQ)
+
+这篇文章的核心内容出自 [Understanding Swift Performance](https://developer.apple.com/videos/play/wwdc2016/416/),主要讲了 Swift 的一些优势以及苹果做了哪些方面的优化。所以推荐每个 Swift 的开发者都要仔细看一下这个 Session 的内容。
+
+当然,因为 Swift 在不断的优化,视频内容的部分东西已经有点点过时了。我稍微补充一下:
+
+- Existential Container 目前虽然是用 3 个 word 存储数据,但是在 ABI 稳定之前,这个大小一直还没有确认。同时,文中所说的 Existential Container 是 5 个 word 也不太恰当,更合理的是大于 4 个 word。比如 `Any` 的 Existential Container 只有 4 个 word,而 `Codeble` 的 Existential Container 大小为 6 个 word。
+- 其次,对于 Indirect Storage With Copy-On-Write 的说法,在 [Understanding Swift Performance](https://developer.apple.com/videos/play/wwdc2016/416/) 指的是 Swift 3 的时候,类似于 Array 这类基础库的大数 struct 如何解决 Copy 问题。而不是对于所有 struct 实现了这个 COW。但是 Swift 4 的时候,苹果改变了策略,在编译器这边做了一定的优化,实现了“自动”实现 COW。
+
+### 🐕 [One Quick Way to Drastically Reduce your iOS App’s Download Size](https://medium.com/@michael.eisel/one-trick-to-drastically-reduce-your-ios-apps-downlsize-ae68aad0d369)
+
+大家都知道,app 的下载体积越小,用户需要等待的时间就越短,尤其是对于用 Swift 开发的 app,体积动辄几十兆,令人头疼。本文作者分析了影响 app 体积的几个方面和一些优化的方法,包括 bitcode、使用 xcrun 命令分析各部分所占空间等等。
+
+### 🐕 [深入理解 Autolayout 与列表性能 -- 背锅的 Cassowary 和偷懒的 CPU](https://juejin.im/post/5bd5a546f265da0af033cee6)
+
+Autolayout 的性能一直为人所诟病,也是列表卡顿的原因之一。本文作者从 Autolayout 的算法角度进行分析,介绍了 Cassowary 的基本原理,并根据文字渲染结果做了一些详细的测试,判断性能问题是苹果实现不当所致,而不完全是算法的原因。最后也介绍了作者自己实现的 Panda 框架,基于 Autolayout 算法的概念进行优化,感兴趣的朋友可以试一下。
+
+### 🐎 [Class written in Swift](http://yulingtianxia.com/blog/2018/10/28/Class-written-in-Swift/)
+
+纯 Swift 类的函数调用跟 OC 中的运行时消息发送机制是不同的,是在编译阶段就确定了调用哪一个函数。虽然 Runtime 的接口可以使用,但是却并不能保证返回结果的正确性。作者在自己写的某个开源库上的一个 issue,由于和 Swift 类有关,研究了下 Swift 编写的类。对于在使用 Swfit 过程中,在 Debug 或者其他情况有疑问的同学,可以看一下本文的分析。
+
+### 🐕 [Specializing protocols in Swift](https://www.swiftbysundell.com/posts/specializing-protocols-in-swift)
+
+这周的 Swift by Sundell 介绍了一个很有趣的泛型功能 —— 泛型协议特例化。这是 [Swift 4 时引入的功能](https://github.com/apple/swift-evolution/blob/master/proposals/0142-associated-types-constraints.md),让我们在继承泛型协议的同时约束 associatedType 的类型,听起来很拗口难懂,目前在标准库里有一个非常标准的示例 `SubSequence`,大家一看就能理解:
+
+```swift
+protocol Sequence {
+ associatedtype SubSequence : Sequence
+ ...
+}
+
+protocol Collection: Sequence where SubSequence: Collection { ... }
+```
+
+`Collection` 通过 `where` 从句对子序列的类型进行约束,让 `Collection` 的子序列必须也遵循 `Collection`(而不只是 `Sequence`)。
+
+如果你觉得这个例子离业务太远的话,那就可以看看 Sundell 在文章里介绍的一些离业务更近的用例。
+
+## 工具
+
+### [iOS Project Template](https://github.com/messeb/ios-project-template)
+
+这是一个可进行代码签名、持续集成、项目分发的项目模版。它为新项目提供了一个起点,可以方便的进行项目构建。这个模版中提供了一个 `Core` 框架,要想用于自己的项目,还需要修改一些文件的某些配置和内容。感兴趣的朋友可以试试看,或许它能够帮到你。
+
+### [Eliminate Unused Swift Code](https://peripheryapp.com)
+
+这是一个可以移除 Swift 项目中所有没用到的代码的工具,帮助你把项目变得更加干净。注意目前版本的 CocoaPods(1.5.3) 会导致它不能正常工作,升级到 1.6.0.beta.2 即可。这个工具免费即可使用,但是充钱可以变得更强。
+
+## 代码
+
+### [CodyFire](https://github.com/MihaelIsaev/CodyFire)
+
+CodyFire 是基于 Alamofire 的 Codable 协议 API 请求管理库,使你庞大的网络请求代码,变的更简洁,易于维护。Swift 由于类型安全的特性,对于像 JSON 这类弱类型的数据处理一直是一个比较头疼的问题。Swift 4 中新增的 Codable 协议解决了字典与模型之间转换的问题,Codable 协议也让 API controller 的构建代码变的十分优雅。 CodyFire 能自动根据所运用的环境,切换 baseURL,能方便的添加公共头、对异常状态统一处理、对请求进行取消、设置超时,或者预防请求返回过快,添加交互式延时(不用再担心,网络太快,等待动画没有很好的执行。小编和 CodyFire 作者都非常喜欢这个功能)。还能串行或并行,使用链式调用进行多个请求,并对结果进行统一处理。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[kyo](https://github.com/KyoLi),[tom510230](https://xiaozhuanlan.com/u/6682065345),[anotheren](https://anotheren.com),[水水](https://www.xuyanlan.com),[looping](https://github.com/looping),[@JasonYuh](https://weibo.com/jasonyuh),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#43-2018.11.12.md b/Reports/2018/#43-2018.11.12.md
new file mode 100644
index 000000000..ea100528f
--- /dev/null
+++ b/Reports/2018/#43-2018.11.12.md
@@ -0,0 +1,231 @@
+# 老司机 iOS 周报 #43 | 2018-11-12
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 小专栏
+
+### [From Swift To C++](https://xiaozhuanlan.com/topic/7216403859)
+
+来自微信团队的周报编辑芒果最新出炉的一篇文章。这篇文章按照编程范式(programming paradigm)来组织脉络,从一个客户端工程师的角度来品味和对比这 Swift 和 C++ 两门语言。如果你也在或者即将同时把 Swift 和 C++ 当做主流编程语言,那么这篇文章你绝对值得一看。
+
+## 新闻
+
+### [适用于触控问题的 iPhone X 显示屏模块更换计划](https://www.apple.com/cn/support/iphone-x-display-module-replacement-program/)
+
+号外!号外!继“降频门”事件引起的 218 元换电池服务后,苹果又出免费更换 iPhone X 显示屏服务了。只要你的 iPhone X 经过测试满足以下两个问题,则苹果会替你免费更换显示屏。
+
+- 显示屏或显示屏的一部分不响应或间歇响应触控操作。
+- 即使没有进行触控操作,显示屏也会作出反应。
+
+另外友情提醒,218 元换电池只剩最后一个半月了,还没换的小伙伴抓紧上,绝对能让你的老设备焕然一新!
+
+## 文章
+
+### 🌟 🐕 [Language Server Protocol](https://nshipster.com/language-server-protocol/)
+
+前段时间 Apple Swift 团队在 Swift Forum 上宣布他们会对 Swift 和 C 系列语言(C/C++/ObjC)增加 LSP (Language Server Protocol)支持。这对于饱受 Xcode 折磨的开发者来说是个极大的利好,意味着在这之后可以有更多的第三方 IDE 支持。
+
+Matt 的这篇文章,解释了什么是 LSP,LSP 是怎么工作的,以及潜在的可能带来的好处。
+
+虽然 Swift 支持 LSP 的具体时间表到现在还没有放出来,但是受苦于 Xcode 的大伙们也算是有点盼头了。
+
+### 🌟 🐎 Tricks & treats to make UI testing less terrifying
+[part1](https://blog.novoda.com/ui-testing-part-1/)、[part2](https://blog.novoda.com/ui-testing-part-2/)、[part3](https://blog.novoda.com/ui-testing-part-3/)
+
+自动化测试,尤其是 UI 的自动化测试,对于国内大部分的开发者应该都是“只闻其声未见其人”的感觉,知道有这么个事儿,但基本都没怎么实践过。这一系列文章系统性的讨论了 UI 自动化测试的最佳实践。从如何标记 UI 元素到如何访问,最后在第三部分还探讨了一种编写 UI 测试的“设计模式”,名叫 PageObject 的编程模型,来提升 UI 测试代码的可维护性。
+
+### 🐎 [Stephen King's Advice To Software Developers](https://www.mokacoding.com/blog/stephen-king-advice-to-software-developers/)
+
+斯蒂芬·金,《肖申克的救赎》的作者。他曾在《On Writing》一书说,讲述了他的写作经验。学习技巧基本相通,因此本文作者将斯蒂芬·金的经验融合到软件开发实例中。
+1. 多输入,多输出
+ - 多输入:多看源码,`CodeReview`,博客,书籍,如无从做起,可多关注**老司机周报**。
+ - 多输出:对于想掌握的技巧,多进行刻意练习。
+2. 避免分心
+ - 规划时间,**固定**的时间做**固定**的事情,效率更高。
+ - 寻找**专门的空间**和可以集中精神的 **2 个小时**。
+3. 闭门,开门
+ - 专注开发完成后(闭门),接受 `CodeReview` 或者开源,吸纳更多的意见进行优化(开门)。
+4. 杀掉你的所爱
+ - 每次优化,果断删掉你自豪但无用的代码,炫技不如贴合业务。
+5. 花时间
+ - 没有捷径,务必**坚持**(但是要注意**学习技巧**)。
+
+### 🚧 🐕 [How to remove duplication from Swift tests with helper functions](https://www.mokacoding.com/blog/how-to-remove-duplication-from-swift-tests-with-helper-functions/)
+
+对于 XCTest 的单元测试来说,提取重复代码对于开发者而言并不友好,可能会出现如下几种问题:
+
+ 1. 执行过程中,Xcode 的断言函数停止在了提取函数内部。
+ 2. 多个单元测试同时报错时,需要展开错误信息才能了解到具体信息。
+
+为了解决如上几个问题,作者巧妙的运用了 Swift 中 `XCAssert` 函数的另外两个入参 `file` 和 `line`,来传递辅助函数调用时的文件和行号,这样 Xcode 就能够帮助你将错误信息正确提示到辅助函数调用的地方。
+
+### 🐕 [Keeping your code clean](https://www.netguru.co/codestories/keeping-your-code-clean)
+
+写得一手好字,对于普通人来讲是一个很好的加分项,而是否写得一手简洁漂亮的代码则对于我们开发者来说更为重要。招聘单位往往对应聘人的代码风格都会有一定要求。本文分享了如何写得一手好代码的几个小技巧,很值得大家关注,并在平常开发中重视起来。
+
+- LOC(Lines Of Code):代码应该足够精简,函数是最小的执行单元,避免冗长的代码集中在一个函数实现上。
+- 正确的缩进:不管你是 “Tab” 党还是 “空格” 党,合适的缩进能让你的代码排版更加整齐,让人读起来更加舒适。
+- 标准的命名:虽然命名一直是程序员的难题,但我们仍然需要能够很好的名字来提高我们代码可读性。
+- 变量和函数的声明:在合适的地方做声明,按照功能进行分组。
+- 代码风格:每个团队都应该有一套代码规范,来统一团队成员的代码风格。
+
+另外,该作者还在最后为我们推荐了几个 Lint 的工具,可以帮助我们自动化代码规范审核,如 **SonarQube**、**Tailor** 以及 **SwiftLint**。
+
+### 🐕 [String’s ABI and UTF-8](https://forums.swift.org/t/string-s-abi-and-utf-8/17676)
+
+近日,Michael Ilseman 在 Swift 社区论坛发文 `String’s ABI and UTF-8` 表示 String ABI 相关改动已提交到 master 分支。具体来说,这是底层实现的一次显著改动(这些改动在 API 层面无任何影响),其中最主要的一点就是原生 Swift 字符串会统一使用 UTF-8 进行存储(在内存里),而之前是根据内容选择 ASCII 或者 UTF-16 进行存储。
+
+文章还特地提到:传统意义上中文字符串是 UTF-8 性能最差的场景(需对多个 UTF-8 编码进行重排合并得到 Unicode 码位),得益于现代 CPU 的改进,这些已不再是问题。
+
+### 🐢 [Result\ 还是 Result\](https://onevcat.com/2018/10/swift-result-error/)
+
+API 的错误处理一直是 Cocoa 做的不好的一部分。到了 Swift 时代,我们有了更好用的 enum,可以帮助我们统一 Data 与 Error 的封装。如果你常用 Alamofire,一定对它的 `Result` 非常熟悉,对于错误,它仅要求满足 `Swift.Error`。但是很多时候处理这个空协议依旧不是最方便。于是又有人提出了 `Result` 来指定错误类型,大部分情况下你会在这里定义一个 enum 来穷举所有可能的错误(注意这里的错误是 `Error` 而非 `Swift.Error`)。喵神在文中详细对比了这两种方式的利弊。
+
+当然,官方不可能对这一不足置之不理,相关的提案 [SE-0235: Add Result to the Standard Library](https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md) 本周已经在讨论中,相信结果很快就会出来,让我们拭目以待。
+
+### 🐢 [KVC/KVO 总结](https://juejin.im/post/5be25b256fb9a04a0279d217)
+
+对 KVC / KVO 做了到位的总结和代码示例。相信对想要详细了解或使用 KVC / KVO 的同学会有所帮助。
+
+KVC
+- Key-Value Coding基本原则
+- 访问对象属性
+- 访问集合属性
+- 访问者搜索模式
+
+KVO
+- 注册KVO
+- 兼容KVO
+- 注册从属keys
+- Key-Value Observing 的实现细节
+
+### 🐢 [Category 特性在 iOS 组件化中的应用与管控](https://mp.weixin.qq.com/s/5ucpVa6ku4b9_pfMP9CqlQ)
+
+关于组件化,在业界的文章和讨论已经很多了。但组件化其实是一个比较大的工程化问题,对于想要使用和已经采用组件化进行开发的团队来说,对于实施组件化的很多细节,其实很多文章并没有说的很清晰。本文主要围绕组件分层通信解耦的机制,先后列举了常见的几种方案对比,以及美团所采用的方案:Category+NSInvocation 和 CategoryCoverOrigin。对于这两个相对陌生一些的方案,文中也有一定的介绍,并且写了实际运用的代码,对此有兴趣的同学推荐可以认真看一下本文。最后,Category 的使用笔者一向认为需要比较慎重,否则往往会带来更坏的效果,至于采用哪种方案,就看大家自己的抉择了。这里并没有打太极的意思,而是对于组件分层通信,怎么做、是否要做到如此,以及各种方案所带来的代码量的增加和后期的维护成本是否值得,不同的团队也会有不同的见解。
+
+### 🐕 [Void](https://nshipster.com/void/)
+
+NSHipster 介绍了很多和 Nothingness 相关的内容。这篇文章主要介绍的是 Swift 中的 Void。文章内容依旧是 Mattt 大神的写作三部曲:
+
+- Void 在标准库中的运用
+
+ 描述了 Swift 标准库在设计 ExpressibleByNilLiteral 的时候,如何巧妙的运用 Void 避免了和默认 init 冲突的情况。
+
+- Void 一些被忽略的细节
+
+ 比如 Void 是一个 non-nominal 类型,如何在无法拓展的情况下如何相互比较、一些自相矛盾的写法等
+
+- Void 实际开发中的秒用
+
+ 以网络请求为例,在使用 Void 的情况下,巧妙的把 `completion(.success(()))` 改成了 `completion(.success)`
+
+### 🐎 [Swift Tip: Lightweight Observation](https://www.objc.io/blog/2018/11/06/lightweight-observation/)
+
+对于静态视图结构和动态数据,我们可以使用内建的 `didSet` 属性观察器来观察数据的变更,并对应更新视图。这项技术的优势就在于简单性:不需要引入响应式框架、KVO 或其他东西。这篇文章用一个实际的例子演示了具体的做法。
+
+### 🐕 [Swift 5 and ABI stability](https://theswiftdev.com/2018/11/06/swift-5-and-abi-stability/)
+
+Swift 5 的分支最近已经准备要合并到主干了,这一次合并意味着 ABI 在 Release 之前不会有大改动,并且在未来版本保持 ABI 的向后兼容性。
+
+所以最近在 Swift 论坛上也能看到核心团队加快节奏在调整精简标准库的 API,包括加入 [Contiguous Collection Protocols](https://forums.swift.org/t/contiguous-collection-protocols/17875) 确立数组内存布局以便优化排序等操作,去除掉 [Sequence.SubSequence](https://forums.swift.org/t/se-0234-removing-sequence-subsequence/17750) 以便提升数组切片效率等等。
+
+如果你还不了解 ABI 相关的内容,那么可以看看这篇文章,了解一下 ABI 稳定对我们日常开发的影响。
+
+### 🐢 [【译】给 iOS 开发者介绍 Flutter](http://ie8384.com/blog/index.php/archives/1603/)
+
+本文是 Flutter for iOS 官方指南的翻译。iOS 知识和技能对 Flutter 开发非常有价值,如果你已经有 iOS 开发经验,可以通过这篇文章,用自己已有的 iOS 知识去使用 Flutter 构建应用。
+
+文章主要介绍 UIView、UIViewController 等 iOS 常见知识在 Flutter 中怎样使用。共包含 12 个章节:View、页面导航、线程和异步、工程结构/本地化/依赖和资源、ViewController、布局、手势检测和 Touch 事件处理、主题和文字、表单输入、与硬件交互/第三方服务和平台、数据库和本地存储、通知。
+
+作为给 iOS 开发者的入门 Flutter 的文章,本文内容全面,也可以作为开发手册来查阅。另外,作者还翻译了 [给 Android 开发者介绍 Flutter](http://ie8384.com/blog/index.php/archives/1602/),有兴趣可以阅读。
+
+## 设计
+
+### [Photopea: advanced image editor](https://www.photopea.com)
+
+Photopea 是一款免费的在线 Photoshop(替代品),拥有和 PS 几乎相同的界面和快捷键,并且支持多语言,已经有超过 150 万独立访客。
+
+## 工具
+
+### [手机上的抓包神器 Stream](https://itunes.apple.com/cn/app/stream/id1312141691?mt=8&ct=appshare-cn)
+
+配置简单,不需要改代理等繁琐操作,即可
+
+1. 抓取手机上的 HTTP & HTTPS 请求和响应,方便开发和测试人员快速定位线上问题。
+
+2. 重放和构建请求,高效调试服务端接口。
+
+3. 支持在 iOS 上实现配置 Hosts 的效果,方便产品和测试切换线上和测试环境。
+
+4. 集成一些常用工具,如 URL Decode/Encode,md5,base64,时间戳转化等。
+
+### [另一款轻量级的 UI 实时调试工具 - Sherlock](https://sherlock.inspiredcode.io/)
+
+这是除 Reveal 外又一款支持实时调试 UI 的工具,相比于 Reveal,Sherlock 虽然没有 Reveal 那么强大的功能,但它更加轻量级,且无需任何配置,打开模拟器和 Sherlock 就可以直接使用。此外,它还支持调整屏幕大小以测试你的 UI 在各类屏幕上的展示效果,不需要你去启动各种模拟器。目前 Sherlock 正处于 Beta 测试中,暂时只支持 iPhone 模拟器。
+
+### [SmartBaby](https://itunes.apple.com/us/app/smartbaby/id1438971945?mt=12)
+
+SmartBaby 是一款提高 Swift 开发者效率的工具。它能从 JSON 推断出 Codable 模型,且具有好用的自定义功能。创建的模型可按照 Project 分组,并使用 CloudKit 存储在 iCloud 的私有数据库中。
+
+> 由 SmartBaby 开发者 [@nixzhu](https://github.com/nixzhu) 自荐
+
+## 代码
+
+### [AloeStackView](https://github.com/airbnb/AloeStackView)
+
+AloeStackView 是一个类似垂直 UITableView 的类。它着重于让 UI 的实现变得非常的快速、简单和直接。不过为了实现更简单、更安全的API,它放弃了 UITababieView 的一些特性,如视图循环。
+
+特性
+- 允许您保持对视图的强引用并动态更改其属性,而自动布局让 UI 实时更新。
+- 允许视图动态添加、删除、隐藏和显示,并提供可选动画。
+- 包括对视图间可定制分隔符的内置支持。
+- 提供可扩展的 API ,允许添加专用功能而无需修改 AloeStackView 本身。
+- 在高流量的 iOS 应用程序中广泛使用和审查。
+- 小的、易于理解的代码库(在500行代码之下)没有外部依赖性,调试轻松。
+
+## 音视频
+
+### [LEARN TALKS AWESOME CONFERENCE AND MEETUP TALK](https://learntalks.com/)
+
+顾名思义,learntalks 是一个学习如何 talk 的网站,面向技术人员。网站收录了技术领域时下热门的技术大会的演讲视频,其语言涵盖了 Swift,Kotlin, Javascript 等,颇有一种足不出户就能阅遍天下大会的感觉,学技术和学 talk 同时进行。推荐关注。
+
+### [Flutter 免费视频教程第一季:开发环境搭建](https://juejin.im/post/5be3d54cf265da611d6624d3)
+
+手把手带你配置 Flutter 开发环境的视频教程,除视频外作者还编写了非常详尽的文字教程,对正在入坑 Flutter 的小伙伴可以看看。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#44-2018.11.19.md b/Reports/2018/#44-2018.11.19.md
new file mode 100644
index 000000000..7e0ded750
--- /dev/null
+++ b/Reports/2018/#44-2018.11.19.md
@@ -0,0 +1,152 @@
+# 老司机 iOS 周报 #44 | 2018-11-19
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🐢 [Implementing features with ReactiveFeedback](https://ilya.puchka.me/implementing-features-with-reactivefeedback/)
+
+本文作者通过一个实例演示来介绍他们团队写的单向数据流应用框架 [ReactiveFeedback](https://github.com/Babylonpartners/ReactiveFeedback)。由于作者所在团队用的是 `ReactiveCocoa`,所以他们就基于 `ReactiveSwift` 自己实现了一套类似 `RxFeedback` 的框架。
+
+虽然是教程类的文章,而且还是写自家框架的,但是阅读本文还是会有三层收获:
+- To 普通开发,了解应用开发还能这么玩。如果大家对 `Redux`, `ReSwift`, `RxFeedback` 这些比较熟悉的话,文中介绍的框架结构和用法还是很好理解的。即使不熟悉,认真看也是能懂的,因为文章写得真是超级详细;
+- To 框架维护,理解他们做类似架构演进的思路。单向数据流应用框架的可维护、可预测以及可测试性等这些特点可以较好地解决一个复杂应用工程会面临的臃肿混乱难以管理的问题。文中也提到 `ReactiveFeedback` 没有设计全局的应用状态,但是每个功能模块与外部交互时都有明确的主入口,内部只有自己独立的状态,使用起来非常简单灵活和方便;
+- To 技术管理,通过技术手段来提高工程质量和效率是非常有意义的,特别是大家一起维护一套开发框架。能对应用架构和编程模式不断地进行探索,也是工程师文化的很好体现。经常做这类技术输出的团队肯定也是大部分人所向往的有技术氛围的团队。
+
+### 🐢 [Docker ❤️ Swift & Vapor](https://theswiftdev.com/2018/11/15/docker-loves-swift-and-vapor/)
+
+Docker 作为近几年来服务端最重要的技术创新之一,解决了无数配置与运维的噩梦。而另一边,Server-side Swift 的蓬勃发展,似乎和 Docker 拥抱已经是一个必然。本文既是一篇非常棒的 docker 入门文章,用很简洁的篇幅讲了 docker 是什么,能做什么,并且给出了相应的学习路径,同时,也是一篇介绍如何使用 docker 技术来提升 Server-side Swift 的开发与配置效率的文章。作者生动的介绍了如何制作 Swift 的 docker image,如何实时修改 docker image 中的代码,最后还提出基于 docker compose 来实现基于 Vapor 的微服务架构,非常酷! 推荐大家阅读。
+
+
+### 🚧 🐕 [Assertions in Production](https://medium.com/device-blogs/assertions-in-production-e587fef5bfbc)
+
+作者围绕断言的使用展开了以下探讨:
+
+- 如何上报断言(Assertion)?
+
+ 首先作者分享了将断言上报的代码片段。作者认为相较于 Property Testing(性质测试),断言等于真正的用户产生的 Property Testing,更加随机、多样和不可预测,而且不需要写任何测试用例。
+
+- 何时加断言?
+
+ 作者一般的规则是,在没有 `else` 的情况下,应该加断言。以下情况下也会加断言:确保方法传参正确的时候;从字典里用已知的 key 取值的时候(如 `NSNotification``userInfo`);确保必须在主线程进行的操作当前是否在主线程的时候;打开关键的数据库或者文件失败的时候。
+
+- 对于线上的产品,是否应该让断言处 Crash?
+
+ 作者认为没有必要。断言可以当做错误上报,但不应该造成闪退。
+
+### 🐕 [Avoiding race conditions in Swift](https://www.swiftbysundell.com/posts/avoiding-race-conditions-in-swift)
+
+Race condition, 即竞争条件。我们都知道,当多个线程同时访问相同的资源,就可能会出现意想不到的问题。对此,线程安全一直是开发中需要额外关注的一个问题。本文讲了在 Swift 中,race condition 可能存在的场景,以及在平时的编码中,如何尽可能避免这种问题。
+
+### 🐕 [What's .self, .Type and .Protocol? Understanding Swift Metatypes](https://swiftrocks.com/whats-type-and-self-swift-metatypes.html)
+
+`Swift Metatypes`,可能每天都在用,却很难解释清楚到底是什么东西,Apple 文档对此描述也比较晦涩,只说 `type of a type`。
+
+文章从最简单的 `String` 开始,讲 `String.Type`、`string.self` 之间的关系,串起 `.Type` `.self` `type(of:)` `Protocol`,最后还介绍了一些 `Metatypes` 使用场景。
+
+### 🐕 [用 Swift 解读 React/React Native: Part 1 - React Element & React Component](https://tech.glowing.com/cn/react-native-explained-in-swift-part-1-element-and-component/)
+
+本文系列文章第一部分,作者希望将 `React/ReactNative` 中的主要编程思想,应用在 `Swift` 中,以此提高提升开发效率和代码质量。作者认为 `React` 的核心概念为,将数据转化成视图描述数据,也就是 `Data` 到 `React Element` 的过程。在这个过程中,无形中引入了单向数据流,提升了代码的规范性和开发效率。文中介绍了如何用 `Swift` 实现 `Componet, Element, Node` 这几个关键部分。
+
+### 🐢 [Mirror / CustomReflectable / CustomLeafReflectable](https://nshipster.com/mirror/)
+
+相对于 `Objective-C` 来说,Swift 没有 `Runtime` 不能实现类似 `swizzing` 功能。但得益于 `Mirror` 的`反射`功能,我们可以得到对象信息的只读访问,`Playground` 就是 `Mirror` 的一个主要场景。文章介绍了 `Mirror` 及相关的 `CustomReflectable` `CustomLeafReflectable` 两个 `protocol` 使用细节。
+
+### 🐕 [分析实现-倒计时设计](http://sindrilin.com/2018/01/06/count_down_design.html)
+
+倒计时器是一个日常开发中很常见的需求,通过 `NSTimer`、`GCD` 或者 `CADisplayLink` 都可以轻易实现。本文作者在看到一个基于 `NSOperation` 的全局计时器方案后,引发了如何完成一个更高效、接口设计更合理的倒计时器轮子的思考。从选择存储结构出发,到最后的逻辑封装,作者一步步完成了自己的倒计时器。
+
+虽然是一个很小的需求,但却很考验开发人员的编码能力,希望各位读者都能够从作者这种软件设计思维中有所得。
+
+### 🐕 [在 Flutter 中嵌入 Native 组件的正确姿势是...](https://www.jianshu.com/p/82bb88d1ffe5)
+
+闲鱼团队的新文章,他们算是最早用上 Flutter 重写自己 App 的大厂团队,趟过的坑一定不会少,也值得其他人学习经验。
+
+Flutter 最近也在各个国内大厂掀起了应用浪潮,如果有打算应用 Flutter 或者是已经在尝试应用 Flutter 的同学们,不妨考虑先读一读闲鱼团队的系列文章,可以让你少踩很多坑。本文就介绍了闲鱼团队在项目中嵌入 Native 代码的做法和背后的源码中的原理,虽然 iOS 中还暂时没有出现和 AndroidView 对应的控件,但是相信之后一定会有对应的控件跟上。目前在 Android 端有需求的同学们不妨先学习参考。
+
+### 🐕 [CustomPlaygroundDisplayConvertible](https://nshipster.com/customplaygrounddisplayconvertible/)
+
+本文介绍了我们熟悉的 `Playground`,它通过 `PlaygroundLogger` 框架来实现实时反馈。文章前半部分花了大篇幅介绍这个框架支持展现的类型和 `CustomPlaygroundDisplayConvertible` 协议的用法。文章后半部分则从 `Playground` 自身的特殊性展开,总结了 `CustomPlaygroundDisplayConvertible` 跟 `CustomStringConvertible`、`CustomDebugStringConvertible` 以及 `Debug Quick Look` 之间的关系。读完全文,不仅能让我们知道了 `CustomPlaygroundDisplayConvertible` 怎么用的,而且也清楚了它的具体使用场景。
+
+### 🐕 [Debugging a subtle Swift bug that will make you facepalm](https://www.jessesquires.com/blog/debugging-subtle-swift-bug-facepalm/)
+
+Jesse Squires 在修复一个 UI 测试的崩溃时,发现是因为 json 序列化时使用了 `[String: Any]` 作为容器,赋值时少写了一对括号导致的问题:
+
+```swift
+func toDictionary() -> [String: Any] {
+ var dict: [String: Any] = [:]
+
+ // code setting other keys and values...
+
+ dict[JSONKeys.dateClosed] = self.dateClosed?.toMongoDate
+
+ return dict
+}
+
+extension Date {
+ func toMongoDate() -> [String: Any] {
+ // return date in expected mongo date format
+ }
+}
+```
+
+这段代码是 Codable 之前就存在的,从这方面也印证了 Codable 的好处。
+
+
+### 🐕 [支付宝客户端架构解析:iOS 客户端启动性能优化初探](https://mp.weixin.qq.com/s/ewYBMdqrjVJUthRxkFW_3g)
+
+支付宝 mPaaS 团队又向大家带来了一篇启动性能优化的实践,本片文章主要从另一个角度探索启动性能优化,利用苹果的 Background Fetch 让 App 在后台的时候就能处理一些预加载任务,来解决真正启动性能中比较耗时的图片加载问题。我们也可以借此了解一下 iOS 的这种 Background Fetch 伪后台的作用机制
+
+
+## 工具
+
+### [Commander](https://github.com/devedbox/Commander)
+
+`Commander` 简单而言,就是你通过 `Decodable & Decoder` 协议的规则书写 `struct` 来描述 `cli` 参数的输入,该库会进行解析检查,并且提供对应的描述帮助信息,也提供自动补全的机制。
+
+### [Code Friend](https://qvcodefriend.github.io)
+
+自 Xcode 8 开始,苹果提供了 `XcodeKit` 用于开发 Xcode Extensions,但是开发者们似乎并不买账。Code Friend 通过 `JavaScriptCore` 封装了 `XcodeKit` 的原生方法,并提供了使用 JavaScript 接口来快捷地开发 Xcode 插件。你可以直接在 Mac App Store 中找到它,但是还是建议你先读一读[这篇文章](https://mp.weixin.qq.com/s/oQJXtZYcO4u6m4SCHZUT_w)。
+
+## 音视频
+
+### ["Promises everywhere", with special guest Max Howell](https://www.swiftbysundell.com/podcast/36)
+
+15 年的时候,有位牛人,曾经在 Twitter 上吐槽自己去 Google 面试被拒经历。Google 说 90% 的工程师使用他写的软件,但是因为他不能在白板上翻转二叉树,so fuck off...这个事情相信很多人都听过,而这个人,正是大名鼎鼎的包管理软件 HomeBrew 的作者 Max Howell 。就在近期,Sundell 邀请了他作为嘉宾,在这期播客里讨论了包管理器的设计、异步编程、面试流程以及 Swift Package Manager 是如何诞生的。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解我所在项目组信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#45-2018.11.26.md b/Reports/2018/#45-2018.11.26.md
new file mode 100644
index 000000000..7826c2dd3
--- /dev/null
+++ b/Reports/2018/#45-2018.11.26.md
@@ -0,0 +1,157 @@
+# 老司机 iOS 周报 #45 | 2018-11-26
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 小专栏
+
+[Swift 开源项目精选导图](https://xiaozhuanlan.com/topic/5271086934)
+
+这份文档主要基于微博 [@SwiftLanguage](https://weibo.com/swiftlanguage) 跟踪过活跃于 Swift 语言领域的那些 GitHub 开源项目,顺便也是对于过去几年关注的内容进行一次系统化梳理。尝试整理出一份相对结构化且精练的 Swift 开源项目参考知识库,它将主要以思维导图形式呈现。
+
+## 文章
+
+### 🌟 🐢 [Hades:移动端静态分析框架](https://tech.meituan.com/hades.html)
+
+本文介绍了大众点评基于 Objective-C 的代码静态分析工具 Hades 的研发经验,重点解决了以下痛点:
+- 开发成本高,收益有限,研发参与积极性不够。
+- 针对局部代码分析,跨编译单元以及全局性分析较难。
+- 增量分析困难,CI 静态检查效率低下。
+- 工具性较强,大部分只作代码规范检查,应用范畴局限。
+- 接入和维护成本高,难以平台化。
+
+Hades 相对于市面上已有的工具,在研发端解决了代码检查规则维护困难的问题,在 CI 端解决了性能问题,因为针对每次检查都可以持久化 Model 对象,在扩展性上还有很大的想像空间,大众点评团队为我们提供了很好的代码静态分析工具研发思路。目前 Hades 还是闭源阶段,将来有可能转为开源。
+
+P.S. 目前iOS平台上的代码静态分析工具一览表
+[SwiftLint](https://github.com/realm/SwiftLint)
+[Appscreener](https://appscreener.us/)
+[Checkmarx](https://www.checkmarx.com/technology/supported-coding-languages/)
+[Fortify](https://github.com/mre/awesome-static-analysis)
+[Infer](https://github.com/facebook/infer)
+[oclint](https://github.com/oclint/oclint)
+[Veracode](http://www.veracode.com/products/static-analysis-sast/static-code-analysis)
+
+### 🐕 [Swift Development with Visual Studio Code](https://nshipster.com/vscode/)
+
+Swift 在早些时候宣布将支持 LSP(Language Server Protocol),整个社区都沸腾了。人们涌上街头,奔走相告,一遍遍的确认着:我们可以摆脱 Xcode 了吗?VSCode 作为 LSP 支持的先驱者与佼佼者,目前基本已经是行业排行第一的通用型代码编辑器。
+
+本篇文章由 mattt 大神出品,详细介绍了怎么在 VSCode 中配置 Swift 的开发环境。目前虽然 Swift 的 LSP 支持还处于 early stage,但已经可以支持最常用的自动完成、快速帮助以及跳转定义等功能。并且基于 VScode 强大的插件生态,还有 SwiftLint 这样的插件可以来提升代码的风格优化。不得不说,人们对于 Swift,尤其是非 Apple 生态下的 Swift 开发体验跨越式升级,已经发生。
+
+
+### 🚧 🐢 [Xcode and LLDB Advanced Debugging Tutorial](https://medium.com/@fadiderias/xcode-and-lldb-advanced-debugging-tutorial-part-1-31919aa149e0)
+
+作者准备了一个简易项目,演示了如何利用 Xcode 和 LLDB 进行高级调试。
+
+- [第一部分](https://medium.com/@fadiderias/xcode-and-lldb-advanced-debugging-tutorial-part-1-31919aa149e0) 在断点处添加调试命令,注入一行新代码进行调试。
+
+- [第二部分](https://medium.com/@fadiderias/xcode-and-lldb-advanced-debugging-tutorial-part-2-8bfeae4cdfdb) 通过给属性添加观察点,当其变化的时候,会中断程序,观察到属性变化的前后值,及可以进行堆栈追踪。
+
+- [第三部分](https://medium.com/@fadiderias/xcode-and-lldb-advanced-debugging-tutorial-part-3-8238aca63e7c) 在断点中,通过调试命令新增新的断点,使断点在某些场景下才开始执行,更高效的追踪问题。
+
+### 🚧 🐢 [A taste of MVVM and Reactive paradigm](https://medium.com/flawless-app-stories/a-taste-of-mvvm-and-reactive-paradigm-5288a819cca1)
+
+本文通过一些简单的类讲述了什么是 MVC 和 MVVM,以及如何进一步研究 Rx。您可以自由地创建自己的架构,但无论您做什么,一致性都是关键,不要让别人看的时候感到困惑或惊讶。
+
+所有设计模式的简单原则可总结为:
+
+- 确定应用程序的各个方面的变化,并将它们与保持不变的方面分开
+- 编程到接口,而不是实现
+- 组合好过继承
+
+希望本文对正在为架构选型而头疼的朋友有所帮助。
+
+### 🐕 [实用的可选项(Optional)扩展](https://swift.gg/2018/11/19/useful-optional-extensions/)
+
+`Option` 是 `Swift` 最基础的内容,它迫使开发者们处理好一些临界情况,使得程序更加健壮。标准库中 `Option` 的 API 非常少,编码过程中通常需要配合 `if let` `guard let` 一起使用,这容易造成多分支。作者参考了 `Rust` `Scala` 等语言的实现,给出了一些 `Option` 扩展,或许你可以用于自己的项目中。
+
+### 🚧 🐕 [Stubbing in pair with Swift compiler](https://medium.com/@londeix/stubbing-in-pair-with-swift-compiler-c951770a295b)
+
+Unit tests 中 stubbing 是一个很常见的做法,现在也有很多成熟的框架。而本文却从另外一个角度来做: 利用 Swift 的语言特性来做另类的轻量级的 Stubbing。
+这种做法的应用面虽然比较有限,但是不妨可以了解一下作为参考。
+
+### 🐕 [关于 performSelector:afterDelay: 的一个坑及思考](https://juejin.im/post/5bee9218e51d4520b7711fc8)
+
+本文通过对于 `performSelector:afterDelay:` 函数进行了研究,总结了以下三点内容:
+
+1. 在一个没有开启 `RunLoop` 的子线程中调用 `performSelector:afterDelay:` 函数,最终是不会被执行的
+2. 看似相近的 API,可能不是同一个模块提供的,其实现方式也不尽相同
+ - `performSelector:` 来自于 `NSObject.h`,其是有 id 类型的返回值,并不依赖于子线程的 `RunLoop` 开启状态
+ - `performSelector:withObject:afterDelay:` 来自于 `NSRunloop.h`,其并没有返回值,依赖子线程的 `RunLoop` 开启状态
+ - `performSelectorOnMainThread:withObject:waitUntilDone:` 来自于 `NSThread.h`,其并没有返回值,依赖主线程的 `RunLoop` 开启状态
+3. `performSelector:` 中函数定义在其他地方就会引起编译警告,如果函数没有返回值可以使用 `performSelectorOnMainThread:` 或者 `performSelector:withObject:afterDelay:` 来避免编译警告
+
+### 🐕 [函数式编程 - 有趣的 Monoid(单位半群)](https://www.jianshu.com/p/f935e54faad3)
+
+本文介绍了在函数式编程中比较核心的一个概念 Monoid(单位半群)。从半群到单位半群,从数学定义到 Swift 的展开实现,以引导教学的方式带领读者一步步深入了解 Monoid,极易消化理解。后半部分介绍了几个有趣实用的 Monoid 类的数据结构,且都有递进式的概念讲解及 Swift 实现。
+
+另外,本文是近两年来作者关于[函数式编程系列](https://www.jianshu.com/c/884e7fb9b8ec)文章中的最新一篇。本系列文章同样都是采取引导递进式的行文风格,作者从 Haskell 这种标准化的、通用纯函数式的编程语言中汲取灵感,将诸多函数式编程的核心概念改造为 Swift 实现,让我们从新的角度去认识 Swift 以及 与 Swift 相关的函数式编程思想,Swift 或 函数式编程爱好者不容错过。
+
+### 🐎 [Unit testing retain cycles](https://paul-samuels.com/blog/2018/11/20/unit-testing-retain-cycles/)
+
+循环引用问题会造成内存泄露,轻则影响应用性能,重则导致应用闪退,非常影响用户体验。同时它也是不太容易被发现的。所以在开发测试过程中,增加对循环引用的检测很有必要。
+
+本文就介绍了如何在单元测试中检查循环引用。思路很简洁,通过建立弱引用去检测。这样我们就能保证代码库本身没有问题,正如文末所说的 “get a level of comfort”。除了检测方式,作者所表现出的这种为代码负责任的态度也是值得我们学习的。
+
+### 🐕 [Self-sizing Table View Cells](https://www.raywenderlich.com/8549-self-sizing-table-view-cells)
+
+这是一个关于 tableview cell 的布局教程,该本教程中,您将学习如何启用自动调整大小的 cell ,以及如何使它们按需调整大小并支持动态类型。该教程通过 storyboard 加代码的教程形式,一步步完成一个大家常见的 tableview 需求,并附上了项目 demo 。
+
+### 🐕 [Extending optionals in Swift](https://www.swiftbysundell.com/posts/extending-optionals-in-swift)
+
+Swift 里的 Optional 虽然帮助我们保证了内存安全访问,但在很多情况下都需要我们解包后再进行操作,让代码显得比较啰嗦而且不连贯。
+
+Sundell 这周就给我们带来了 Optional 的实用拓展,总结了一些 Optional 常见场景,并且构建对应的语法糖去优化 Optional 的使用。
+
+### 🐕 [Swift Async Operations at Your Command](https://tworingsoft.com/blog/2018/11/19/swift-async-operations-at-your-command.html)
+
+当一个操作相对比较复杂时,使用 Operation 封装上下文会是一种比较合理的做法,这篇文章里作者分别介绍了 Fabric 封装的 FABAsyncOperation 和 FABCompoundOperation 以及各自的使用场景,并且讲述了他在项目中使用 Swift 重写的过程。
+
+### 🐕 [关于 Swift defer 的正确使用](https://onevcat.com/2018/11/defer/)
+
+在 Swfit 中,defer 关键字即为延迟的意思,用 defer 声明的 block 并不会立刻执行,而是在当前代码执行退出后被调用,这类似于 JAVA 里的 try/finally。最近,喵神在重构 `Kingfisher` 的时候,因为 defer 的使用不但而造成了 bug。为此,喵神完整梳理了下 defer 的特性以及使用方法。
+
+## 代码
+
+### [30-seconds-of-swift-code](https://github.com/elizabethsiegle/30-seconds-of-swift-code)
+
+一个立志于让你 30 秒看懂一段 Swift 代码的项目,较为新手向,方便新人快速了解 Swift 的内建函数。当然老鸟也不妨一读,总有你漏掉的知识点。
+
+### [LINE SDK for iOS Swift](https://github.com/line/line-sdk-ios-swift)
+
+用 Swift 开发的 iOS LINE SDK 可以让我们用现代化的方式来实现 LINE API,包括用户认证及通过 OpenID 获取用户信息等功能,为 iOS app 开发有吸引力的、个性化的用户体验。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳字节跳动研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@邦Ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#46-2018.12.03.md b/Reports/2018/#46-2018.12.03.md
new file mode 100644
index 000000000..830d6364a
--- /dev/null
+++ b/Reports/2018/#46-2018.12.03.md
@@ -0,0 +1,161 @@
+# 老司机 iOS 周报 #46 | 2018-12-03
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Apple 举办编程一小时活动](https://www.apple.com/cn/today/collection/hourofcode/)
+
+在 12 月 1 日至 14 日期间,Apple 将在全国的 Apple Store 零售店举办「编程一小时」活动,现在已开放报名。你将有机会从编程基础知识入手,用 Swift 语言写代码,为机器人编程。也许这一小时的课程,将开启你对编程一生的热爱。
+
+### [App Store Connect Holiday Schedule](https://developer.apple.com/news/?id=11272018)
+
+因圣诞假期,App Store 将在 12 月 23 日至 27 日停止应用审核。
+
+## 文章
+
+### 🐕 [Animations are assets: using Core Animation archives on iOS](https://rambo.codes/ios/2018/11/11/animations-are-assets.html)
+
+作者在逆向过程中发现了 `Animations` 也可以作为资源归档,并且在2016年的时候已经上线了一款使用该技术的 APP。
+简单而言,就是将 `Core Animation` 添加完动画效果的 `layer` 利用 `NSKeyedArchiver/NSKeyedUnarchiver` 进行归档,然后在 APP 需要动画的时候进行加载,文中附有 `Demo`。
+
+- 使用 [Kite软件](https://kiteapp.co/) 进行方便动画的制作,并且导出 `CAAR` 文件(也可以自行代码 `archiver` 后导出)。
+- 因为导出的文件是一个 `CoreAnimation layer tree`,你可以实现颜色改变,形变等 `CoreAnimation layer` 的动画效果。
+- `CAAR` 文件独立,意味着你可以放在 `Asset Catalog`, `Bundle`,甚至服务器下发。
+- 不需要依赖另外的第三方动画框架。
+
+延展阅读:
+
+- [Kite Compositor:原型设计新玩具](https://zhuanlan.zhihu.com/p/25673691)
+
+### 🐢 [iOS 12 Password Tools: Improving User Security and Experience](https://www.raywenderlich.com/7162-ios-12-password-tools-improving-user-security-and-experience)
+
+在本教程中,您将使用这些 iOS 12 安全工具,使您的用户能够:
+- 在您的网站和您的应用之间共享和同步密码。
+- 保存并更新iOS密码。
+- 自动生成安全密码。
+- 访问通过短信发送的验证安全代码,无需离开应用。
+
+### 🐕 [Extending optionals in Swift](https://www.swiftbysundell.com/posts/extending-optionals-in-swift)
+
+Swift 中的可选值实际是定义了一个 `Optional` 枚举,所以我们可以通过扩展枚举,让我们以一种更好的方式处理可选值。
+
+我们可以给枚举添加一个扩展方法,当值为 `nil` 的时候抛出 `error`,直接将方法接入到调用末尾,则能轻松将缺失值转换为一个错误。
+
+当然你也可以发挥更多想象力,添加扩展将值的逻辑判断代码、类型匹配代码等等操作封装起来,最终得到一个更好,更容易阅读的调用链。
+
+### 🐎 [When to use UserDefaults, Keychain, or Core Data](https://fluffy.es/persist-data/)
+
+本文总结了我们开发过程中常用的几种数据存储方式的使用场景,以及它们的使用方法和注意点。都是比较初级的知识,但作者写得很详细,总结的也很到位。
+
+- UserDefaults
+
+ 用来存储不敏感的少量数据,比如需要持久化的用户设置、游戏分数、播放的歌曲名等。
+
+- Keychain
+
+ 用来存储相对敏感的少量数据,比如用户密码、内购状态、令牌密钥等。
+
+- Core Data
+
+ 用来存储数据量大的列表、关系型数据,以及需要查询和筛选的数据,比如 Todo 列表、文章评论等。
+
+
+### 🐢 [A Comparison of Swift and Kotlin Languages](https://www.raywenderlich.com/6754-a-comparison-of-swift-and-kotlin-languages)
+
+尽管 Swift 和 Kotlin 在语法上有太多相似的地方,但也仍然有很多核心特性上的差异。本文重点介绍了 Swift 和 Kotlin 之间的异同。
+
+从代码风格和语法层面详细对比了属性,数据结构,方法,闭包,可选类型,流程控制,类,扩展,协议,功能性语法等重要语言特性的相似点和不同点。同时推荐了许多其他对比 Swift 和 Kotlin 的文章。
+
+### 🐢 [手把手教你给企业微信 Mac 客户端去除水印](https://zhaoxinyu.me/2018-11-24-crack-wew/)
+
+目前,许多公司使用了企业微信作为内部聊天工具,既然是企业级的,免不了界面会有水印,这可以使公司的内部信息被员工截图散播出去时候可以有效的溯源等等。
+
+水印有两种情况,一种是在客户端合成的,另一种是 server 下发的图片就带有水印。前者通过反编译客户端进行去除,而后者相对较难,只能通过图像技术去做。企业微信 Mac 的客户端水印就属于前者。
+
+所以,文中笔者就尝试反编译的手段成功去除了水印。不过,本文更适合作为反编译的实战教学文章来观看,一方面是截图公司的信息散布出去本事也并不好,另一方面是不能保证微信企业客户端没有暗水印。
+
+### 🐕 [Evaluating SwiftSyntax for use in SwiftLint](https://www.jpsim.com/evaluating-swiftsyntax-for-use-in-swiftlint/)
+
+之前 SwiftLint 是基于 SourceKit 封装了一套 API 去处理语法规则的。现在 SwiftSyntax 出来之后,本来打算使用它去简化之前的语法规则,结果发现运行效率竟然变低了。文中笔者给出了具体原因:SwiftSyntax 对于每个文件解析都新开一个 Swift 编译器实例拖慢了整体速度。
+
+### 🐕 [解读 App Store 审核黑箱政策 —— 远没有你想象的那么邪恶](https://juejin.im/post/5bfd2ae7f265da61141c4bf7?utm_source=gold_browser_extension)
+
+作者在 App Store 上架了 15 款应用,与 App Store 审核的往来超过几百次,在这篇文章里,作者分享了他对 App Store 的理解和看法,具体包括 App Store 采用黑箱审核的原因、为何难以得到清楚的答复、双标情况以及对于 App Store 审核的几点建议。
+
+
+## 工具
+
+### [ReadyForBAT - iOS 面试准备之思维导图](https://github.com/MisterBooo/ReadyForBAT)
+
+作者在学习完慕课网 iOS 面试实战项目后利用思维导图做了总结。这套导图覆盖面较广,可以给正在跳槽或者准备年后跳槽的各位同行用作参考,好好梳理一遍自己的知识体系。
+
+### [Komondor - Git Hooks for Swift projects](https://github.com/orta/Komondor)
+
+Komondor 是一款帮助简化 Git Hook 设置的工具,它依赖于 Swift Package Manager 的运行,只要在 Package.swift 里加上依赖,然后像这样去指定 hook 就可以完成设置:
+
+```swift
+import PackageConfig
+
+let config = PackageConfig([
+ "komondor": [
+ "pre-push": "swift test",
+ "pre-commit": [
+ "swift test",
+ "swift run swiftFormat .",
+ "swift run swiftlint autocorrect --path Sources/",
+ "git add .",
+ ],
+ ],
+])
+```
+
+## 代码
+
+### [appstoreconnect-swift-sdk](https://github.com/AvdLee/appstoreconnect-swift-sdk)
+
+上个月苹果终于将 WWDC 2018 里提到的 App Store Connect API 开放给广大开发者。这是一个基于 Swift 编写的 SDK,可以让开发者方便地使用苹果开放的这些接口。
+
+
+## 音视频
+
+### [ggtalk | 聊聊 Swift 这四年(上)](http://talk.swift.gg/5)
+
+Swift 自第一次推出到现在,已经有了四年的时间。这四年语言本身经过了很多发展,很多改变,而国内的 iOS 开发行业,Swift 开发者的生活和工作,也发生了很多变化。从 14,15年的黄金时代到16年的 ‘iOS 没人要了’,再到18年的 ‘iOS 又有人要了’,今年,Swift 5.0 终于提出要把 ABI 稳定放在首位,这应该算一个 Swift 重要的一个里程碑。在这样一个时间点,ggtalk 请了几个使用 Swift 的程序员,一起聊了聊 Swift 的这四年(ggtalk 是国内 Swift 社区 SwiftGG 推出的程序员闲聊节目)。有空的时候可以听听,相信同样写 Swift 的你,会有共鸣。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#47-2018.12.10.md b/Reports/2018/#47-2018.12.10.md
new file mode 100644
index 000000000..99ea5b85c
--- /dev/null
+++ b/Reports/2018/#47-2018.12.10.md
@@ -0,0 +1,179 @@
+# 老司机 iOS 周报 #47 | 2018-12-10
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+🌟 [我们发福利啦~](https://www.wjx.top/jq/32164990.aspx)
+
+周报已经快陪伴大家走过一年的时间,非常感谢各位朋友的支持和厚爱。为了在 2019 年能更好地为大家服务,我们举办了一个问卷调查活动。在 12 月 27 日,我们会在参与问卷的朋友中选取合适的几个人赠与学习大礼包和现金奖。至于奖品是什么,大家可以在[这条微博](https://weibo.com/3165754627/H6t1EmqRh)中了解,转发还有额外的抽奖~我们渴望听到你们的声音!
+
+## 新闻
+
+### 🌟 [Result 类型将加入标准库](https://forums.swift.org/t/accepted-with-modifications-se-0235-add-result-to-the-standard-library/18603)
+
+Result 类型经历了一整个月的讨论终于决定加入标准库,预计 Swift 5 就能完成实现,这次的提案关注的人非常多,经历了两次修改三次讨论才最终通过。
+
+讨论的焦点主要集中在 Result.Error 的定义上,喵神也写了一篇文章[讨论这个问题](https://onevcat.com/2018/10/swift-result-error/),一句话总结就是,Swift 出于兼容性和实现的考虑,一直没有实现 Typed Throw,所以 Result.Error 很难实现为一个泛型参数,甚至在草案阶段决定让 Result.Error 不遵循 Swift.Error。
+
+后来 Swift 团队专门给这个提案开了后门,调整了[泛型参数的实现](https://github.com/apple/swift/pull/20629),让 Swift.Error 成为了目前唯一一个可以作为泛型参数存在的泛型类型,以便与 Cocoa 的 API 进行更好的交互,才结束了这场讨论。
+
+从这一次也可以看出,Swift 核心团队还是希望让抛出的错误能够有具体的类型(而不是一个泛型的 Swift.Error),所以才会开后门使用这种过渡性的方案,这次的提案让我感觉 Typed Throw 还是有希望的。
+
+另外如果大家有兼容性方面的担忧的话,由于提案的作者是 Alamofire 负责人之一,所以最终通过的版本与 Alamofire 采用的 Result 差异很小,如果你采用的是这个版本的 Result 的话,就不必过多担心。
+
+### [Flutter 1.0 正式版: Google 的便携 UI 工具包](https://mp.weixin.qq.com/s/hCIN42OMmmc6HkOveegwWQ)
+
+万众瞩目的 Flutter 1.0 终于正式发布,从我们首次看到 Flutter 的 Beta 测试版,到如今的 1.0 正式版,总共经过了 9 个多月。Flutter 的高性能跨平台渲染与热重载等优秀的特性相信会让移动开发者们眼前一亮,在早先 beta 期就已经有很多公司与团队进行了这方面实践,现在 1.0 来了,作为移动开发者当然要感受一下
+ Flutter 的魅力。
+
+## 文章
+
+### 🌟 🚧 🐢 [Dependency Injection on iOS — part 1-4](https://medium.com/@fernandodelrio/dependency-injection-on-ios-part-1-4-8847f302b3d9)
+
+本长文的主题是关于架构的,切入点是依赖注入在 iOS 上的应用,共分成了四篇文章。作者从描述模块耦合的概念,到介绍使用依赖注入能带给我们的好处(可复用性、可维护性、可扩展性和可测试性),以及推荐了一款依赖注入的框架(Swinject)后开始进入正题 —— 通过编写和优化一个简单应用来实践依赖注入的概念和感受它带来的好处。全文结构非常清晰,举例也很详尽,是一篇学习和感悟架构,特别是依赖注入的好文章。
+
+### 🌟 🐢 [iOS App冷启动治理:来自美团外卖的实践](https://mp.weixin.qq.com/s/jN3jaNrvXczZoYIRCWZs7w)
+
+文章整理了 APP 冷启动的三个阶段,对三个阶段分别提出了存量解决方案、管理增量方案和监控体系。下面几点是文章观点的总结:
+- 冷启动阶段T1: 点击 APP 图标进入至 main 函数,这两者之间的耗时
+ - 代码瘦身,废弃无用代码和资源文件
+ - 延时 +load 函数,将函数延迟到合适的触发时机,比如说冷启动结束之后
+- 冷启动阶段T2: main 函数后至 didFinishLaunchingWithOptions 函数执行完毕,这两者之间的耗时
+ - 整理 APP 启动阶段,顺序化子项目的启动顺序
+ - 分阶段启动,利用自验的 `Kylin` 项目,将子项目的注册信息(启动阶段、启动需要执行的代码等)写入 `__DATA` 数据段中,运行期读取 `__DATA` 段代码,并赋予执行。
+ - 利用工具(Time Profile/自研的 Caesium)整理执行过程中的一些隐晦耗时,比如归档操作、IO操作、资源任务等
+- 冷启动阶段T3: didFinishLaunchingWithOptions 函数至首页渲染完成,这两者之间的耗时
+ - 将 APP 的 RootViewController 设置为闪屏,同时进行首页UI的构建,加快 RootViewController 的加载
+ - 整理首页加载的串行操作,优化体验成并行操作
+- 数据监控:除了上述的优化外,建立监控体系,保证持续优化成果
+ - 冷启动的开始与结束时间对比,值得注意的是这里的开始时间采用了 APP 进程创建时间
+ - 冷启动过程中的关键节点都有手动添加的测速点,并自动上报
+
+### 🐕 [如何提高工作效率 - 自动化篇](https://juejin.im/post/5bfac61ee51d454af013a900)
+
+在本文中,作者向我们介绍了 `macOS` 环境下几种自动化的实现方案,并以自己的亲身实践案例为我们讲述了大体的实现流程,以下为文中的案例:
+- 利用 `Shell Script` 和启动加载任务,在开机过程中自动配置双网卡
+- 利用 `Apple Script` 访问 `Microsoft Outlook` 自动生成和填充邮件,完成每日邮件汇报工作
+- 利用 `Apple Script` 和热键,快速定位当前 Finder 路径到 iTerm 的窗口当中
+- 利用 `Apple Script` 和 `Alfred WorkFlows` 进行快速保存/搜索记录瞬间想法
+- 利用 `Shell Script` 和 `Apple Script` 定时拉取并编译代码
+
+### 🐢 [iOS 内存管理的那些事儿](https://juejin.im/post/5c0744f6e51d45598b76f481?utm_source=gold_browser_extension)
+
+`iOS` 中的内存管理一直是令开发同学们比较头痛的事情,自 `ARC` 问世以后,虽然不再需要我们手动管理内存,但是掌握内存管理的相关知识依然是十分有必要的。
+
+作者通过研读源代码的方式向我们详细讲解了内存管理的实现原理,并列举了一些日常开发中容易导致内存泄漏的常见场景,掌握这些有助于我们在复杂业务场景中更好的避免内存相关的问题。并且作者后续会介绍一些开源检测内存泄漏的工具及实现,大家可以持续关注。
+
+### 🐕 [Rethinking Design Patterns in Swift: State Pattern](https://khawerkhaliq.com/blog/swift-design-patterns-state-pattern/)
+
+这篇文章展示了如何在 Swift 中实现状态模式(State pattern),借助 Swift 强大的能力,让模式实现变得简单而又灵活。此文通过一个实例来探索状态模式的各个方面,并且评估其处理需求变更的能力。然后还会讨论实现该模式的关键考量、收益以及实际应用。
+
+### 🐎 [技术人的成长](https://xiaozhuanlan.com/topic/8719460352)
+
+作者从自身的经验和感悟出发,从三个维度描述了技术人的成长道路
+- 抵御所谓“全栈”的诱惑,聚焦领域。
+- 扩大视野,提高技术敏锐程度。
+- 多看多尝试,不要空想
+
+总体来说,就是到了一定的技能熟练度以后,从广度上拓展自己的知识面,从深度上钻研某一个垂直领域,将能够极大的帮助大家从普通工程师进阶到高级工程师。
+
+### 🐕 [Category:从底层原理研究到面试题分析](https://juejin.im/post/5c0332ba6fb9a049d4418cac?utm_source=gold_browser_extension)
+
+随着移动端的发展,从 `weak` 面试题的一步步升级就能明白,我们应该多进行深入了解底层实现细节。
+
+作者从源码进行一步步分跟踪和分析,整理 `Category` 整个的执行顺序,非常适合想了解其工作原理的同学们看。并且还提供了一个简单动画示意图。通过阅读,可以清晰地回答面试中常见的几个 `Category` 相关的问题。
+
+另外 `load` 和 `initialize` 也给出了源码分析和对比表格。在准备面试的同学,尤其适合阅读一番。
+
+### 🐢 [iOS: ARM64不定函数传参问题调试剖析](https://github.com/SwiftOldDriver/iOS-Weekly/issues/950)
+
+从实际开发中遇到的一个平台相关的 crash 问题出发,通过代码对比,研究了在 x86-64 架构和 ARM64 架构对于不定函数参数传递的方式——特别是 iOS 系统的不同之处,同时也解答了为什么在调用带不定参数类型的 C 函数指针时,应该显示将其强转为对应参数类型的函数指针问题。
+
+### 🐢 [【译】Swift 中的面向协议编程:是否优于面向对象编程?](https://swift.gg/2018/12/03/pop-vs-oop/)
+
+本篇是 SwiftGG 最新出炉的译文,原文在上月 [周报第42期](https://juejin.im/entry/5bdf9f8ae51d453bab19e546) 推荐过,可以再回顾一下。
+
+### 🐢 [Swift Protocols: Tips and Tricks](https://www.hackingwithswift.com/articles/138/swift-protocols-tips-and-tricks)
+
+`Protocol` 是 `Swift` 的基础,我们可以定义方法,甚至提供默认实现。本文介绍了 `Protocol` 的一些小 tips,比如 `协议组合`、`Protocol extensions`、利用 Protocol 实现`模板方法设计模式`等。
+
+### 🐎 [8 Useful Swift Extensions](https://www.hackingwithswift.com/articles/141/8-useful-swift-extensions)
+
+文中列举了 8 个Swift中比较实用的 Extensions,比如字符串中字符个数、计算两个日期之间的天数,给字符串添加前缀等。当然,我觉得这 8 个远远不能满足于日常的开发,所以我更推荐大家看一下 [SwifterSwift](https://github.com/SwifterSwift/SwifterSwift) 这个库,里面都是很实用的 Extension。如果你有什么不错的 Extension 推荐,也可以给这库贡献自己的代码哦。
+
+### 🐕 [simctl](https://nshipster.com/simctl/)
+
+`simctl` 是苹果提供给开发者驱动 Xcode Simulator 的命令行工具。我们能够通过它做到:启动模拟器,在桌面和模拟器之间复制和粘贴,进行视频录制等。
+
+### 🐢 [Swift Program Distribution with Homebrew](https://nshipster.com/homebrew/)
+
+本文介绍了当你创建了 mac 上的命令行工具的时候,如何进行分发,文中介绍的工具是 Homebrew 。
+1. 创建一个 Makefile 文件
+2. 编写一个 Homebrew formula (相当于编译打包)
+3. 自测需要,可以先试试本地安装,确保安装过程顺利
+4. Homebrew 安装 formula 是基于 Tap 的,所以需要发布一个 Tap
+5. 用户可以根据远端的 Tap 来安装 formula 了
+
+### 🐢 [与 JOSE 战斗的日子 - 写给 iOS 开发者的密码学入门手册](https://onevcat.com/2018/12/jose-3/)
+
+JOSE (Javascript Object Signing and Encryption) 定义了一系列标准,用来规范在网络传输中使用 JSON 的方式,本文介绍了 如何使用 Security.framework 处理 JOSE 中的验证。对比已有的 JOSE 实现框架,譬如 [JOSESwift](https://github.com/airsidemobile/JOSESwift) ,[JSONWebToken.swift](https://github.com/kylef/JSONWebToken.swift) , [Swift-JWT](https://github.com/IBM-Swift/Swift-JWT) , [vaper/jwt](https://github.com/vapor/jwt) 等等,作者的方案优势在于同时支持 RSA 和 ECDSA ,并且不需要引入复杂的依赖关系
+
+## 设计
+
+## 工具
+
+### [Publish Your Flutter App on macOS](https://feather-apps.com/)
+
+最近 Flutter 扩张势头似乎没有停下来的意思,反而看起来越来越凶猛了。
+
+Flutter 除了可以写 iOS,Android App 之外,其实,也是“支持” macOS, Windows 和 Linux 的。只是这并不是那种官方支持,而只是把移动版 App 直接跑在 Desktop 上, 类似明年 macOS 要支持 iOS App 运行一样。
+
+Google 的 Github Repo 下有一个叫 [flutter-desktop-embedding](https://github.com/google/flutter-desktop-embedding/) 的项目,就是做这样的桥接工作的,只是这库确实不是很好用,使用比较麻烦。
+
+于是有第三方开发者做了基于 flutter-desktop-embedding 的工具,可以方便的将你已有的 Flutter 工程打成 macOS 包。同时他们还做了一个小型商店,开发者可以一键上传,其他人也可以很方便的下载安装。
+
+有兴趣的童鞋可以尝试一下把自己的 Flutter App 跑在 macOS 上,来看看那是什么样的感觉。
+
+## 音视频
+
+### [ggtalk | 聊聊 Swift 这四年(下)](http://talk.swift.gg/6)
+
+上周推荐了上部,收到了不错的反响。在这期(下)中,几个程序员聊了最近几年 Swift 领域发生的事情,比如 jspatch 导致的大规模下架事件,第二第三届 Swift 开发者大会的一些故事。最终探讨了 Swift 的未来,内容同样精彩,不容错过。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦Ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#48-2018.12.17.md b/Reports/2018/#48-2018.12.17.md
new file mode 100644
index 000000000..7f207c82f
--- /dev/null
+++ b/Reports/2018/#48-2018.12.17.md
@@ -0,0 +1,195 @@
+# 老司机 iOS 周报 #48 | 2018-12-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+🌟 [我们发福利啦~](https://www.wjx.top/jq/32164990.aspx)
+
+周报已经快陪伴大家走过一年的时间,非常感谢各位朋友的支持和厚爱。为了在 2019 年能更好地为大家服务,我们举办了一个问卷调查活动。在 12 月 27 日,我们会在参与问卷的朋友中选取合适的几个人赠与学习大礼包和现金奖。至于奖品是什么,大家可以在[这条微博](https://weibo.com/3165754627/H6t1EmqRh)中了解,转发还有额外的抽奖~我们渴望听到你们的声音!
+
+## 新闻
+
+[2018 App Store 年度颁奖典礼](https://mp.weixin.qq.com/s/rd3flwSuuXpHeKgtnwXnfg)
+
+Apple 的年度 app 精选又出炉了,为了介绍和表彰获选 app,这是 App Store 和 Apple 官方微信联合呈献的 2018 App Store 年度颁奖典礼,欢迎围观下载。
+
+[Perfect 4 将会使用 SwiftNIO](https://github.com/PerfectlySoft/Perfect-NIO)
+
+[SwiftNIO](https://github.com/apple/swift-nio) 是一个跨平台、异步、事件驱动的网络应用框架,可用于快速开发和维护高性能的网络协议服务器和客户端。对比同样是 Swift 服务端的框架的 Vapor,已在今天 5 月发布的 Vapor 3 中全面使用了该框架。当然作为一个底层框架,你一般不会直接和它打交道。
+
+## 文章
+
+### 🌟 🐕 [解密 Runloop](https://mp.weixin.qq.com/s?__biz=MzI5MjEzNzA1MA==&mid=2650264704&idx=1&sn=c32d676f7c8a7803ac795442cd5fc377&chksm=f40685b5c3710ca3c2dc022e6703d3fd5e66545977c9e9fdc63ee71714123f8698639fe6f0a2)
+
+很显然,`Runloop` 是一个很熟悉的名词,熟悉到每次面试都会碰到有人问你,请说说你对 `Runloop` 的理解。`Runloop` 是开源的,因此本文作者通过精简后的源码示例来解释 `Runloop` 的基本执行顺序。
+
+- 基本流程:循环执行(执行任务->通知外部->休眠)。
+- `Runloop` 依赖 `mach_msg` 进行进程间通信,也就是消息接收发送。
+- `Runloop` 里面会执行 `source0`(可调用 `CFRunLoopAddSource` 创建),`source1`(仅系统调用)。
+- `Runloop` 会执行5类任务 `timer, mainQueue, source0, source1, block`。
+- `Runloop` 通过注册 `observer` 的方式来通知外部当前的任务执行状态,而5类任务中 `mainQueue,source1,block` 不支持注册 `observer`,也就是你无法通过 `obsever` 来得到准确的执行时间。
+- `Runloop` 的 `Activity` 也是通过 `observer` 来通知外部当前处于哪个 `Activity`,当 `source0` 被执行的情况下,`kCFRunLoopBeforeWaiting` 和 `kCFRunLoopAfterWaiting` 会被跳过,意味着单纯通过对 `Activity` 的回调进行分析业务代码的执行状态是不可靠的。
+- `Runloop mode` 分为 `common mode` 和 `private mode`,作者通过捕获 `mode` 得到了很多陌生的 `private mode`,分别用来处理不同的场景,例如 `_kCFStreamBlockingOpenMode` 用来调度网络任务。因此,`NSTimer` 在设置 `kCFRunLoopCommonModes` 的时候,也有可能因为 `private mode` 的调用从而导致延时。
+- `Runloop mode` 可以中途切换,有以下几种切换位置:
+ - sleep 之前
+ - 执行 mainqueue 任务前
+ - exit 之后
+- `Runloop` 的运用场景:
+ - 执行自己的任务,如 timer
+ - 用于观测主线程的运行状态
+
+延展阅读
+
+- [深入理解RunLoop](https://blog.ibireme.com/2015/05/18/runloop/)
+
+### 🌟 🐢 [一个 Demo 入门 Flutter](https://limboy.me/tech/2018/12/07/flutter-demo.html)
+
+最近,已经有许多的公司开场尝试使用 Flutter 进行开发。就在前两天,Google 刚刚在北京举办了 Flutter Live 大会,可以说,Flutter 的生态已经越来越庞大。今年,如果对 Flutter 还是一无所知的话,是不是有点 out 了呢?没关系,这不,就有一篇教大家入门的文章。文章不仅讲了 Flutter 的基本结构,还用实际的代码编写了一个 Demo,想学 Flutter 的同学不妨跟着做一遍,相信比单单看文章更有效果哦。
+
+
+### 🐕 [A modular analytics layer in Swift](https://www.lordcodes.com/posts/a-modular-analytics-layer-in-swift)
+
+在公司里撸业务的开发同学对数据打点应该都不陌生,很多需求甚至一半的时间会花在实现打点逻辑上面,本文提出了一种抽象打点层的设计,用很 Swifty 的方式实现了可扩展(无痛添加新的 event),和后端解耦(切换打点 backend 不需要重构客户端打点代码)以及易配置(不同的打点携带不同的参数)。本文所体现的设计方面的思考对打点之外的一些公共组件的设计也能起到一定的指导作用,值得学习。
+
+### 🐢 [Seemingly Impossible Swift Programs](https://www.fewbutripe.com/2018/12/05/seemingly-impossible.html)
+
+本文借助 “Swift 中判断函数相等性” 的命题极力使用简单的描述和循序渐进的过程来讲解复杂的拓扑数学。
+
+在建设性数学中,任何命题都可以转化为类型,任何证据都可以转化为这种类型的值。这使得我们能够将函数抽象成计算过程和返回值。在拓扑数学中,无限多数据的行为也会表现得像有限集合。 这使得我们可以证明这些计算过程的相等性。
+
+虽然论证的过程和结果对于日常的 Swift 开发并没有用,但希望它们可以让你对数学燃起兴趣并感到敬畏。要知道数学已经能够产生这样一个违反直觉的结果,并对其原因进行极其简洁的解释。你甚至可以相信数学是指导你如何更好完成编程的灯塔。这些简单的数学结构(Functions, Monoids)构成了抽象的强大基础,而不像项目中的那些设计模式,过于复杂且只解决特定问题。
+
+### 🐕 [使用 Metal 和 Core ML 评价照片质量](http://yulingtianxia.com/blog/2018/11/30/Photo-Assessment/)
+
+文章展示了常规算法+机器学习来评价照片质量的方法,常规算法使用 Metal 处理图片,根据饱和度、亮度、模糊度和颜色分布得出客观评分,机器学习则使用 Core ML 加载 NIMA 模型预测主观评分。得到照片评分后,再检测相似照片,最终挑选最优的照片推荐给用户。
+
+demo 中给出了 Metal 版边缘检测滤镜与图片特征向量提取的代码,可供学习参考。文章还总结了开源模型转化为 mlmodel 过程踩的坑。
+
+### 🐢 [Why should we use Swift over Objective-C?](https://medium.com/@chungbkhn87/why-should-we-use-swift-over-objective-c-78b71725e63f)
+
+Swift vs Objective-C,到底该怎么选?如果你正在纠结这个问题,请细读此文。
+
+Objective-C 有着几十年的历史,更稳定;Swift,更现代化的语言,有许多先进特性,文章从多个角度对比了两种语言的优势和劣势。
+
+### 🐕 [Strategy pattern in Swift](https://medium.com/flawless-app-stories/strategy-pattern-in-swift-1462dbddd9fe)
+
+文章作者提出了一种用 Strategy pattern 思路来统一代码接口的做法。如果你对 Strategy pattern 不是很熟悉的话,可以看一下 Wiki 中[这里](https://zh.wikipedia.org/wiki/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F)的介绍。
+
+这种模式在现实场景中有时候还是能起到一定的作用的,有兴趣的同学不妨读一读文章,说不定以后就用上了呢?
+
+### 🐕 [Using errors as control flow in Swift](https://www.swiftbysundell.com/posts/using-errors-as-control-flow-in-swift)
+
+本文重点集中在使用 errors 上,主要介绍了一些用 errors 来进行处理能有明显优势的场景,而这些场景主要包括了函数输出结果的错误的处理,输入参数验证和测试中错误的抛出等。
+
+由于 Objective-C 或多或少的影响,很多同学在写 Swift 的时候依然没有习惯用 errors 来进行错误处理。如果存在这样的情况的话,不妨可以从下一次小 refactor 中出发去寻找有没有可以使用的场景,多尝试,逐渐就能习惯使用。
+
+### 🐕 [Xcode UI Testing Cheat Sheet](https://www.hackingwithswift.com/articles/148/xcode-ui-testing-cheat-sheet)
+
+文章列出了 UI Testing 常用的代码片段,除了对 API 的梳理,还有对各种常见问题的解决方案,可以作为 UI Testing 的快速入门,也可以作为知识库以备日后查阅。
+
+### 🐢 [质量监控-图片减包](http://www.sindrilin.com/2018/12/11/image_subtraction.html)
+
+本文作者提供了三种方法,通过对图片资源的处理以达到减小包大小的目的。这三种方法分别是:
+
+- 使用工具压缩图片
+- 查找删除重复图片
+- 查找复用相似图片
+
+作者不仅详细讲解了具体的实现原理,还提供了相关实现代码。有兴趣的同学可以参考作者提供的方法,对自己的项目进行改造优化。
+
+### 🐢 [Metal 专辑](https://www.jianshu.com/c/ac17a2f93445)
+
+Metal 官方文档的中文翻译和 Metal 相关技术博客,适合英文不太好的同学。
+
+### 🐎 [【AR 开发】ARKit 和 ARCore 功能对照表与定位场景总结](https://zhuanlan.zhihu.com/p/47839718)
+
+ARKit 和 ARCore 功能对照表与定位场景总结,如果您同时开发 ARKit 和 ARCore,可能会用得上。
+
+## 设计
+
+### 🐎 [Animations in iOS: 30 beautiful examples](https://medium.com/flawless-app-stories/animations-in-ios-30-beautiful-examples-80cb2663c559)
+
+有一些 iOS 动画真的很神奇,顺滑和友好的过渡动画能够指引流程,让用户理解下一步操作,即使盯着进度条也能感觉愉悦。下面请欣赏文中列出的 30 个动画杰作。
+
+## 代码
+
+### [Kingfisher 5.0 发布](https://github.com/onevcat/Kingfisher/releases/tag/5.0.0)
+
+喵大的 `Kingfisher` 迎来了5.0的大版本更新,更新日志中的 `Reborn` 一词意味着重大更新。
+
+`Kingfisher` 是一个轻量级的、纯 `swift` 网络图片加载库。虽然是大版本更新,但是 `API` 的变化不大,如果你从4.0升级到5.0或许只需要几分钟处理一下警告和错误。其中最大的变化就是提供了更好的缓存策略。因此,同学们可以考虑升级一番。
+
+- 加入 `Result` 类型取代原来的 `tuples` 回调
+- 为了方便调试追查错误,返回错误信息增加了错误原因和必要的关联信息
+- `ImageCache` 重写,提供内存和硬盘缓存策略,`API` 兼容旧版本,同时提供了控制缓存最大值,是否预缓存等等配置
+- 缓存策略:先搜索内存,没命中则搜索硬盘
+- 支持 `ImageDataProvider` 协议加载本地图片
+
+更新详情请参考:
+
+- [Kingfisher 5.0 更新要点](https://github.com/onevcat/Kingfisher/wiki/New-In-Kingfisher-5)
+- [Kingfisher 5.0 迁移指南](https://github.com/onevcat/Kingfisher/wiki/Kingfisher-5.0-Migration-Guide)
+
+### [Swift 官方 Docker 镜像](https://github.com/apple/swift-docker)
+
+苹果维护的 Swift 镜像,现在已经被[ Docker 官方](https://hub.docker.com/_/swift/)收纳。因此只需要执行 `docker pull swift` 即可方便搭建 Swift 的各个版本环境。目前来看苹果对于此镜像的维护程度还是蛮高的,最新支持到 Swift4.2.1 版本,与开发版本同步。
+
+## 音视频
+
+### 🌟 [Functional Swift Conference 2018](http://2018.funswiftconf.com/)
+
+Swift 从诞生之日起,就具备了海量的函数式编程特性,无论是 enum 和 optional 的实现,或者是函数被当做一类公民,整个语言能看到不少 Haskell 的影子。自然,Swift 在实现一些函数式的思想和特性也非常的得心应手。Swift 的函数式编程,目前最经典的应用场景主要还是构建响应式的 viewmodel。如今,越来越多的人开始探索其他场景。Functional Swift Conf 是一个在纽约举行的,专门探讨函数式 Swift 的技术大会,如今已经放出所有的 presentation,其中除了一些 reactive view model 这样耳熟能详的话题之外,还有关于 state 管理、可组合 UI 等很有趣的内容。对函数式编程感兴趣的同学不容错过。
+
+### [ggtalk | 要不要买 HHKB?我问了七位用户,听听他们怎么说](https://talk.swift.gg/7)
+
+键盘,尤其是机械键盘,一直是程序员们居家旅行最重要的单品。甚至对于大多数程序员来说,键盘可能是极少数不多的可以让自己愿意一直花钱的东西,这就牵涉出一个话题:对于大多数程序员而言,什么键盘才是自己的最后一把键盘呢?本期 ggtalk,几个程序员针对这个话题,聊了聊自己使用 hhkb 的感受,有兴趣的同学可以听听。
+
+PS:节目里没有严谨客观的评测。主观感受居多,比较轻松。
+
+### 🚧 [MVC is Not Your Problem - Joachim Kurz - UIKonf18](https://www.youtube.com/watch?v=A1vzcxR-Ss0)
+
+近年来,MVC 开发模式饱受争议,还经常被人抱怨说在这种模式下写出来的代码太多,耦合太重。于是就有很多人力图通过不断分解和改良 MVC 模式来解决它带来的问题。
+
+UIKonf 上的这场分享就是从 MVC 切入来讲架构设计的。一开始先是介绍 MVC 模式,随后指出了很多人都误解以及用错了 MVC(分享中引用了很多参考资料,调研很充分),继而引出了大家容易忽视的点:有问题的不是架构模式,而是使用方式。即使是其他的架构也会带来其他的问题,如何通过 MVC 以及其他架构来达到开发目的才是重点。
+
+本场分享者 Joachim Kurz,他的观点很明确,做架构设计,不需要刻板的遵循和套用规范,可以通过寻找合适的分解维度(分享的最后有介绍,27 分钟之后),让架构变得合理易懂即可。架构设计适可而止这个度是比较难把握的,需要深入具体需求场景(分享中举了几个例子,其中有介绍一个页面用到 10 个 ViewController 的),在平时的开发过程中不断实践和总结。
+
+## 内推
+
+- 小红书北京/上海招聘 iOS/Android 开发者:负责开发小红书 APP,APP 改变了大多数人的生活方式,我们改变了大多数女生看待生活的方式,加入我们,与一群年轻有趣的小伙伴一起打造下一个亿级用户产品。邮箱:cli2@xiaohongshu.com
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@张嘉夫](https://weibo.com/2949394297),[@AidenRao](https://weibo.com/AidenRao),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[XanderXu](https://github.com/XanderXu)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2018/#49-2018.12.24.md b/Reports/2018/#49-2018.12.24.md
new file mode 100644
index 000000000..39b3a254a
--- /dev/null
+++ b/Reports/2018/#49-2018.12.24.md
@@ -0,0 +1,167 @@
+# 老司机 iOS 周报 #49 | 2018-12-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+🌟 [我们发福利啦~](https://www.wjx.top/jq/32164990.aspx)
+
+周报已经快陪伴大家走过一年的时间,非常感谢各位朋友的支持和厚爱。为了在 2019 年能更好地为大家服务,我们举办了一个问卷调查活动。在 12 月 27 日,我们会在参与问卷的朋友中选取合适的几个人赠与学习大礼包和现金奖。至于奖品是什么,大家可以在[这条微博](https://weibo.com/3165754627/H6t1EmqRh)中了解,转发还有额外的抽奖~我们渴望听到你们的声音!
+
+## 新闻
+
+### 🌟 [周报支持邮件订阅啦!](https://github.com/SwiftOldDriver/iOS-Weekly#订阅周报)
+
+在接下来的周报发布中,我们将会采用 GitHub 最新的 **GitHub Release** 特性进行,读者朋友们可以到我们 [GitHub 主页](https://github.com/SwiftOldDriver/iOS-Weekly#订阅周报) **点击 watch -> 选择 Release only** 订阅。之后每期周报发布,你 GitHub 账号关联的邮箱就会收到我们的发布邮件。
+
+除新增的邮件模式之外,我们还提供了以下三种方式,大家可以按照自己的需求进行选择:
+
+- 公众号:[OldDriverWeekly](https://github.com/SwiftOldDriver/iOS-Weekly/raw/master/assets/qrcode_for_wechat.jpg)
+- RSS:[点击获取 RSS 源](https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom)
+- 掘金:[老司机 iOS 周报](https://juejin.im/user/5a52075e6fb9a01c9d31b107/posts)
+
+### [Cydia 商店宣布关闭](https://www.ithome.com/html/iphone/400752.htm)
+
+对 iOS 越狱有这些影响:
+
+- Saurik 决定关闭的仅仅只是 Cydia Store,也就是其中的支付系统,不会影响原有的安装/卸载/管理应用程序的功能,免费或已经付费的应用,依旧可以进行下载。如果希望继续购买付费应用,需要去其他存储库(如 Packix,Chariz 或 Dynastic Repo)进行下载
+- Saurik 决定关闭商店跟一个 BUG 有关,其可以通过用户的 PayPal 帐户启用任意 Cydia Store 软件包购买
+- Sileo 是 Cydia 的计划替代品,但是其还在开发阶段
+
+## 文章
+
+### 🌟 🐕 [我从写技术博客中收获到了什么](https://knightsj.github.io/2018/12/03/我从写技术博客中收获到了什么%20-%20J_Knight_/)
+
+相信不少程序员都有写博客/文章的习惯,或者正计划写,因为一方面可以总结和加深对技术的理解,另一方面也可以一定程度上增加一些知名度,这也有助于拿到更多的面试机会。但是,由于多数人工作毕竟已经很忙,真正能坚持写下来的人却不多。本文作者作为一个工作刚满 3 年的开发者,但写博客却有两年半的时间了。笔者大概看了下,大概写了有 50 多篇,可以说是很高产了。
+
+本文分为三个部分
+
+- 写技术博客的历程
+- 写技术博客的收获
+- 回答一些朋友(粉丝)的一些关于写博客的几个问题
+
+在技术道路的探索上,每个人有每个人不同的方式,但对于任何一个人,坚持都是很重要也难得的品质。相信这篇文章能够解答你心中的一些疑问。
+
+### 🌟 🐢 [从零开始学基于 ARKit 的 Unity3d 游戏开发系列](https://zhuanlan.zhihu.com/p/32224102)
+
+作者王寒,国内首批 iOS 应⽤开发者,首批 VR 应⽤开发者,知乎专栏 [笨猫学编程](https://zhuanlan.zhihu.com/kidscoding) 作者。[《Cocos2D权威指南》](https://item.jd.com/11206205.html),[《虚拟现实-引领未来的人机交互革命》](https://item.jd.com/11942259.html),[《Unity AR/VR开发:从新手到专家》](https://item.jd.com/12269697.html)的作者。
+
+在本系列的教程中,作者带大家一起学习,如何从零开始学习基于 ARKit 的 Unity3d 移动游戏开发。全系列的教程都是基于实战项目的,而且尽可能考虑到初学者可能会遇到的种种困难和障碍,可谓是手把手教学。
+
+虽然名称是零基础,这个课程有个前提是本身对 Unity 及 3D 图形有一定的了解,不是完全零基础。当然也不必灰心,作者还贴心地为初学者准备了 [iOS 入门课程系列](https://github.com/eseedo/iOSCourse) 和 [AR-VR 入门课程系列](https://github.com/eseedo/AR-VRCourse)。
+
+- iOS 入门系列包括:[iOS7+OC 开发](https://github.com/eseedo/iOSCourse/tree/master/iOS%20Basic/iOS7%2BObjective-C)、[iOS12+Swift4.2 开发](https://github.com/eseedo/iOSCourse/tree/master/iOS%20Basic/iOS12%2BSwift4.2)、[ARKit 原生开发](https://github.com/eseedo/iOSCourse/tree/master/ARKit/ARKit%20Native)、[ARKit+Unity3d 开发](https://github.com/eseedo/iOSCourse/tree/master/ARKit/ARKit%2BUnity3d/pdf)、[CoreML 开发](https://github.com/eseedo/iOSCourse/tree/master/CoreML);
+
+- AR-VR 入门系列包括: [HTC Vive+Unity3d 开发](https://github.com/eseedo/AR-VRCourse/tree/master/HTC%20Vive%20Course)、[HoloLens 开发](https://github.com/eseedo/AR-VRCourse/tree/master/HoloLens%20Course)、[UE4 入门课程](https://github.com/eseedo/AR-VRCourse/tree/master/UE4%20入门课程)、[UE4 VR 开发](https://github.com/eseedo/AR-VRCourse/tree/master/UE4%20VR%20Course)、[Unity5.3 官方 VR 教程](https://github.com/eseedo/AR-VRCourse/tree/master/Unity%205.3官方VR教程)、[Unity AR:VR开发入门](https://github.com/eseedo/AR-VRCourse/tree/master/Unity%20AR:VR开发入门)。
+
+### 🐕 [TikTok(抖音国际版)逆向,全球的小姐姐们,我来啦!](https://juejin.im/post/5c19a38ae51d453e0a209256?utm_source=gold_browser_extension)
+
+在 iOS 日常的开发过程中我们通常会做一些竞品分析或者研究竞品某些功能点的实现方案,其中就需要使用到逆向技术。
+
+本文作者以逆向抖音国际版为例,通过 Frida 砸壳,Hopper 静态分析,配合 Reveal 动态分析,以及 Charles 抓包等一系列分析,编写 Hook 代码完成逆向功能,最后实现突破地区限制、移除水印、日区视频分享下载。文章思路清晰明了,带我们理清了 iOS 逆向工程的整个分析过程。
+
+### 🐕 [Mocking With Protocols in Swift](https://www.bignerdranch.com/blog/mocking-with-protocols-in-swift/)
+
+单元测试可以覆盖我们的很多场景提高代码健壮性,但同时也有很多的代码其实是很难单元测试的,比如和数据相关的删除操作,逻辑迟早都是会跑到的,不在开发阶段就在上线后用户使用阶段,所以这类 “untestable code” 越多,软件的质量就会越有问题。本文作者通过使用 Swift 的 Protocol 的相关特性,来巧妙的构造一些测试机制来测试一些没那么好写单元测试的代码,并给出了一个具体的例子。值得借鉴!
+
+### 🐕 [Data-Driven Table Views](http://www.vadimbulavin.com/data-drive-table-views/)
+
+UITableView 称为所有 iOS 开发者最熟悉的控件并不为过,但 UITableView 存在代码重复、控制流过于复杂、违反依赖性倒置原则等痛点。文章前半部分指出了以上痛点,以及相对于 UITableView 来说 UITableViewController 所拥有的特性;后半部分针对上述痛点,基于 UITableViewController 逐步实现了一个基础版的数据驱动业务的模型,设计轻量,用法简洁,且方便扩展。
+
+### 🐢 [Optimizing Images](https://www.swiftjectivec.com/optimizing-images/)
+
+图片一直是 App 内存消耗大户,本文从图片的`加载`、`解压`、`呈现`开始,特别介绍了列表型应用应该如何优化图片内存问题。
+
+### 🐢 🚧 [How to convert your Xcode plugins to Xcode extensions](https://medium.freecodecamp.org/how-to-convert-your-xcode-plugins-to-xcode-extensions-ac90f32ae0e3)
+
+Xcode 插件和扩展,是我们日常开发中工具,作者针对它的发展做了以下几点的总结:
+
+1. 什么是插件:只是一个类型的包,Xcode 启动时的同时,会去加载指定的 Info.plist 文件
+2. 优秀的插件推荐:Alcatraz(包管理工具)、Xvim( vim 编辑器)、SCXcodeMiniMap(代码地图面板)、FuzzyAutocompletePlugin(函数模糊搜索)、KSImageNamed(图像名称列表)、ColorSense(颜色转换)、LinkedConsole(控制台打印跳转代码文件)
+3. 插件的制作:作者以 [Xmas](https://github.com/onmyway133/Xmas)、[XcodeColorSense](https://github.com/onmyway133/XcodeColorSense) 和 [XcodeWay](https://github.com/onmyway133/XcodeWay/tree/1.0) 的制作为例向我们展示了如何 Hook Xcode 的方法,以及如何与 Xcode 中 UI 元素进行交互
+4. 插件的禁止:由于 2015 年末,[XcodeGhost](https://en.wikipedia.org/wiki/XcodeGhost) 事件,苹果从 Xcode8 开始禁止加载插件。当然,你可以通过 Xcode 重签名这种方式去绕过苹果的检查,重新加载插件
+5. 扩展的崛起:苹果爸爸关上了一扇门,肯定会开一扇窗。从此 Xcode8 中的扩展进入了人们的视线当中。利用现有的 XcodeKit,去获取文档信息,修改当前文档内容,但是跟以前优秀的插件相比,这个方式能实现的东西是在太少了。作者以 [XcodeColorSense2](https://github.com/onmyway133/XcodeColorSense2) 为例,向我们介绍了,如何去实现/调试/安装扩展。另外作者以 [XcodeWay](https://github.com/onmyway133/XcodeWay) 向我们介绍了如何使用去用新的扩展去调用 Apple Script
+
+### 🐕 [美团开源 Graver 框架:用“雕刻”诠释 iOS 端 UI 界面的高效渲染](https://tech.meituan.com/waimai_graver.html)
+
+美团开源了一款高性能的图文混排渲染框架,其特点是整个页面不使用 UIKit 的界面层级与布局渲染,而是采用自己的图文排版引擎,将所有元素绘制在一张 bitmap 上,然后辅助轻量级的交互控制。在这一整套自研的图文排班引擎的支持下,可以做到网络下载/排版算法/图形渲染都通过异步来进行控制,从而实现复杂界面的高性能渲染效果。
+
+### 🐎 [Image Analysis Solutions for Mobile Apps](https://www.netguru.co/codestories/image-analysis-solutions-for-mobile-apps)
+
+本文介绍了几种移动端图片分析的解决方案。其中包括:
+
+- 云解决方案
+- Apple Vision API
+- OpenCV
+- BoofCV
+
+我们希望,通过这篇文章,我们可以让您更轻松找到最佳解决方案。
+
+### 🐕 [Improving code testability with Swift protocols](https://medium.com/flawless-app-stories/solving-dependencies-in-swift-9ee6ad4a8941)
+
+Swift 是一门建议面向协议编程的语言,测试驱动是时下比较热门的工作方式。因此,提升 Swift 的 protocol 可测试性就非常重要了。本文介绍了一些接地气的方法
+
+- 用工厂模式来封装 init 的细节
+- 通过 mock 的方式来只关注行为是否符合预期
+- 协议的设计要符合依赖倒置原则
+
+## 工具
+
+### [How to Add a Recent Items Folder to Your Mac's Dock](https://www.macrumors.com/how-to/how-to-add-a-recent-items-folder-to-your-macs-dock/)
+
+如何将最近打开的项目文件夹添加到 Mac 的 Dock 中?相信工作中很多同学都有这个需求。本文作者就图文并茂的给我们演示了整个过程,过程并不复杂,重要的是一劳永逸,可以有效提升我们日常的工作效率。
+
+## 代码
+
+### [iWeChat - 通过逆向还原和探索微信](https://github.com/lefex/iWeChat)
+
+iWeChat 项目作者希望通过逆向还原微信来学习构建微信用到的技术架构和交互设计,同时也想借此教会大家如何分析一款第三方 App。
+
+项目介绍中罗列的逆向技巧、步骤和工具等,都是不错的入门实战教程,对逆向以及微信的设计感兴趣的同学可以关注下。
+
+## 音视频
+
+### [ggtalk | 和 Cee 聊聊如何拿 Google Offer](https://github.com/SwiftOldDriver/iOS-Weekly/issues/997)
+
+想来有很多程序员对 Google 非常憧憬,也一直希望能有机会去 Google 工作。 这期 Swiftgg 的 ggtalk 节目就和最近拿到 Google Offer 的翻译组同学 Cee 聊了这个话题。主要集中在 Google 的面试流程,怎么准备上。
+
+有兴趣的同学可以听听看,虽然北美的面试准备这些会和国内的有一些区别,但是依然值得了解一波。
+
+如果对北美面试有兴趣的同学们,还可以配合我们之前发的小专栏:[北美软件工程师面试简单介绍](https://xiaozhuanlan.com/topic/4263189057) 一起“食用”,效果更佳。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[XanderXu](https://github.com/XanderXu),[老峰](https://github.com/GesanTung)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/#5.md b/Reports/2018/#5.md
similarity index 100%
rename from Reports/#5.md
rename to Reports/2018/#5.md
diff --git a/Reports/#6.md b/Reports/2018/#6.md
similarity index 100%
rename from Reports/#6.md
rename to Reports/2018/#6.md
diff --git a/Reports/#7.md b/Reports/2018/#7.md
similarity index 100%
rename from Reports/#7.md
rename to Reports/2018/#7.md
diff --git a/Reports/#8.md b/Reports/2018/#8.md
similarity index 100%
rename from Reports/#8.md
rename to Reports/2018/#8.md
diff --git a/Reports/#9.md b/Reports/2018/#9.md
similarity index 100%
rename from Reports/#9.md
rename to Reports/2018/#9.md
diff --git a/Reports/2019/#50-2019.01.02.md b/Reports/2019/#50-2019.01.02.md
new file mode 100644
index 000000000..648fb6423
--- /dev/null
+++ b/Reports/2019/#50-2019.01.02.md
@@ -0,0 +1,191 @@
+# 老司机 iOS 周报 #50 | 2019-01-02
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [我们一周岁了~](https://github.com/SwiftOldDriver/iOS-Weekly)
+
+这是周报成立一周年的第 50 期,也是我们新年的第 1 期。过去 2018 年里,在编辑团队的努力和大家的支持下,我们达成了以下几点小成就:
+
+- 一共连续为大家贡献了 49 期周报
+- GitHub 累计获得 2000+ star
+- [掘金账号](https://juejin.im/user/5a52075e6fb9a01c9d31b107) 收获大家 8500+ 关注,近 2400 次获赞,平均每篇约获赞 40 次,总阅读数约 12.5w,并从近一个月开始尝试不定期推送沸点
+- 微博话题 [#iOS 周报](https://s.weibo.com/weibo/%23iOS%20%E5%91%A8%E6%8A%A5%23) 共 188w 阅读
+- [SwiftOldDriver 精选](https://xiaozhuanlan.com/olddriver-selection) 发表 23 篇文章,获得 255 个订阅
+- 联合兄弟团队 [知识小集](https://github.com/awesome-tips/iOS-Tips) 和 [SwiftGG 翻译组](https://swift.gg/) 共同参与了掘金 [WWDC 2018](https://juejin.im/post/5b1d284df265da6e572b3d87) 专题活动,并在近期组织了 [iOS 再就业联盟](https://www.yuque.com/iosalliance/article/ycyhf3)
+- 周报编辑团队也不断成长,目前已有来自一线 iOS 开发的 28 位伙伴加入我们
+
+另外,我们在 12 月初向大家发起了问卷活动,收集大家对周报的建议和希冀,目前我们正在整理和汇总,并尽快在最近几期周报中根据建议作出调整。祝愿周报在 2019 年和大家一起继续成长~
+
+### 🌟 [老司机周报x知识小集xSwiftGG:iOS 内推职位召集](https://juejin.im/post/5c22deebe51d451a6b513aa3)
+
+最近很多公司的裁员的消息相信大家都有所耳闻,与此同时也有不少公司逆势而上在持续招聘技术人员。因此我们三大组织决定牵头收集一些可靠的招聘,元旦结束后在我们的资讯发布渠道上发布 [iOS 内推职位专题文章](https://www.yuque.com/iosalliance/article/bhutav)。
+
+## 🌟 他们的 2018 年总结
+
+2018 已经悄然离开,2019 已经站在我们面前。这一年,相信大家都有收获,也有过遗憾,这都是常事。下面几篇文章,是几位小伙伴自己的年终总结或者是 2018 年 iOS 的技术发展总结,相信看了他们的总结之后,大家也会有所收获。
+
+- [2018 年终总结及下半年文章汇总 - 知识小集](https://mp.weixin.qq.com/s/m1ldQrRdFlaoh56WcGqbMQ)
+- [2018 年终总结 - J_Knight_](https://juejin.im/post/5c1fa32751882537c0766e30)
+- [2018 年终总结 - 提拉拉拉就是技术宅](http://corpus.enumsblog.com/corpus/18037)
+- [2018 年终总结 - Lefex](https://mp.weixin.qq.com/s/PeNEft0iMQvC_pONo1AXwg)
+- [2018 年终总结 - limboy](https://limboy.me/essay/2018/12/28/my-2018.html)
+- [2018 年终总结 - 小道消息](https://mp.weixin.qq.com/s/ZqaTvVaJAM1oIvLJ7ASVHQ)
+- [2018 年终总结 - Bang](http://blog.cnbang.net/living/3625/)
+- [iOS 技术发展史:2018](https://www.jianshu.com/p/e37184b8587b?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weibo)
+
+## 文章
+
+### 🌟 🐢 [The Layer Cake](https://medium.com/flutter-community/the-layer-cake-widgets-elements-renderobjects-7644c3142401)
+
+Flutter 现在有多火,相信已经无需多说。尤其 1.0 版本发布后,各个厂也都有在进行先关的调研,不少已经在实际项目中使用了。之所以选择 Flutter,一方面是因为跨平台,另一方面我相信很大一部分原因是因为其高效的渲染性能。相信很多同学对 Flutter 如何进行渲染的也比较好奇,本文讲了 Flutter 的渲染层级及如果工作的,并且在处理负责视图结构中如何保持高效。本文对于正在学习或使用 Flutter 的同学,在思考 Flutter 的架构以及性能的优化等问题上,会很有帮助。
+
+### 🐕 [Advanced UIView shadow effects using shadowPath](https://www.hackingwithswift.com/articles/155/advanced-uiview-shadow-effects-using-shadowpath)
+
+虽然扁平化设计的 iOS 7 舍弃了大量的阴影,但最近几年阴影正在不断回归,以增加界面的深度。谨慎地使用阴影可以对 UI 中的内容进行区分、增加深度、吸引用户的视线。这篇文章介绍了用阴影实现的几种效果,全部通过操作图层属性实现。这些效果有的很简单有的很复杂,希望它们可以激发你的创造力!
+
+### 🐎 [A guide to writing your own iOS CI/CD integration script](https://medium.com/appssemble/a-guide-to-writing-your-own-ios-ci-cd-integration-script-186be1b99575)
+
+[Fastlane](https://docs.fastlane.tools/)、[Jenkins](https://jenkins.io/) 是构建 CI/CD(持续集成/持续部署)工作流的常用工具。本文另辟蹊径,不使用第三方工具,只基于苹果的基础工具链构建一个包含编译、测试、检查代码覆盖、签名、分发等相对完整的 CI/CD 工作流。
+如果你还不了解 CI/CD 原理,不妨对着本文做一遍,相信可以快速掌握其运行过程。
+
+### 🐎 [ISO-8601, YYYY, yyyy, and why your year may be wrong](https://ericasadun.com/2018/12/25/iso-8601-yyyy-yyyy-and-why-your-year-may-be-wrong/)
+小写 `yyyy` 是我们常用的格式化日期 `年` 参数,如果误写成大写 `YYYY`,会有什么问题?
+大部分情况下,它们似乎没有区别,但在每年的最后一周,`YYYY` 又会给我们带来意外的结果。
+本文作者将带你了解 `YYYY` 对应的 [ISO 周日历](https://zh.wikipedia.org/wiki/ISO週日曆),从而真正理解它们的不同。
+
+### 🐎 [系统学习 iOS 动画之一:视图动画](https://juejin.im/post/5c246b8a518825644e62434e)
+
+动画制作很有趣,可以为用户界面注入活力。如果使用得当,动画还可以向用户传达信息,并将用户注意力吸引到界面的重要部分。
+
+作者学习《iOS Animations by Tutorials》系列笔记共 7 篇包括如下几部分内容:[视图动画](https://juejin.im/post/5c246b8a518825644e62434e)、[自动布局动画](http://andyron.com/2018/iOS-Animation-2-Auto-Layout)、[图层动画](http://andyron.com/2018/iOS-Animation-3-Layer-Animations)、[视图控制器的转场动画](http://andyron.com/2018/iOS-Animation-4-View-Controller-Transition-Animations)、[3D 动画](http://andyron.com/2018/iOS-Animation-6-3D-Animations)、[其它类型的动画](http://andyron.com/2018/iOS-Animation-7-other-Animations)等。
+
+本文是作者系列笔记中的第一篇,文章以实例的形式由浅入深的讲解了弹簧动画、过渡动画、关键帧动画的实现过程。推荐对动画感兴趣的读者跟着教程实践一遍,相信你会有收获。
+
+### 🐎 [函数式编程 - 酷炫 Applicative(应用函子)Swift 描述](https://juejin.im/post/5c1d3bae5188252a9412e71b)
+
+函数式编程中,三个核心概念分别是 Functor,Applicative 和 Monad。其中,讲 Functor 和 Monad 的资料都不少,但 Applicative 一直都处于一个爹不亲娘不爱的地位,属实尴尬。核心原因还是其应用范围比较有限。本文以 Swift 语言为载体,介绍了 Functor 和 Applicative 的基本知识,讲述的方法借鉴了函数式编程领域教学中比较经典的“盒模型”,没有复杂的数学概念,算是比较不错的入门教材。最后还找到了一个 Applicative 的应用场景作为例子,对函数式编程感兴趣的同学可以仔细阅读,虽然 Applicative 的应用范围比较狭窄,但对于一些细分领域的问题,的确可以构造出非常优雅的解决方案。
+
+
+### 🐎 [『译』Hacking Hit Tests](https://swift.gg/2018/12/27/hacking-hit-tests/)
+
+[35 期周报](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2335-2018.09.10.md#-hacking-hit-tests)我们曾向大家推荐了它的原文,而这周 SwiftGG 则为大家做了翻译,再次温习 iOS 系统基于 Hit Test 的触摸事件处理机制。
+
+### 🐕 [How to test iOS networking code the easy way](https://www.hackingwithswift.com/articles/153/how-to-test-ios-networking-code-the-easy-way)
+
+测试网络层代码总是很困难,因为代码运行地飞快,并且不好重现。文中给出的方案便是 `URLProtocol`,一个用于处理特定协议数据的抽象类。你可以编写一个 `URLProtocol` 的子类来注入你需要的数据,而无需改变你原有的代码,不妨一试。
+
+### 🚧 🐢 [Building an Interactive Voice App Using Custom Siri Shortcuts in iOS 12](https://medium.com/appcoda-tutorials/building-custom-siri-shortcut-intent-ui-extension-to-display-remote-data-alfian-losari-efe891a44a70)
+
+Siri Shortcut 是 Apple 在 iOS 12 中基于 SiriKit 框架引入的新 API。它为开发人员提供了自定义用户在应用程序中经常使用的活动创建快捷方式的方法。用户通过向 Siri 发出语音命令来调用快捷方式,可以通过记录与快捷方式关联的自定义短语来自定义实际短语。你可以实现例如:
+
+- 订购一些东西(例如披萨,咖啡,早餐😋)
+- 信息搜索
+- 连接到任何 API
+- 做我们想要的任何自定义动作
+- 执行 Siri
+- 还有更多...
+
+本文还提供了一系列实现上述功能的参考代码,希望能给感兴趣的朋友提供帮助。
+
+### 🐎 [GitHub Actions: Continuous Delivery of Swift Packages](https://shashikantjagtap.net/github-actions-continuous-delivery-of-swift-packages/)
+
+GitHub Actions 是 GitHub 在 GitHub Universe 2018 开发者大会上发布的新功能,它能够让开发者直接在 GitHub 上根据特定的事件自动执行预设的任务。
+
+本文记录了通过构建 Swift Packages 来使用这个功能的整个流程,也总结了使用过程中发现的一些问题。虽然 GitHub Actions 还处于公测阶段,但大家对这个功能都表示很看好。因为它能让每个开源项目都有自己统一开放的自动化工作流程,它使得 GitHub 服务从代码托管延伸到整个软件开发周期,它很有可能会改变大家使用 GitHub 甚至维护开源项目的方式,所以就让我们拭目以待吧。
+
+### 🐢 [深入浅出 iOS 编译](https://blog.csdn.net/Hello_Hwc/article/details/85226147)
+
+在日常开发中,并不会常用到编译原理相关的知识,但不代表我们不需要了解它。本文系统的讲了 iOS 编译的各个环节,连签名环节都有涉及,深入浅出,也比较容易看懂。在编译原理层面,分为前端和后端,在众多概念中比较重要的是 Parser 和 CodeGen,了解一定的编译原理相关知识,对我们做更深层次的架构、语法设计会很有帮助。
+
+## 工具
+
+### [SwiftRewriter - Swift code formatter using SwiftSyntax](https://github.com/inamiy/SwiftRewriter)
+
+基于 [SwiftSyntax](https://github.com/apple/swift-syntax) 的 Swift 代码格式化工具,要求 Swift 4.2 和 Xcode 10。可以方便灵活的定义和组合自己想要的代码格式。
+
+### [Shapeshift](https://github.com/JohnSundell/Shapeshift)
+
+快速让一组 Swift 文件兼容 iPad 上的 Playground,甚至可以将转换后的文件放置在 iCloud Drive 中的 Swift Playground documents 文件夹内,以便立即拿起 iPad 开始编程!🚀
+
+### [Woodpecker](https://itunes.apple.com/cn/app/woodpecker/id1333548463?mt=12)
+
+我们曾在 18 年初的 [第 5 期周报](https://github.com/SwiftOldDriver/iOS-Weekly/blob/48427eac5663bacdb00beddf2653ff1c32f4d5d1/Reports/%235.md#woodpecker) 推荐过 Woodpecker 这款工具,它可以在 Mac 上查看 App 信息,提高开发测试效率。但现在这款工具 Mac 商店已提供免费下载,免费版本可使用绝大多数功能。
+
+目前功能:
+
+- 只需一步,即可查看、修改沙盒文件;
+- 监控 App 网络 http(s) 请求,无需设置代理;
+- 查看,修改 UserDefaults;
+- 在线调试 WebView;
+- 简单强大的插件支持。
+
+> 由 [@张小刚哟](https://weibo.com/u/3127372955) 自荐
+
+### [Code Friend](https://github.com/qvcodefriend/CodeFriend)
+
+使用提供的 JavaScript 接口,可以简单快捷地开发出 Xcode 插件的 Xcode 插件。
+
+### [USB Keyboard](https://github.com/everettjf/USBKeyboard)
+
+通过 USB 连接 iPhone 到 Mac 后,可以实现在 Mac 端打字,iPhone 上输入的输入法应用。
+
+### [woza](https://github.com/woza-lab/woza)
+
+越狱 iOS 的砸壳工具,类似 clutch、dump-decrypted,是 AloneMonkey 开发的 frida-ios-dump 的 node 版本。另外,[woza-desktop](https://github.com/woza-lab/woza-desktop) 是 woza 的桌面版本,实现了“点点鼠标就能砸壳”的目的。
+
+## 代码
+
+### 🌟 [Stinger](https://github.com/Assuner-Lee/Stinger)
+
+知名 iOS AOP 库 Aspect 的另一种实现思路。使用 libffi 及解析方法签名构建壳函数,替换原方法实现以感知方法调用和捕获参数;使用同一 cif 模板及函数指针直接执行原实现和所有切面 block;不使用消息转发指针替换原实现,hook 兼容性更好;调用方法不经过消息转发过程,执行原实现及切面代码过程中无手动构建 invocation 等,效率更高。
+
+正在实现 hook 单个实例对象。
+
+### 🌟 [LeetCodeAnimation](https://github.com/MisterBooo/LeetCodeAnimation)
+
+现在无论是准备参加校招还是社招,怎么能不去刷刷 LeetCode 呢?但是刷题的过程是枯燥乏味的,而现在广大程序员同胞的福音来了, [LeetCodeAnimation](https://github.com/MisterBooo/LeetCodeAnimation) 的作者立志将 LeetCode 上所有的题目都用动画的形式演示出来,相对枯燥的算法,使用动画演示将更容易理解铭记。目前已实现了部分算法,并将持续更新。
+
+## 音视频
+
+### [ggtalk | 创业那点事:听莲叔和羊叔回忆峥嵘岁月](https://talk.swift.gg/9)
+
+这一期内容,对于大多数程序员都挺有指导意义,羊叔和莲叔分享了自己曾经创业的经历,同时引出了关于程序员职业发展话题的讨论。面对可能高回报但同样高风险的创业机会,作为工程师应该如何判断,如何抉择,创业公司的股份和期权能不能拿,意味着什么,这些问题,你都能在节目中找到答案。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@XanderXu](https://github.com/XanderXu),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#51-2019.01.09.md b/Reports/2019/#51-2019.01.09.md
new file mode 100644
index 000000000..1f040eeca
--- /dev/null
+++ b/Reports/2019/#51-2019.01.09.md
@@ -0,0 +1,136 @@
+# 老司机 iOS 周报 #51 | 2019-01-07
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [iOS 靠谱内推专题](https://www.yuque.com/iosalliance/article/bhutav)
+
+号外号外~这里有一份靠谱的 iOS 内推职位列表,希望能给大家在这个裁员寒冬带来一点暖意。
+
+## 他们的 2018 年总结
+
+在看完 [50](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/Reports/2019/%2350-2019.01.02.md) 期 *他们的 2018 年终总结*,相信大家都有所收获。本期同样也为大家带来了一些小伙伴们自己的年终总结,希望这些总结能够帮助到大家。
+
+- [2018 年终总结 - 瓜地](https://www.desgard.com/summary-2018/)
+- [2018 年终总结 - 唐巧](http://blog.devtang.com/2019/01/01/2018-summary/)
+- [2018 年终总结 - 犀利豆](https://xilidou.com/2019/01/01/2018/)
+- [2018 年终总结 - 筑梦师Winston](https://www.jianshu.com/p/14ec3016a69c)
+
+## 文章
+
+### 🌟 🐢 [Understanding Xcode Build System](http://www.vadimbulavin.com/xcode-build-system/)
+
+本文介绍了`Xcode Build System`的各个部分,帮助我们提升对于 Xcode 编译的基础知识。很多的包体积减少方案也是基于这个基础知识之上,对于 iOS 开发人员来说很有必要了解
+
+1. Preprocessor(预处理):这个阶段处理一些语法糖的东西,譬如一些编译宏的展开
+2. Compiler(编译):将 Swift 工程编译成一个中间语言,一般采用两个编译器,一个是 Swift 语言编译器,一个是 OC、C++/C 编译器(为了解决混编的问题)
+3. Assembler(汇编):将中间语言统一转成操作系统能理解的二进制代码
+4. Linker(链接):将一切依赖的外部库加入到二进制包中
+5. Loader(装载):变成一个可执行程序,添加程序执行的入口,以便操作系统能够直接跑起来
+
+### 🌟 🐎 [OCEval - 动态执行 ObjectiveC 的热修复方案](https://juejin.im/post/5c24a8396fb9a049d5198dfc)
+
+苹果在18年多次对基于 runtime & JavaScriptCore 的热修复方案进行全面的打压,导致 JSPatch 以及其混淆 or 变种,变得难以过审。但是本文作者依然在热修复的探索上寻找并实现了一条新的方案 OCEval。OCEval 的本质是作者自己实现了一个 OC 语法的简单解释器,包含了基础的词法分析与语法分析,从而能够在运行期将 OC 代码生成抽象语法树 AST 然后进行执行。这样就可以将OC这种原本必须经过编译再运行的语言,扩展为 js 那样的解释执行,从而能够做到动态下发代码并且运行。同时再通过 runtime 进行 aspect 那样的 hook 操作,实现热修复线上代码。整个代码都已经开源,对编译原理有兴趣的同学值得深入好好学习一下。
+
+### 🐢 [[App 探索] JSBox 中幽灵触发器的实现原理探索](https://juejin.im/post/5c2c16b66fb9a049e12a4f0e)
+
+JSBox 中有一项奇特的功能 - 幽灵触发器,它在 App 进程被杀死的情况下,也可以将通知固定在通知栏,即便用户点击清除,也能马上再弹出,永远不消失。本文作者通过一系列的实践研究分析了这个 “幽灵触发器” 功能的实现原理,最终以 [Demo](https://github.com/577528249/NotificationForever) 的形式给出了一个可行的实现方案,希望对感兴趣的读者提供帮助。
+
+> JSBox 是由钟颖开发的一个提供 JavaScript 集成开发环境的 iOS 应用,可以通过它来构建各种有趣的效率工具,其中有很多巧妙的功能实现值得我们研究探讨。
+
+### 🐢 [10w+ 字详解 Runtime](https://github.com/DeveloperErenLiu/RuntimePDF)
+
+如题,本系列 Runtime 文章总共九篇,总字数为 10w+。一个技术要点能写 10w+ 不容易,能把一个技术要点循环渐进、细致确当、系统全面地讲清楚,真正做到一个系列搞定,足见作者的匠心。如果不想再被 Runtime 题材的文章“碎片化”,那就从这里开始吧!
+
+### 🐎 [技术年货:美团技术沙龙合辑大放送——85 个演讲,70+ 小时视频](https://mp.weixin.qq.com/s/wamJkpq3HWpKsBc3okqUwg)
+
+虽然美团近期在面临裁员风波,但不可否认的是美团是国内对技术分享做的最好的公司之一了。本文详细整理了今年所有线上线下美团技术沙龙的演讲稿和视频,覆盖前端、后台、系统、数据、算法、测试、运维等技术领域。这份“饕餮盛宴”必然会深受追求卓越的同学的喜爱。
+
+### 🐎 [How to use raw strings in Swift 5](https://www.hackingwithswift.com/articles/162/how-to-use-raw-strings-in-swift)
+
+当字符串应用于正则或初始化 JSON 等场景时,转义字符会给我们带来一些小烦恼。比如试试查找 `\(sth)` 的正则如何实现?
+Swift 5 中,新增了 Raw String 语法(用井号包裹,`#"raw string"#`), 通读本文,可以快速了解 Swift 5 中的原始字符串该如何应用。
+
+扩展阅读:[SE-0200](https://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md)
+
+### 🐢 [iOS 性能优化之计算多行 Label 高度的新方法](https://mp.weixin.qq.com/s?__biz=MzU3NTY3MTQzMg==&mid=2247484307&idx=1&sn=06d33d349ab6019b25a268f316ce7eb9&chksm=fd1ede74ca6957628d59c222767105b54fcd57b9efb085e868dae995fcd46d50e4023d4e0d7c&mpshare=1&scene=23&srcid=0103uUtd8RIuQxhWoWbXEcTh#rd)
+
+本文中“根据字体来计算字符串总宽度,从而得到多行 Label 高度”的想法,也比较新颖,网上也没有找到资料,但是某些读者日常开发中可能会碰到,本文比较系列的从发现问题到解决问题进行了阐述。如果这篇文章能够给读者们造成一些启发,也能够让这篇文章发挥价值。
+
+### 🚧 🐎 [Swift CoreNFC as quick as possible](https://medium.com/@myrickchow32/swift-corenfc-as-quick-as-possible-79544796cd0a)
+
+正如标题所写的,这是一篇快速使用 CoreNFC 的教程。本文总结了使用 CoreNFC 的主要流程和一些需要注意的细节。文章内容足够用来了解 CoreNFC 了,但如果想感受或者弄清一些细节,最好还是实践一下。
+
+## 设计
+
+### 🐎 [[译] 色彩无障碍性产品设计指南](https://juejin.im/post/5c2c233d6fb9a049bd4266b7)
+
+数字产品的无障碍设计旨在为所有人提供精致的使用体验,这些人包括有视觉、语言、听觉、身体或者认知障碍的人。关于无障碍设计的讨论有很多,但你是否想过色彩的无障碍设计?这篇文章会介绍如何使用你已经知道的设计原则来进行色彩无障碍设计。
+
+## 工具
+
+### [少数派 2018 年终盘点以及编辑推荐](https://sspai.com/page/2018#page1)
+
+本统计中列举了这过去一年里,文章,APP,编辑的受欢迎的榜单。在这份年终报告中,我们可以看到一些耳熟能详的应用,也看到一些我们并没有留意到,但别人很喜欢的应用。各位童鞋不妨看一下 2019 是否有适合你新应用。
+
+### [AssetImportKit](https://github.com/eugenebokhan/AssetImportKit)
+
+AssetImportKit 是一个用 Swift 编写的跨平台库(macOS、iOS),可以在运行时将 [Assimp](https://github.com/assimp/assimp) 支持的文件转换为 SceneKit 场景。
+
+### [Mach-O Kit](https://github.com/DeVaukz/MachO-Kit)
+
+Mach-O Kit 是一个 Objective-C 框架,用来分析 Darwin 平台的 App 所使用的 Mach-O 二进制文件。Mach-O Kit 简单易用,并且是安全的,即使解析一个格式错误的 Mach-O 文件也不会导致程序崩溃,可以放心使用。
+
+## 代码
+
+### [DynamicJSON](https://github.com/saoudrizwan/DynamicJSON)
+
+DynamicJSON 使用了 Swift 4.2 中引入的新特性 `@dynamicMemberLookup` 来实现 JSON 数据的快速访问。相比传统方式,你不再需要使用方括号和双引号。
+
+## 音视频
+
+### [ggtalk | 创业那点事:普通开发者的回忆、反思和迷茫](https://talkorigin.swift.gg/10)
+
+这是 ggtalk 创业系列的第二期,从在创业公司工作过的普通开发者的口中了解对于很多工程师而言,在创业公司是一种怎样的感受, 主要由翻译组的梁杰、珂珂和 MM 来做分享。其中最典型的,就是个人发展和公司发展频繁的冲突和变化。公司业务经常变化,虽然能够磨炼工程师不断的接受新的挑战,但也会造成无法在某一个细分领域不断深入。工程师在类似的境遇下该如何权衡,如何选择,相信大家听完这一期节目,会有新的感受。
+
+### [Typed Notifications](https://talk.objc.io/episodes/S01E27-typed-notifications-part-1)
+
+通过 `Notification` 时其中一个问题就是发送方跟接收方都必须通过约定去传值,Swifter Talk 这一集就探讨了如何通过类型化 `Notification `,统一使用对应类型的 `Descriptor` 去完成 payload 的编码和解码,去完成一套类型安全的通知系统。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@XanderXu](https://github.com/XanderXu),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#52-2019.01.14.md b/Reports/2019/#52-2019.01.14.md
new file mode 100644
index 000000000..d8bcb6320
--- /dev/null
+++ b/Reports/2019/#52-2019.01.14.md
@@ -0,0 +1,230 @@
+# 老司机 iOS 周报 #52 | 2019-01-14
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [GitHub 宣布创建私有仓库免费且不限量](https://blog.github.com/2019-01-07-new-year-new-github/)
+
+微软在今年 6 月收购了 GitHub,而在半年后,它给广大开发者带来了第一个福音 - 私有仓库转为免费且不限量。但值得一提的是,私有仓库目前最多仅支持 3 个协作者,如果超过 3 个,仍然需要购买付费服务。
+
+另外,在个人主页,GitHub 还在本周更新了一个小 feature - 个人主页的状态管理。我们可以在自己的主页为自己设置状态,包含一个 emoji 以及一句描述。
+
+> 推荐人:[tyrad](https://github.com/tyrad)
+
+### [Flutter 示范应用现已开源 — 万物起源 (The History of Everything)](https://mp.weixin.qq.com/s/GwBlb4SM2BusWC_bfVL8gA)
+
+在本月初举办的 Flutter Live 活动上,Flutter 团队向大家展示了一款名为 The History of Everything(万物起源)的应用,向大家展示了 Flutter 的精美的界面和优秀的性能,现在这款应用的源代码已经在 GitHub 上开源。这款应用不仅突出了 Flutter 的强大,也展示了如何高保真的还原设计师设计并保持原生的应用体验。它构建了一个精美的时间轴,你可以上下滑动以及任意缩放整个时间轴,时间轴上的历史事件会随着缩放跟着消失或者出现。
+
+### 他们的 2018 年总结
+
+2019 已经过去了2周,相信小伙伴们对于 2018 年都有自己的总结。本期同样也为大家带来了小伙伴的年终总结,希望对大家有所帮助。往期 2018 年总结可以查阅 [50期](https://github.com/SwiftOldDriver/iOS-Weekly/blob/78d50e213079e100b24f19b05ddd4778700108bc/Reports/2019/%2350-2019.01.02.md)、[51期](https://github.com/SwiftOldDriver/iOS-Weekly/blob/78d50e213079e100b24f19b05ddd4778700108bc/Reports/2019/%2351-2019.01.09.md)。
+
+- [2018 年终总结 - 补锅匠(掘金 iOS 开发者)](https://juejin.im/post/5c27119d6fb9a049df2425cf)
+
+## 文章
+
+### 🌟 🐢 [It Looks Like You Are Trying to Use a Framework](https://www.bignerdranch.com/blog/it-looks-like-you-are-trying-to-use-a-framework/)
+
+Frameworks 是打包资源和拆分代码的常用方式。拆分 Frameworks 的作用不仅仅是避免构建时的重复编译,合理的使用 Frameworks,可以让代码库层次清晰,提升调试效率,确保代码结构保持最大的可重用性。
+
+[第一篇文章](https://www.bignerdranch.com/blog/it-looks-like-you-are-trying-to-use-a-framework/) 包含 Frameworks 相关的基础知识:
+- 静态库
+- 动态库
+- Frameworks 及其内部结构
+- 在 Xcode 中链接和嵌入 Frameworks
+- 使用 Frameworks 前要考虑的因素
+- 一些方便探索 Frameworks 的命令行工具
+
+[第二篇文章](https://www.bignerdranch.com/blog/it-looks-like-you%27re-still-trying-to-use-a-framework/) 则引导我们在逐步解决构建错误的过程中理解 Frameworks,还会介绍 Swift 和 Objective-C 混编时接口间是如何找到对方的。
+
+### 🌟 🐕 [The Complete Guide to iOS and Swift Job Interviews](https://www.hackingwithswift.com/articles/157/the-complete-guide-to-ios-and-swift-job-interviews)
+
+这篇文章的作者是 [Hacking with Swift](https://www.hackingwithswift.com/store) 的创始人,文中分享了 iOS 程序员找工作的一些心得,值得注意的是,现在 iOS 招聘一般都要求熟悉 Swift 相关知识。
+
+1. 日常做好一些找工作的准备,譬如写播客,参加外部的技术交流,参与 GitHub 项目等
+2. 写一份好的简历,让人知道你过去的工作经历和价值,注意,复制粘贴和假大空的文字描述一点用都没有
+3. 准备面试,一般最好刷一些面经,也要做好手写算法的准备
+4. 面试时平复好紧张的情绪,越紧张越回答不上来问题
+5. 一般公司的面试题在网上都可以看到类似的,不用过于担心
+6. 初级工程师和高级工程师的面试侧重点有些不一样,不过尽可能地展示一下你的知识深度是没错的
+7. 编码能力现在在面试时都考察得比较多,千万不要轻视这个事情
+8. 每次面试都做好总结,让自己在面试中成长
+
+### 🐕 [开发者如何突破那被限制的视野](https://juejin.im/post/5c37022d51882523ea6de697)
+
+尽管作者的一些观点可能值得商榷,但更多的可以给我们一些指引。文末作者的高度提炼,“输出倒逼输入, 只有你真正知道自己要做什么了, 你学习的方向就会变的异常明确”,更是发人深省。
+
+1. 自我接纳,这是精准学习的前提
+2. 技术储备,要认识到技术只是一个工具,而工具是可替换的
+3. 动手实践,转换视角,学以致用
+
+### 🐎 [为什么我觉得 Flutter 短期内不会流行但依然选择学习它](https://limboy.me/essay/2019/01/07/is-flutter-the-future.html)
+
+最近 Flutter 的文章越来越多了,也有越来越多的人去尝试了 Flutter。有更多的人参与到 Flutter 生态中来,对 Google 来说,对 Flutter 团队来说都是一件乐见之事。
+
+本文作者在自己尝试了 Flutter 的基础上,详细说了自己的开发体验,也说了自己对 Flutter 的观点。对于还没尝试的同学来说,本文可以提供一个初步的了解。
+
+### 🐎 [Swift: memory leak gotcha with 'weak self'](https://blog.haloneuro.com/swift-memory-leak-gotcha-with-weak-self-67293d5bc060)
+
+这是一篇挺有意思的文章,讲述的是在 Swift 的 closure 多层嵌套中,何时建立弱引用而有可能出现的问题。
+
+相信这个问题,有很多人之前曾经遇到过,或者说曾经思考过那样的情况应该怎样处理。有兴趣的同学们不妨阅读。
+
+> 推荐人:[ApolloZhu](https://github.com/ApolloZhu)
+
+### 🐎 [The iOS Menu](https://codea.io/blog/the-ios-menu/) & [Detailing the iOS Menu](https://codea.io/blog/detailing-the-ios-menu/)
+
+这两篇系列文章讲述了 Codea (iPad lua 编辑器) 作者在 iOS 上设计一个 macOS 风格的下拉菜单。文章中,可以了解到作者一步步的思考过程,以及相关的技术细节想法,例如:毛玻璃效果,贝塞尔绘制圆角,选择交互动效果等等。同时,代码也[开源](https://github.com/TwoLivesLeft/Menu)了。
+
+> 推荐人:[ApolloZhu](https://github.com/ApolloZhu)
+
+### 🐕 [State Restoration Tutorial: Getting Started](https://www.raywenderlich.com/1395-state-restoration-tutorial-getting-started)
+
+State Restoration(状态恢复)是在应用重新启动时恢复到上一次结束时的状态。当 APP 切到后台,很难保证应用不被用户或系统杀掉。在 iOS 6.0 中,Apple 为我们提供了 `UIStateRestoration` 来实现应用状态的保持和恢复。
+
+本文作者通过实例 Pet Finder 向我们展示了应用如何实现状态恢复,主要有以下几个步骤:
+
+1. `AppDelegate` 中实现 `shouldSaveApplicationState` 和 `shouldRestoreApplicationState`。
+2. 设置 views 或 view controllers 恢复标识符 Restoration ID。
+3. 在需要恢复的 views 或 view controllers 中 实现 `encodeRestorableStateWithCoder`、`decodeRestorableStateWithCoder`、`applicationFinishedRestoringState` 并处理相关的恢复业务逻辑。
+
+另外文中作者也给出了恢复基于代码创建的 view controllers 实现方法,状态恢复尤其适用于恢复用户草稿状态的业务场景,有兴趣的读者可以实践一番。
+
+> 原文中提供的 Demo 基于 Xcode 7.3、iOS 9.3 和 Swift 2.2,在 Xcode 10 中编译 Error 99+,编辑在实践中已对 [Demo](https://github.com/GesanTung/PetFinder) 进行更新,支持 Swift 4.2。值得注意的是 `applicationFinishedRestoringState` 是在 `viewWillAppear` 之后执行,很多资料对此描述有误。
+
+### 🐕 [ARKit Pods — SCNPath](https://medium.com/@maxxfrazer/arkit-pods-scnpath-d4b491803019)
+
+很多 ARKit 开发者的首选框架是 SceneKit,因为 SceneKit 可以访问 iOS 的原生功能。SceneKit 提供了一些默认的几何体,SCNBox、SCNSphere、SCNPyramid 和 SCNShape,但如果你想构建点不一样的东西,就要深入钻研来创建自己的几何体了。作者最新的开源框架用于根据 SCNVector3 点数组来创建路径,在这篇文章里作者用一个实际的例子介绍了如何利用开源的 SCNPath pod 来创建路径。
+
+### 🐕 [Swift Import Declarations](https://nshipster.com/import/)
+
+本文中讲述了 `import` 在 Swift 中的使用。
+
+- 如果 import 复数 module 中有重复的字符,可以使用 `ModuleA.func ModuleB.func` 来区别调用。
+- 可以指定引入某个 Module 的单一方法、变量等,如:`import func Module.funcA`(第二个为 funcA 类型)。
+- Swift 同名处理优先级:本地声明 > 引入指定声明 > 引入模块。
+- 引入模块中常量,变量的时候,最好使用 `import type Module.var` 的方式,更好让其理解作者的意图。
+- 引入子模块 `import Module.subModule`,以防止其他子模块的影响,明确使用范围。(但不会使你的程序编译更快)。
+
+### 🐕 [[NSMutableAttributedString initWithData:options:documentAttributes:error] 崩溃分析](https://www.jianshu.com/p/184a57f12c6e)
+
+本文从汇编的角度,逐步定位了 `NSMutableAttributedString initWithData:options:documentAttributes:error` 概率崩溃的问题,其定位问题的过程、思路和方法值得借鉴。另外文中提到的 [优雅解决 iOS 8 UIScrollView delegate EXC_BAD_ACCESS](http://ziecho.com/post/ios/avoiding-uiscrollview-exc_bad_access-on-ios8) 中的方法也推荐参考。
+
+### 🐕 [Why is there a "lag" in iOS gesture detection near the edges of the screen?](https://blog.kulman.sk/why-ios-gestures-lag-at-the-screen-edges/)
+
+作者分享了一次排查屏幕边缘手势延迟 bug 的过程,小编觉得这个 bug 非常有意思,很值得大家花一些时间去了解它,让大家对手势有更多一点了解。
+
+### 🐎 [App thinning checklist](https://oldoldb.com/2019/01/09/App-thinning-checklist/)
+
+本文作者总结了他对 iOS 版的 Microsoft Edge 进行安装包瘦身时所用到的一些思路、方法和工具,各位可以收藏以便需要做应用瘦身时拿来参考用。文章中提到把监控包大小加入到持续集成环节中是非常值得去实践的一种做法。
+
+### 🐕 [饿了么物流移动端业务可用性监控体系建设](https://juejin.im/post/5c3577e0f265da616c65ca80)
+
+本文介绍了饿了么物流团队在移动端业务可用性监控体系建设上的一些探索和实践,这为有在做可用性监控体系的朋友们提供了一些很好的参考方案和思路。他们把监控体系大致分为了四层,从大盘趋势到异常实时告警以及使用日志进行现场还原,同时还可以通过大数据分析业务健康程度。之后分享了一个排查网络层问题的实战经历来说明这套监控体系的价值。在文末他们提到了一些目前遇到的问题和接下来的发展方向。
+
+### 🐕 [Implenting Promises in Swift](https://felginep.github.io/2019-01-06/implementing-promises-in-swift)
+
+目前网上很少有 Swift 实现 Promises 相关的文章,所以作者写了一篇文章分享了相关的内容,并且作者选择了测试驱动开发,不断地构建测试,然后再不断地调整代码满足测试,非常值得一看。
+
+### 🐕 [How to read Apple’s developer documentation](https://www.hackingwithswift.com/articles/167/how-to-read-apples-developer-documentation)
+
+阅读技术文档是工程师必备的技能之一,但很有趣的是,阅读技术文档不只是国人入门编程的一道坎,其实很多以英语为母语的人也一样不擅长。Swift 技术网站 Hacking With Swift 过去一年收到最多的文章请求,就是帮助读者阅读和理解苹果的代码文档,所以就诞生了这么一篇文章。
+
+作者首先帮助大家理清技术文档的内容和结构,接着以具体的例子带着大家一起“查文档”,找到对应的定义,例子和代码,最后还鼓励大家,其实苹果的文档也有很多不足的地方,大家找不到自己需要的东西的时候也不需要灰心。
+
+### 🐢 [The Many Offline Options for iOS Apps](https://medium.com/device-blogs/the-many-offline-options-for-ios-apps-2922c9b3bff3)
+
+本文作者比较了 iOS 中的各种存储数据以达到 App 无网正常使用的方案,根据统计,如果加载速度超过 3 秒,有 40% 的用户会放弃使用。而在美国,有 15% 的 App 使用时间是处于无网状态下。因此,一个合理的离线运行方案将会为你的 App 带来更高的用户留存率。
+
+- 使用数据库:Realm、Core Data、Sqlite 等
+- KV 形式存放数据:plist、NSUserDefaults、NSKeyedArchiver、leveldb 等
+- 使用云数据库方案:Realm Platform、Firebase 等
+- 考虑一下将用户离线下的操作重放
+- 通过 React 的方式来监听数据变化
+
+## 工具
+
+### [iOS 模拟器录屏工具](https://github.com/alexp2ad/record-ios-simulator)
+
+Xcode 的模拟器自带有截屏功能,但是并没有录屏功能,通常我们需要使用其他的录屏工具(QuickTime、LICEcap等),但这个工具让你可以方便地直接使用 Alfred workflow 或者 CLI 去触发模拟器录屏。
+
+## 代码
+
+### [CoreML-in-ARKit](https://github.com/hanleyweng/CoreML-in-ARKit)
+本项目利用 CoreML 运行机器学习模型来识别出摄像头拍到的物体,并利用 ARKit 为其加上 3D 标签,实现简单的 AR 效果。项目代码简单,创意好,非常适合入门,学习如何使用机器学习模型处理图片及如何在 AR 场景中添加 3D 标签。苹果官方也推出了一个类似的官方 Demo:[Using Vision in Real Time with ARKit](https://developer.apple.com/documentation/arkit/using_vision_in_real_time_with_arkit),供大家参考学习。
+
+### [iOS 混合开发库(GICXMLLayout)](https://juejin.im/post/5bfce9d56fb9a04a102ef8ba)
+
+很多尝试过前端开发 Vue 开发的 iOS 同学,都感慨用 Vue 开发前端 UI 界面的时候,非常的方便,非常的强大。优秀的布局能力/数据绑定 MVVM/模板式的开发。如果能在 iOS 里也能如此方便的进行UI开发,相信也会大幅度提供页面开发效率,[GICXMLLayout](https://github.com/ghwghw4/GICXMLLayout) 这个库就是这样的一个库。
+
+GICXMLLayout 能干什么?有什么特点?
+
+- 使用 XML 来描述 UI、动画、事件绑定、数据绑定。
+- 数据绑定。
+- 支持 MVVM 模式。
+- 优秀的布局系统。
+- 模板系统。
+- 简单、优秀的自定义扩展能力。
+- 支持 JavaScript。
+- HotRload & HotUpdate。
+
+相关系列文章推荐去[作者的掘金专栏](https://juejin.im/user/57d6181f816dfa00544bc3d6/posts), 作者从项目简介,到源码架构,再到新手项目,灵活扩展,还有两篇项目实战,总共有八九篇文章深入解析 GICXMLLayout,值得深入学习。
+
+## 音视频
+
+### 🌟 [一起来开发泊学 App 吧](https://boxueio.com/path/let-us-build-and-launch-a-forum)
+
+如果你正在自学使用 Swift 做 iOS 开发,并期望找到一份相关的工作,但却苦于没有项目练手和熟悉整个 App 的开发流程。或者你十分向往成为一个独立开发者,但又不知从何开始。又或者你想看看 Swift 充当服务端开发语言时会有怎么样的表现。那小编十分推荐你看看泊学上的这个系列视频,你得到的会远比一些培训班得到的多。目前已经推出以下 4 个系列,且内容仍在持续更新中:
+
+- [设计 iPhone 版泊学 App](https://boxueio.com/series/design-boxue-app-from-scratch):基于 Apple 官方的 iOS design guideline,我们用 Sketch 从零开始设计泊学自己的 iOS App。在这个真实的项目中,了解 Sketch 的使用经验和常用插件。
+- [Vapor Up and Running](https://boxueio.com/series/vapor-up-and-running):如果,你已经掌握了 Swift 编程语言,再用它学习服务端开发,就变成了一个性价比很高的事情。这个系列里,我们会从零开始,基于 Vapor,详细地讲述每一个服务端开发领域常用的技术场景。
+- [Vapor Fluent](https://boxueio.com/series/vapor-fluent):在这个系列里,我们会实现一个类似论坛的 App。通过这个过程,来了解 Vapor 中的 Fluent 组件。通过它,我们就可以无需了解 SQL 的细节,而是用 Swift 的方式和数据库打交道。
+- [基于 MVVM 构建泊学 App](https://boxueio.com/series/build-boxue-app-in-mvvm):在这个系列里,我们以实现 Boxue App 举例,以一个独立开发者的视角,尽可能在代码的可维护性、可测试性、可重用性以及可协作性,达成让自己满意的实践。
+
+### 🌟 [Teahour.fm | #94 与 Hawstein 和左程云聊算法和数据结构](http://teahour.fm/2019/01/02/algo-with-hawstein-and-chengyun.html)
+
+这期的 Teahour,讲的是很多程序员很关心的算法和数据结构。特别是这一年来,国内各大公司对算法和数据结构在面试中的考察变得越来越多,重要性也越来越高。
+
+对于 iOS 程序员来说,算法和数据结构则更应该重视。平时用不到的算法和数据结构,很可能在面试之时成为你的心头大患。有兴趣的同学不妨听听这期节目,算是能够做到有所了解。
+
+### [ggtalk | 创业那点事:逆流而上的泊学](https://talk.swift.gg/11)
+
+相信绝大多数 Swift 程序员都听过泊学,泊学是一个通过视频在线学习编程的网站。这一期 ggtalk 邀请到了泊学的两个创始人来聊了聊创业,小编我听一半就完全被圈粉,秒充会员看了一波视频。从整个采访过程中可以看到泊学虽然整个过程做的很不容易,但丝毫不影响两个创始人独具匠心的打造体验超棒的视频教程。这就是典型的为了要做有意义的事情而做的创业,而不是简单想着蹭热度捞一笔。墙裂看好泊学,推荐大家从听听这期节目开始,了解泊学。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@XanderXu](https://github.com/XanderXu),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#53-2019.01.21.md b/Reports/2019/#53-2019.01.21.md
new file mode 100644
index 000000000..7ebbdca9d
--- /dev/null
+++ b/Reports/2019/#53-2019.01.21.md
@@ -0,0 +1,171 @@
+# 老司机 iOS 周报 #53 | 2019-01-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [热修复、生态、混合工程 | Flutter 2019 产品路线图正式公布](https://mp.weixin.qq.com/s/nRAF7g3Faz5SvsPJ1A98Iw)
+
+Flutter 的 2019 产品线路图已正式公布,热修复、生态、混合工程,可谓精确打击现有的痛处。特别是热更新,不过更多细节要等到今年的 Google I/O 大会。
+
+## 文章
+
+### 🌟 🐕 [Functional networking in Swift](https://www.swiftbysundell.com/posts/functional-networking-in-swift)
+
+一篇非常不错的、手把手教学的 Swift 函数式编程教程。通过使用 Swift 的函数式特性以及 Future 和 Promise 的思想,一步步的把一个常见的网络请求模型改造得非常优雅,并且整个改造的过程,一步步的减少类型,一步步的减少副作用,使用无状态的函数组合来实现逻辑。从这篇文章也可以看到,函数式编程最重要的是思想,而不是某个具体的库。当我们学会了思想,即便不依赖任何第三方库,我们也可以快速搭建出很 pure,很优雅的架构。
+
+### 🌟 🐎 [关于 Flutter Layout 你应该知道的](https://limboy.me/tech/2019/01/11/flutter-layout.html)
+
+本文介绍了 Flutter 的几种布局方式以及需要注意的问题,介绍了 `Unbounded Constraints`、`Flex`、`Stack` 等。了解文中所提到的这些,基本日常使用 Flutter 关于布局方面的也就够用了。
+
+### 🐎 [Xcode tips and tricks – part one](https://www.hackingwithswift.com/articles/166/xcode-tips-and-tricks-part-one)
+
+本文是 Xcode tips and tricks 系列的第一个合辑,包含了 10 个使用 Xcode 的小技巧。每个小技巧都配有简洁的文本和一个小视频,小视频长度都不超过 20 秒。用这种形式学习小技巧,效果非常不错,简洁直观,一目了然,希望作者一直更新下去。本篇文章不需要翻墙,但观看视频需要翻墙。
+
+### 🐎 [swift-sh](https://nshipster.com/swift-sh/)
+
+Swift 有一个活跃的社区,现在带来了 swift-sh 以供实现脚本功能,同时提供了包管理,且在 GitHub 中开源,见 [mxcl/swift-sh](https://github.com/mxcl/swift-sh)。
+
+- 通过注释 `import DeckOfPlayingCards // @NSHipster ~> 4.0.0` 引入 Github 中 NSHipster 中的 DeckOfPlayingCards 包。
+- 可以指定依赖的 remote 地址,`import Remote // https://example.com/Remote.git`。
+- `#!/usr/bin/swift sh` 脚本中声明运行方式,swift sh,系统在运行的时候,会去寻找 swift-sh 的执行。
+- swift-sh 使用内置 eject 命令简化从脚本到包的转换,`$ swift sh eject ./bridge`。
+
+当前的限制:
+
+- 缺乏从外部模块导入单个声明。
+
+### 🐢 [High Performance Numeric Programming with Swift: Explorations and Reflections](https://www.fast.ai/2019/01/10/swift-numerics/)
+
+利用 Swift 进行数学编程并不是一个很热门的领域,例如训练机器学习模型,但作者经过几周的研究与实验构建了几个数学库,可以达到与精心优化过的矢量化 C 语言相同的速度,同时还能够保持简洁易用。在这篇文章里,作者会为你展示如何使用 Swift 进行有效的数学编程,其中的例子主要都来自 [BaseMath](https://github.com/jph00/BaseMath) 库,这个库为 Float 和 Double 型提供了通用的数学函数。
+
+### 🐎 [客户端单周发版下的多分支自动化管理与实践](https://tech.meituan.com/2019/01/10/traffic-git-branch-management.html)
+
+过去,大多数 App 的发版时间一般为 3 到 4 周,但如今,为了快速验证产品策略,又或者赶固定时间的运营活动,许多产品的发版节奏较过去变得更快。但快速的发版节奏带来的必然是并行开发与工程代码版本管理的一系列问题。本文介绍了美团团队是如何来解决这一问题的,并且基于文中提到的流程已经稳定进行了 10 个小版本的开发。
+
+### 🐎 [【译】Language Server Protocol](https://swift.gg/2019/01/15/nshipster-language-server-protocol/)
+
+这篇文章是 [Language Server Protocol](https://nshipster.com/language-server-protocol/) 的译文版。Matt 大神解释了什么是 LSP,LSP 是怎么工作的,以及潜在的可能带来的好处,我们可以一起重温下。
+
+相关阅读:[Swift Development with Visual Studio Code](https://nshipster.com/vscode/)
+
+### 🐢 [iOS 拾遗——为什么必须在主线程操作 UI](https://juejin.im/post/5c406d97e51d4552475fe178)
+
+我们都知道 UI 相关方法必须在主线程调用,究其原因的或许不多。
+
+本文由浅入深,从多方面阐述为什么不能在主线程操作 UI。包含 `UIKit` 非线程线程安全的设计、`UIApplication` 事件响应、底层 `Core Animation Pipeline`。另外,还介绍了 `Texture` 和 `ComponentKit` 的实现来,希望能够带给大家一点思考。
+
+>推荐人:[杜玮-Dywane](https://github.com/Dywane)
+
+### 🐢 [React Native 工程中 TSLint 静态检查工具的探索之路](https://mp.weixin.qq.com/s/H3GW43s1aOup2J2VQHpqjg)
+
+代码的静态检查,可以在代码的规范性、安全性、可靠性、可维护性等方面起到重要作用。 iOS 可以使用 Clang Static Analyzer 、 OCLint 等工具, Android 可以使用 CheckStyle、Lint、Findbugs、PMD 等工具,而对使用 TypeScript 的 React Native 工程,TSLint 则成为了主要代码静态检查的工具。
+
+本文阐述了使用 TSLint 的原因,并对 TSLint 的使用做了详细的介绍,既可以直接使用 TSLint 的规则,也可以自定义编写 TSLint 规则。使用 TSLint 后可以有效规避一些低级错误,同时可以快速定位问题代码,将开发状态从“亡羊补牢”进化到“防患未然”。
+
+### 🚧 🐎 [Generate & Host your iOS Documentation](https://medium.com/@jonathan2457/generate-host-your-ios-documentation-39e21b382ce8)
+
+代码注释和说明文档对于我们维护和使用类库来讲,都是很有用的。很多时候我们也都是通过导出代码注释作为文档,因为这样能减少重复编写文档带来的额外工作量,也能避免代码和文档描述不一致带来的坑。
+
+本文就介绍了一款能够从 Swift 和 Objective-C 代码中提取注释来生成 HTML 格式文档的命令行工具 —— [Jazzy](https://github.com/realm/jazzy);同时也介绍了如何通过 Travis CI 来自动生成和部署文档到 GitHub Pages,保证了代码和文档的及时同步。这个思路完全可以用到公司内部的私有工作流程当中,通过工具和自动化提高工作效率。
+
+### 🐎 [不同 WKWebView 之间实现浏览状态隔离](https://oldoldb.com/2019/01/12/Session-isolation/)
+
+很多时候面对 webView 相关的登录状态,大家都是习惯一旦在一个 webView 进行了登录,在创建新的 webView 打开新的页面应该也能做到自动登录同步,这是一个比较常见的用户场景。但本文的作者所面对的场景恰恰是登陆隔离,即一个 webView 保持了登录,其他 webView 不会自动登录,面对这个需求,大家可以看看作者在这里面的研究与探索。
+
+### 🐢 [OBJECT SERIALIZATION IN IOS](https://dmtopolog.com/object-serialization-in-ios/)
+
+在这篇文章中,作者尝试将关于 iOS 开发中主要格式和数据序列化类型的知识系统化。还将 ObjC(NSCoding)与 Swift 4(Codable)的方法进行比较,并列出一些特定的用例,例如它们之间的互操作以及使用复杂对象图的能力。
+
+- 序列化作为一个单独的过程
+- NSCoding
+- NSCoder 和 NSKeyedArchiver
+- JSON
+- PLIST
+- 其他格式
+- Codable
+- 一些基准和比较
+- NSKeyedArchiver 编码可编码
+- 编码复杂的对象图
+- Codable 作为 NSCoding 的替代品(作为结论)
+
+## 设计
+
+### [「Keep 设计开发语言」实践与思考](https://mp.weixin.qq.com/s/z880jdHhHeJhMjA6GJAaYQ)
+
+其实这篇文章并不是说编程的,但是依然值得程序员们读一读。为什么呢?因为:
+
+1. 你有多少次和 UX 发生了争执,原因是 UX 不停的改设计?
+2. 你有多少次搞不清楚 UI 中元件的布局,大小,对话框的设计要怎么样,然后只能不停的去问 UX 或者 PM?
+3. 你有多少次因为代码没有很好的模块化不得写别人写过的重复 UI 元件而加班?
+
+那就是时候在公司内部和 UX 团队一起建立起一套完整的属于你们的设计语言了。这不仅是为了你们的产品质量,更是减少重复劳动,解放程序员的最佳方案。
+
+什么?你问我怎么开始搞?那还不快看看这篇来自 Keep 团队的文章参考参考?赶紧的。
+
+## 工具
+
+### [Bagel](https://github.com/yagiz/Bagel)
+
+Bagel 是一个轻量级的原生 iOS 网络调试器。它的方便之处在于不需要使用证书和设置代理。只要将 iOS 设备和 Mac 电脑连接到同一个网络,就可以在 Bagel 的 Mac 客户端查看当前在 iOS 设备上运行的 APP 的网络通信情况。
+
+### [awesome-mac](https://github.com/jaywcjlove/awesome-mac)
+
+无论你是 macOS 小白,还是 macOS 的高阶玩家,你总能从 awesome-mac 的软件列表中找到一些你没有见到过的实用软件工具推荐。这份列表来自广大开发者的多年积累和精品推荐。它涵盖了日常生活至开发软件推荐一应俱全。
+
+## 音视频
+
+### [ggtalk | 狭义跳槽论:面试官,大厂新人和准备起跳的某 C](https://talk.swift.gg/12)
+本期 ggtalk 聊了程序员非常喜闻乐见的话题,采访了翻译组最近刚跳槽或者准备跳槽的三位同学,聊聊为什么跳槽,跳槽的主要考虑是什么,收益和风险如何权衡。听下来感觉很有共鸣,三位同学遇到的绝大多数情况其实其他程序员也会遇到。最近有跳槽想法的同学不妨可以参考。
+
+### [Swift Community Podcast #1](https://www.swiftcommunitypodcast.org/episodes/1)
+
+两个社区大 V [John Sundell](https://www.swiftbysundell.com),[Garric Nahapetian](https://twitter.com/garricn) 加上 Swift 创始人之一 [Chris Lattner](https://twitter.com/clattner_llvm),他们开始了一档全新的博客节目,主讲 Swift 相关的各种内容。
+
+第一期主要讲了这个节目开始的缘由和各自开始钟情于 Swift 的一些小故事。第二期的话题[正在征集中](https://github.com/SwiftCommunityPodcast/podcast/issues/2),目前评论区里已经有人提出了 TensorFlow / Scripting / Concurrency 等热门话题,大家有感兴趣的话题也可以去贡献一下。
+
+### [一起来开发泊学 App 吧](https://boxueio.com/path/let-us-build-and-launch-a-forum)
+
+如果你正在自学使用 Swift 做 iOS 开发,并期望找到一份相关的工作,但却苦于没有项目练手和熟悉整个 App 的开发流程。或者你十分向往成为一个独立开发者,但又不知从何开始。又或者你想看看 Swift 充当服务端开发语言时会有怎么样的表现。那小编十分推荐你看看泊学上的这个系列视频,你得到的会远比一些培训班得到的多。目前已经推出以下 4 个系列,且内容仍在持续更新中:
+
+- [设计 iPhone 版泊学 App](https://boxueio.com/series/design-boxue-app-from-scratch):基于 Apple 官方的 iOS design guideline,我们用 Sketch 从零开始设计泊学自己的 iOS App。在这个真实的项目中,了解 Sketch 的使用经验和常用插件。
+- [Vapor Up and Running](https://boxueio.com/series/vapor-up-and-running):如果,你已经掌握了 Swift 编程语言,再用它学习服务端开发,就变成了一个性价比很高的事情。这个系列里,我们会从零开始,基于 Vapor,详细地讲述每一个服务端开发领域常用的技术场景。
+- [Vapor Fluent](https://boxueio.com/series/vapor-fluent):在这个系列里,我们会实现一个类似论坛的 App。通过这个过程,来了解 Vapor 中的 Fluent 组件。通过它,我们就可以无需了解 SQL 的细节,而是用 Swift 的方式和数据库打交道。
+- [基于 MVVM 构建泊学 App](https://boxueio.com/series/build-boxue-app-in-mvvm):在这个系列里,我们以实现 Boxue App 举例,以一个独立开发者的视角,尽可能在代码的可维护性、可测试性、可重用性以及可协作性,达成让自己满意的实践。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@XanderXu](https://github.com/XanderXu),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#54-2019.01.28.md b/Reports/2019/#54-2019.01.28.md
new file mode 100644
index 000000000..9e063dafc
--- /dev/null
+++ b/Reports/2019/#54-2019.01.28.md
@@ -0,0 +1,213 @@
+# 老司机 iOS 周报 #54 | 2019-01-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+各位读者大家好!首先欢迎我们的新编辑 - 热爱分享的爱奇艺 iOS 开发 [@J_Knight_](https://github.com/knightsj) 加入周报团队~另外春节临近,本期周报也将是我们年前的最后一期,年后我们再见!祝大家春节快乐!
+
+## 新闻
+
+### 🌟 [老司机翻车现场:一个业余程序员组织如何收到滴滴的侵权通知](https://mp.weixin.qq.com/s/9-vbYu71fPTxpGAv8EL_6w)
+
+2019 年 1 月 23 日,这是一个值得所有老司机编辑铭记的日子,我们收到了来自滴滴法务团队的侵权通知。虽然我们完全不是一个实体组织,也毫无商业性质可言,和滴滴更不在一个行业,Logo 的颜色也完全不同。但是滴滴认为我们从 18 年 1 月开始使用的 Logo 和他们在 18 年 3 月登记的街兔 Logo “高度相似”,可能导致 APP 应用程序员的开发人员认为是街兔商标。对于这方面纠纷,我们也是大姑娘坐轿子头一遭,真谈不上老司机。于是我们选择按照对方要求第一时间替换掉所有可疑图片。在此期间,我们收到了很多读者和朋友的建议和帮助,非常感谢大家对老司机周报的关心和支持,我们全新的 Logo 也即将完成设计,很快会与大家见面。
+
+我们愿称此次严肃而又哭笑不得的事件为『123 老司机翻车门』,为了其他同在技术社区做分享的朋友避免受此类事件的影响,『[知识小集](https://github.com/awesome-tips/iOS-Tips)』特地整理了一份指南给大家 - [老司机翻车现场 续:技术之外,程序员如何自我保护](https://mp.weixin.qq.com/s/nkdNE1Nh-FZgx05LVYcVLQ)。
+
+### 🌟 [Swift 5 Release Notes for Xcode 10.2 beta](https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_beta_release_notes/swift_5_release_notes_for_xcode_10_2_beta?language=objc)
+
+万众期待中,Swift 5.0 终于和 Xcode 10.2 Beta 以及 iOS 12.2 Beta,macOS 10.14.4 Beta 一起降临。虽然距离正式版还有大概一个月多一点的时间,但是各位 iOS Swift 开发者已经可以开始着手准备进行适配了。
+
+Swift 5.0 应该能算是 Swift 从 1.0 以来的最大变革。不是因为语法变化多,而是因为从 5.0 开始,Swift 终于进入了 ABI 稳定时代,系统将自带 Swift 动态库,老版本 Swift 编译的库也将可以轻松的用到更新版本的 Swift 项目中。
+
+除了上面苹果官方给出的链接,也可以参考知识小集团队的[翻译版本](https://juejin.im/post/5c4b3e91e51d452c8e6d6bcc)。
+
+### [Upcoming Changes for Organization Teams](https://developer.apple.com/support/teams/)
+
+从 2019-02-12 开始,苹果开发者网站(developer.apple.com)和 App Store Connect 将会共用一套成员管理系统,有些角色权限将合并。这是个期待已久的改动,简化我们的维护成本。
+
+## 文章
+
+### 🌟 🐎 [Server-provided animations in iOS apps](https://badootech.badoo.com/server-provided-animations-in-ios-apps-b51ce63beff3)
+
+这篇来自 Badoo 团队的文章用一个例子介绍了如何将 Adobe After Effects(AAE)的动画导出为 iOS app 可以读取的格式(借助 Lottie 库),然后创建一种动画云存储服务,将动画存储在服务器上,然后按需传递给客户端 app。这种方法最显著的优点就是可以对动画更新流程进行解耦,也就是说如果要发布一个漂亮的新动画,设计师只要给服务器团队提供 JSON 就可以了,效率非常高!还有一个优点是不同的客户端平台(iOS、Android、Web)可以实现完全相同的功能而不需要调整现存的服务器端功能或原生动画。
+
+### 🌟 🐎 [A RunLoop for your Swift script](https://alejandromp.com/blog/2019/01/19/a-runloop-for-your-swift-script)
+
+上一期推荐里面有一篇关于 [swift-sh](https://nshipster.com/swift-sh/) 的介绍,如若未读,可以先跳转过去一看。
+这一文章主要是给出一下 Tips,当你需要执行一个异步任务的时候会发现,脚本跑完就结束,异步任务自然也得不到调用了,这是不符合需求的。iOS App 启动后会进入 Runloop 当中不停的在休眠和执行状态循环,保证 APP 在没任务的状态也不会退出。同理,在脚本中,执行 `RunLoop.main.run()` 或者 `dispatchMain()` 会让脚本进入启动 Runloop,不会结束。当你异步任务 callback 后,调用 `exit(EXIT_SUCCESS)` 或 `exit(EXIT_FAILURE)` 退出当前 Runloop,并且结束脚本。
+
+### 🌟 🐕 [2018,我们的组件化实施之路](https://juejin.im/post/5c39b9a8e51d457cb97b944a)
+
+本篇文章是诸葛找房 iOS 技术团队近半年组件化实施之路的经验积累与沉淀,文章主要有 2 大部分。
+
+第一部分主要讲了组件化可选用的方案、组件化的分层、业务组件的拆分步骤:
+1. 组件预处理
+2. 组件抽离、编译、运行
+3. 组件引入
+
+第二部分分享了在实施组件化过程中遇到的一些问题:
+* 主工程中业务组件的引用方式问题
+* 业务组件的开发时机问题
+* 业务组件如何测试
+* 组件后续的开发与维护和组件回滚
+* 业务组件的粒度
+* 关于业务组件中文件的命名规则
+* 关于不同项目下同一业务组件的个性化差异解决方案
+* 其他细节问题如如何处理组件之间的相互跳转、业务组件之间如何进行复用等
+* 关于业务组件的评价标准
+
+组件化是一个漫长、繁琐、复杂但有意义的过程,是一项团队性的工作,不管是正在打算实施,还是已经进行过组件化实践,都可以阅读本文,相信读者朋友阅读本文都会有一定收获。
+
+### 🐎 [React Native vs Kotlin Multiplatform. How the Future of Multiplatform Development Will Look Like?](https://www.netguru.com/codestories/react-native-vs-kotlin-multiplatform)
+
+作者对比了 React Native 和 Kotlin 在跨平台上各自的优劣,同时也谈了自己对跨平台的未来的思考,虽然不是针对 iOS 的,但是也值得阅读参考。
+
+### 🐎 [Flutter vs React Native: A Developer’s Perspective](https://medium.com/flawless-app-stories/flutter-vs-react-native-a-developers-perspective-8914ca240a89)
+
+老生常谈的话题,作者从十个方面去比较了 Flutter 和 React Native 的优劣,可供还在选型的同学们参考。
+
+### 🐕 [How to use the coordinator pattern in iOS apps](https://www.hackingwithswift.com/articles/71/how-to-use-the-coordinator-pattern-in-ios-apps)
+
+本文介绍了如何使用 Coordinator Pattern 这一设计模式来分离出本不属于 View Controller 的一些职责 ,避免导致 ``Massive View Controller`` 的形成。Coordinator Pattern 可以翻译为协作者模式,该设计模式并不在 ``GOF`` 的 23 个设计模式之中。
+
+作者结合代码,从 Coordinator 的创建到应用,讲解了一个如何将跳转功能分离出 View Controller 的例子。读者通过阅读本文,可以了解到何为协作者模式,以及如何将该模式应用到我们自己的 APP 开发中。
+
+相关阅读:[The Coordinator](http://khanlou.com/2015/01/the-coordinator/)
+
+### 🐎 [Xcode tips and tricks – part two](https://www.hackingwithswift.com/articles/168/xcode-tips-and-tricks-part-two)
+
+文接上回,Xcode tips and tricks 系列的第二个合辑来了!作者更新的速度很快,本期仍然是 10 个快捷使用 Xcode 的文本 + 小视频,你肯定能发现一些“原来还能这样操作”的点。作者也在搜集大家的建议,如果你有什么清奇的手法,也不妨[分享](https://twitter.com/twostraws)出来吧!
+
+### 🐕 [WKWebView 实现浏览历史恢复](https://oldoldb.com/2019/01/16/Session-restoration/)
+
+在使用 WKWebView 的时候,我们会发现,WKWebView 无法实现浏览历史的持久化。WKWebView 中 backForwardList 属性用来记录浏览历史,但这个属性是只读的,且在下次冷启动 App 的时候,backForwardList 是全新的,故而会有这个问题。
+
+如何实现 WKWebView 浏览历史的持久化?本文作者通对 Firefox 的相关源码进行分析,借鉴了 Firefox 浏览器的实现方式。总结一下:
+
+1. 当 App 启动需要恢复浏览历史的时候,启动一个本地的 Web server 并且加载一个特定的本地页面
+
+2. 提取之前保存的所有 url 信息,构造本地 url 越过[同源策略](https://developer.mozilla.org/en-US/docs/Web/API/History_API)限制,传递到特定本地页面中,该页面通过调用 pushState 来达到修改 backForwradList 的目的
+
+3. 当本地加载这些特殊 url 的时候,之前启动的本地 server 可以将其重定向到正确的url
+
+### 🐢 [细说 iOS 代码签名](http://xelz.info/blog/2019/01/11/ios-code-signature/)
+
+iOS 签名机制其实挺复杂,我们可以跟随作者的脚步,一点点的去了解 iOS 签名机制中每一步的含义,此外作者还贴心的帮助我们将文章拆分,有助于我们分步阅读。
+
+- [细说 iOS 代码签名(一):签名的作用及原理](http://xelz.info/blog/2019/01/11/ios-code-signature-1/)
+- [细说 iOS 代码签名(二):开发者证书、Entitlements、Provisioning Profile](http://xelz.info/blog/2019/01/11/ios-code-signature-2/)
+- [细说 iOS 代码签名(三):签名的过程及代码签名的数据结构](http://xelz.info/blog/2019/01/11/ios-code-signature-3/)
+- [细说 iOS 代码签名(四):签名校验、越狱、重签名](http://xelz.info/blog/2019/01/11/ios-code-signature-4/)
+
+因作者篇幅比较长,讲解的比较深入,有兴趣的同学可以通篇读完收益更大。若时间有限,推荐缩略版的 [iOS App 签名的原理](http://wereadteam.github.io/2017/03/13/Signature/) 供大家参考。
+
+> 推荐人:[xelzmm](https://github.com/xelzmm)
+
+### 🐎 [Clear and searchable logging in Swift with OSLog](https://www.lordcodes.com/posts/clear-and-searchable-logging-in-swift-with-oslog)
+
+苹果在 WWDC 2016 ([Unified Logging and Activity Tracing](https://developer.apple.com/videos/play/wwdc2016/721/)) 推出了新的统一日志系统(the new Unified Logging system)—— OSLog,它比以前的 print 或者 NSLog 功能要强大的多,苹果也是强力推荐使用新的统一日志系统。
+
+本文主要介绍了新日志系统的三大特性:
+
+1. 新日志系统能够按子系统 (subsystem) 和分类 (category) 进行筛选搜索
+
+ ```
+ let ui = OSLog(subsystem: "com.lordcodes.chat.ChatApp", category: "UI")
+ os_log("Contact selected", log: ui)
+ ```
+
+2. 同时也支持指定日志级别 (Default, Info, Debug, Error, Fault)
+
+ ```
+ os_log("Contact selected", log: .ui, type: .info)
+ ```
+
+3. 默认不收集动态字符串 (dynamic strings) 和复杂对象 (complex dynamic objects) 的打印信息,确保用户敏感信息不会持久化到日志文件,需要收集的话要在格式化输出时指定为 `public`
+
+ ```
+ os_log("Contact %{private}ld selected", 2)
+ os_log("HTTP response: %{public}@", responseCode)
+ ```
+
+*注:[CocoaLumberjack](https://github.com/CocoaLumberjack/CocoaLumberjack) 封装的日志系统是支持 os_log(DDOSLogger) 的。*
+
+### 🐎 [以流的形式执行 Multipart 请求](https://swift.gg/2019/01/21/streaming-multipart-requests/)
+Foundation 框架中的 URL 类提供了非常全面的功能,此后还在 iOS 7 中新增了 URLSession 类。尽管如此,基础库中仍然缺少 multipart 文件上传的功能。
+本文介绍了怎样发起 multipart 请求,并为解决多文件传输的性能问题,通过 AFNetworking 和 Alamofire 的方式,将硬盘中数据以流的形式读取来执行 Multipart 请求解决此问题。
+
+### 🐕 [Using protocols as composable extensions](https://mecid.github.io/2019/01/17/using-protocols-as-composable-extensions/)
+
+面向协议是 Swift 推崇的一种编程范式,标准库里的基础类型也都是基于协议搭建起来的,利用 protocol extensions 的特性去达成复用和组合,但这些范式如何落实到业务上呢?这篇文章的作者就介绍了如何通过 protocol extension 去完成一个加载动画,并且对比了继承和协议的两种实现方式。
+
+### 🐎 [使用 Flutter 一年后,这是我得到的经验](https://mp.weixin.qq.com/s/FmK0RMCNNJe68Aq7tOUROA)
+
+过去一年开发者们对 Flutter 的热情有多高相信已经无需多言。Google 出品、跨平台、性能高等种种标签让越来越多的人加入其中。本文总结了作者一年来开发 Flutter 的一些心得,作者在 Flutter 上丰富的开发经验所进行的总结相信对于接下来想要尝试 Flutter 的同学是很实用的,这对我们做技术选型以及更多的考虑会很有帮助。
+
+## 代码
+
+### 🌟 [UIKitSwiftDSL](https://github.com/mecid/UIKitSwiftDSL)
+
+迫于 StoryBoard 写布局带来各种协作上的问题,大型项目的布局一般都用纯代码来实现。纯代码布局最大的问题是可读性太低,有没有办法改善?
+UIKitSwiftDSL 作者提供一个新思路:用区区 200 行代码实现一套布局 DSL([Domain Specific Language](https://draveness.me/dsl)),通过提供声明式的写法提升布局代码的可读性。
+
+建议通读源码,实现不复杂带来的使用体验却很有趣。或许我们也可以尝试设计一些 DSL 来优化特定问题。
+
+### 🌟 [flutter-go](https://github.com/alibaba/flutter-go)
+
+阿里出品,Flutter 组件演示 demo 和中文文档,同时包括了 iOS 与 Android,快上手试一试。
+
+### [habbit](https://github.com/lzyy/habbit)
+
+个人 Flutter 作品,演示了一个完整的习惯跟踪 App 。从完成度上看还可以,复杂度不够,主要是演示了 RxDart 的用法。
+
+### [swift-algorithm-club-cn](https://github.com/andyRon/swift-algorithm-club-cn)
+
+swift-algorithm-club 主要是 Swift 来实现算法和数据结构的源码和文章,对应文章都有对该算法的讲解,如果在学习或者复习算法的同学,不妨一看。
+
+## 音视频
+
+### [ggtalk | 广义跳槽论:简洁明了的方法论](https://talk.swift.gg/13)
+
+这一期的 ggtalk 延续了上一次程序员比较关心的话题:跳槽。邀请来了老牌程序员、产品经理:Easy。相信经常刷微博的同学应该都知道他,Easy 之前在微博做过程序员和产品经理,也经历过独立开发。对于程序员的职场方法论有一套独特的心得,我听完之后感触颇深。比如作为程序员,不要只关注公司是否能出得起自己希望的薪水,更重要是要关注自己所能给公司带来的价值,不要被短期的供需不平蒙蔽了双眼。还有程序员如何提升自己的影响力? 最重要是能给别人创造价值。除此之外,还有不少有趣的视角。推荐大家收听。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+- [深圳 - 格隆汇 iOS / Android / 前端](https://www.lagou.com/gongsi/j84043.html):公司方向是投研资讯,目前正在稳步扩张中,各个级别的工程师都有需求。任何推荐或者简历都可以发送到我邮箱:[chenkem@gmail.com](mailto:chenkem@gmail.com),同时也欢迎大家[私信我](https://t.me/kemchenj)了解更多信息。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@方秋枋](https://weibo.com/100mango),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@XanderXu](https://github.com/XanderXu),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#55-2019.02.18.md b/Reports/2019/#55-2019.02.18.md
new file mode 100644
index 000000000..4607581a5
--- /dev/null
+++ b/Reports/2019/#55-2019.02.18.md
@@ -0,0 +1,156 @@
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [TLS 1.3 in iOS](https://mailarchive.ietf.org/arch/msg/tls/5QjzTilqjomSyzENtgfaAqQOhbA)
+
+在 iOS 12.2 中,iOS 系统默认开启了对 TLS 1.3 的支持,使用 Network Framework 以及 NSURLSession 的开发者都可以使用 TLS 1.3 来建立更安全的网络连接了。
+
+在这方面有兴趣的童鞋不妨了解一下。
+
+### [iOS 12.2. beta PWA update](https://twitter.com/mhartington/status/1089292031548145666?s=21)
+
+在 iOS 12.2 beta 上 PWA 的能力也得到了小部分更新,由PWA打开外部网站会通过 SFSafariViewController 打开,进入后台后 PWA 当前的状态会保持,PWA 应用可以被系统搜索到等
+
+## 文章
+
+### 🌟 🐢 [了解和分析 iOS Crash Report](https://juejin.im/post/5c5edb37e51d457f926d2290)
+
+作为客户端的开发者,与各式各样的 Crash 打交道是家常便饭。关于 App Crash 的相关讨论,社区也总是比较活跃。我们曾在 27 期和 34 期分别推荐了 [深入理解 iOS Crash Log](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2327-2018.07.16.md#-深入理解-ios-crash-log) 和 [手把手教你查看和分析 iOS 的 crash 崩溃异常](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2334-2018.09.03.md#-手把手教你查看和分析-ios-的-crash-崩溃异常) 两篇好文章。而这次则是来自苹果官方文档的译文,官方则意味着权威,以及更多的细节。内容虽然还是围绕着 “符号化 - 看懂 - 解析” 三个部分进行,但非常系统和详细。作者也对这篇译文进行多次润色修改,并在文中多处添加了自己的注解,会对我们阅读这类偏底层文章有所助益。
+
+文中会涉及许多底层概念,读起来难免不如一些应用类文章顺畅,但小编还是建议大家无论如何都坚持至少过一遍,并再安排时间分块细读,会大有裨益。
+
+### 🌟 🐕 [iOS 原生级别后台下载详解](https://juejin.im/post/5c4ed0b0e51d4511dc730799)
+
+本文记录了作者实现支持原生后台下载 Tiercel 库的整个历程,并详细的列出后台下载的所有特性和注意事项,并附上了具体实现。让读者能够更深刻的了解到后台下载。目前 [Tiercel 2](https://github.com/Danie1s/Tiercel) 已经发布,完美地支持后台下载,还加入了文件校验等功能,对后台下载有兴趣的朋友可以借此机会深入了解下。
+
+### 🐕 [ABI Stability and More](https://swift.org/blog/abi-stability-and-more/)
+
+Swift.org 二月初发文介绍了 Swift ABI Stability 当前状态及后续计划。Swift 5 在 macOS, iOS, watchOS, and tvOS 几个平台将实现 ABI Stability,预计很快就能发布,Linux 及 Windows 平台还需评估。文章还介绍了 `Module Stability` 及 `Library Evolution` 的后续计划 。
+
+ABI Stability 能带给我们什么:上述系统以后将自带 `Swift runtime and standard library`,而不需嵌入到 App 中,能大大减小 Swift App 的打包大小。
+
+### 🐎 [浅谈团队管理最佳实践](https://jingwei.link/2019/02/05/team-management-methodology.html)
+
+作者从以下几点谈了一下团队管理的实践:
+
+- 每个人都需要关怀:领导者应确认团队中每个成员的职业发展规划,并适时地给予“人文上的关怀”
+- 公平公正公开的价值评判标准:一个成员的价值增值包含两个层面:随着熟练度的提升所带来的价值增值和解决特殊领域问题的经验价值
+- 团队沉淀:可以通过文档和流程标准化的方式有效降低做重复性工作的成员的替备成本
+- 具象化团队这台机器的样貌:领导者定义团队的责任与目标、架构设计、合理组成、团队的演进等,方便成员参考辅助自己的实践
+
+### 🐕 [制作一个 Mac APP:XcodeExtension](https://juejin.im/post/5c53f32be51d457fbe226fdd)
+
+Xcode 8 提供了 Xcode Source Editor Extension方式来开发 Xcode 插件。本文以 [XcodeExtension](https://github.com/equweiyu/XcodeExtension) 为例,介绍了该插件的使用方法与制作思路。
+
+[XcodeExtension](https://github.com/equweiyu/XcodeExtension) 主要有以下功能:
+
+- ConvertFromCase 把选择的下划线内容变为驼峰
+- DeleteEmptyLines 删除选中的空行
+- SortLines 排列选中的行
+- JsonToModel 把Json数据转成Swift模型,会把下划线命名变为驼峰
+
+> 在往期周报中我们也有过相关推荐如: [How to convert your Xcode plugins to Xcode extensions](https://medium.freecodecamp.org/how-to-convert-your-xcode-plugins-to-xcode-extensions-ac90f32ae0e3) 以及 [Code Friend](https://github.com/qvcodefriend/CodeFriend) 开源工具等,感兴趣的读者可以拓展阅读。
+
+### 🐎 [使用 OCLint 自定义 MVVM 规则](http://yulingtianxia.com/blog/2019/01/27/MVVM-Rules-for-OCLint/)
+
+本文总结了通过自定义 OCLint 的扫描规则,对 MVVM 开发模式的 ViewModel 运行静态检查,并把规则集成到 Xcode 上所踩的一些坑。由于官方 OCLint 很久没有维护了,所以本文作者就基于 LLVM 7 进行了修改,对这块有需要或感兴趣的同学可以直接安装试用。
+
+### 🐕 [如何看待软件开发?](https://halfrost.com/halfrost_2018/)
+
+当年移动互联网大潮来的时候,软件开发再次成为炙手可热的岗位,高工资吸引了很多人投身其中。当大潮退去,互联网也迎来寒冬的时候,对于已经在其中的各位,又或者未来想要当开发者的同学们,软件开发到底是什么样的,究竟需要掌握多少知识,职业规划应该如何做,会成为大家再次思考的问题。本文作者以自己多年的工作经验,总结了如何看待软件开发这一问题,值得如果尚有迷茫的同学看一看。
+
+### 🐕 [Objective-C 单向数据流方案](https://wereadteam.github.io/2017/09/30/reflow/)
+
+在 JS 领域,得益于 JS 弱类型语言的特性,单向数据流被广泛的使用。单向数据流可以避免许多因为线程等造成的各种问题。本文介绍了 OC 下的一个单向数据流的方案 Reflow 库。Reflow 库架构设计实现了单向数据流的几个特征:
+
+- model 对象不可变
+- 整个 app 的数据存于 store 层
+- 更新和通知也收拢于 store 层
+
+Reflow 是开源的,有兴趣的同学可以一看。
+
+### 🐕 [移动开发的罗曼蒂克消亡史](https://mp.weixin.qq.com/s/2xBnlmESZjq7UTtcfzqhcA)
+
+本文是 InfoQ 总编辑徐川的一篇文章,介绍了移动开发领域的插件化和热更新两个方向的发展史,覆盖了 iOS 和 Android 。徐老师文章结尾的一句话很有意思,『插件化热潮注定成为技术发展的一段小插曲,也许再过几年,不会有人记得了。那段激情飞扬的岁月,终将成为 The Wasted Times。』
+
+最近跟 Bang 哥吃饭,也聊起了热修复的一些事情,实际上在大厂一直都还有发展各种移动开发领域的黑科技。包括最近大热的 Flutter 技术,在 Google 的 RoadMap 上面,也明确表示了[动态更新](https://github.com/flutter/flutter/wiki/Roadmap#dynamic-updates)会是一个重点考虑的方向。总的来说,2019年,移动开发的插件化和热更新方向,应该会在基于各种虚拟机技术的基础上,继续往前发展,满足业务需求。
+
+## 工具
+
+### [ios-developer-tools](https://github.com/LeoMobileDeveloper/ios-developer-tools)
+
+本文中总结了 iOS 开发者应该了解的工具合集。其涉猎了多个方面的工具推荐,例如 DEBUG 调试、项目分析、持续集成、逆向工程等。在这份列表当中,能够找到耳熟能详的项目,也有大家平时没有涉及到的方面,不妨来看看那些你没有接触过的开发工具。
+
+### [DoraemonKit](https://github.com/didi/DoraemonKit)
+
+滴滴开源的一款功能齐全的客户端研发助手,同时支持 iOS 和 Android 两端,类似的前辈有 FLEX、Dotzu,但仅限于 iOS 平台。
+
+- 内置了很多常用的工具,包括一些辅助开发工具、测试效率工具、视觉辅助工具等
+- 接入方便,便于扩展,让你的业务测试代码在这里快速接入,统一管理,统一收口
+
+## 代码
+
+### [Path.swift](https://github.com/mxcl/Path.swift)
+
+一个文件系统路径库,专注于开发人员体验和强大的最终结果。保证了安全性和正确性的前提下提供了非常简洁的 API ,为管理文件路径而头疼的开发朋友们可以尝试使用这个开源库哦!
+
+### [Facebook 开源图像处理库 Spectrum,优化移动端图像生成](https://www.infoq.cn/article/uF0d_ZuzxgaI3SFJm34d?utm_source=weibo&utm_medium=infoq&utm_campaign=newinfoq&utm_content=0203)
+
+Facebook 开源了其图像处理库 [Spectrum](https://github.com/facebookincubator/spectrum),内核使用 C++ 编写,并提供了 Objctive-C 及 Java 的简单封装,简化移动端开发。统一的核心使得在 iOS 和 Android 上的图像输出更加统一。
+
+### [效果丰富的分类切换组件:JXSegmentedView (Swift版)](https://github.com/pujiaxin33/JXSegmentedView)
+
+`SegmentedControl + PaggingView` 组合实现的分类切换视图是资讯、电商类应用常用的基本组件。具体实现起来,动效细节和特殊交互场景要考虑的问题并不少。
+[JXSegmentedView](https://github.com/pujiaxin33/JXSegmentedView) 胜在实现了大量主流应用分类切换组件的交互效果,如果你碰到对应需求,相信这会是个不错的参考。
+
+如果你不幸还停留在 Objc,也可以看看同一作者实现的 Objc 版本 [JXCategoryView](https://github.com/pujiaxin33/JXCategoryView)(已有 2k+ stars)。
+
+> 由 [暴走的鑫鑫](https://github.com/pujiaxin33) 自荐
+
+## 书
+
+### 🌟 [The Architecture of Open Source Applications](http://www.aosabook.org/en/index.html)
+
+这是一本开源的电子书,主要介绍了最近几十年来一些经典开源项目(包括 Git、LLVM、nginx、PyPy 等知名项目)的架构思想和设计哲学,文章作者都是业界大牛甚至是项目作者本人,比如 LLVM 之父 Chris Lattner。相比自己去阅读源代码百思不得其解,原作者自己分享的思考和感受就像指明灯一样,给我们打开了更大的世界,站在巨人的肩膀上才能看得更高更远。
+
+> 由 [@ShannonChenCHN](https://github.com/ShannonChenCHN) 推荐。
+
+## 内推
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+- [深圳 - 格隆汇 iOS / Android / 前端](https://www.lagou.com/gongsi/j84043.html):公司方向是投研资讯,目前正在稳步扩张中,各个级别的工程师都有需求。任何推荐或者简历都可以发送到我邮箱:[chenkem@gmail.com](mailto:chenkem@gmail.com),同时也欢迎大家[私信我](https://t.me/kemchenj)了解更多信息。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#56-2019.02.25.md b/Reports/2019/#56-2019.02.25.md
new file mode 100644
index 000000000..214d0fcae
--- /dev/null
+++ b/Reports/2019/#56-2019.02.25.md
@@ -0,0 +1,232 @@
+# 老司机 iOS 周报 #56 | 2019-02-25
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 话题
+
+### 🌟 🐢 [关于 Swift ABI 稳定 ](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183)
+
+迟到三年的 ABI 稳定终于要来了。
+
+苹果发布了 *[ABI Stability and More](https://swift.org/blog/abi-stability-and-more/)* 和 *[Evolving Swift On Apple Platforms After ABI Stability](https://swift.org/blog/abi-stability-and-apple/)* 两篇文章来阐述 Swift 5 发布以后 ABI 相关的内容所带来的改变。看不懂英文的也不要怕,细心的喵神帮我们做了一个很棒的总结: *[Swift ABI 稳定对我们到底意味着什么](https://onevcat.com/2019/02/swift-abi/)*。
+
+Swift ABI 可以说是 Swift 的一个里程碑事件,让跨平台的能力更上了一层,但是 Swift ABI 对于 iOS 开发者使用来说,影响不是很大,有很多开发者误把 API 稳定当成了 Swift ABI 稳定。对于开发者来说,只有 API 稳定了,才是真正意义上的不需要迁移适配了。
+
+如果不知道 Swift ABI 是什么的朋友,可以看看苹果去年发布的 *[Swift ABI Stability Manifesto](https://github.com/apple/swift/blob/master/docs/ABIStabilityManifesto.md)*。同时 **[泊学](https://boxueio.com)** 也做了一个很棒的翻译版: *[译:Swift ABI (一)](https://boxueio.com/blackboard/1)* 和 *[译:Swift ABI (二)](https://boxueio.com/blackboard/2)*。
+
+**最后,关于 Swift ABI,你有什么看法,可以在我们的 [Github Issue](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183) 上,发表你的看法,与周报编辑一起讨论。**
+
+## 新闻
+
+### [Swift 5.1 发布计划](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1161)
+
+Swift 团队近日在博客里更新了 5.1 的发布计划,这个版本的主要目标是达成 [Module Stability](https://forums.swift.org/t/plan-for-module-stability/14551),简单的说就是 Module 接口的向前兼容。
+
+另外知识小集也在第一时间[进行了翻译](https://mp.weixin.qq.com/s/2FYhe4gGTCMZL82IOYK7kg),推荐阅读这一篇。
+
+### [It’s time to stop using index(of:)](https://www.hackingwithswift.com/articles/177/its-time-to-stop-using-index-of)
+
+`SE-0204` 在 `Swift 4.2` 实现
+- 增加 `lastIndex(of:)`
+- 增加 `lastIndex(where:)`
+- `index(of:)` 改名 `firstIndex(of:)`,并且废弃原方法
+- `index(where:)` 改名 `firstIndex(where:)`,并且废弃原方法
+
+## 文章
+
+### 🌟 🐢 Swift5 新特性 @dynamicCallable 带来的动态魔法
+
+一年前周报的第一期我们曾经提过:[Swift 快要可以和 Python 无缝交互了](https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20171204/042029.html),一年后的今天伴随着 Swift5 新特性 `@dynamicCallable` 的发布,『用 Swift 写 Python 变成现实』。
+
+起源是 Chris Lattner 大神的两个提案:`@dynamicMemberLookup` 提供动态查找成员的能力(Swift4.2),`@dynamicCallable` 则提供动态方法调用的能力(Swift5)。很难想象,两个语法糖重新定义语言动态性,让人看到 Swift 成为胶水语言的可能。
+
+下面三篇系列文章带我们感受语法糖带来的神奇魔法:
+
+- [#1 Unix Tools as Swift Functions](http://www.alwaysrightinstitute.com/swift-dynamic-callable/)
+
+ 一层薄薄的封装让所有 Unix Tools 变成 Swfit 方法,提供这样的调用方式:`shell.env()`, `shell.ls("-a", "-l")`, `shell.python("--version")`;
+- [#2 Swift/ObjC Bridge](http://www.alwaysrightinstitute.com/swift-objc-bridge/)
+
+ 基于 @dynamicCallable 轻松实现一套 Swift - Objective-C 的桥接。实现思路类似 [PyObjC](https://pythonhosted.org/pyobjc/)
+- [#3 Mustasheable](http://www.alwaysrightinstitute.com/mustacheable/)
+
+ 为模板语言[Mustache](http://mustache.github.io/)的生成器提供简洁优雅的调用方式。
+
+相关阅读:[细说 Swift 4.2 新特性:Dynamic Member Lookup](https://juejin.im/post/5b24c9896fb9a00e69608a71)
+
+### 🌟 🐎 [架构师思维](https://limboy.me/tech/2019/02/16/architect-mindset.html)
+
+架构师一词听起来就是个很高端的 Title,在职业生涯的多数时候,在我心里都是高山仰止般的存在。尽管不同的公司对架构师的要求也许不一样,但印象中应该都是技术特别出众的人。那除了技术出众之外,又应该具备什么样的架构师思维呢?本文作者从开发者和开发两个方向阐述了什么才是架构师思维,值得去细细揣摩,带着这个思维,也许你会有新的发现和努力的方向。
+
+### 🐎 [Behind the Proposal — SE-0200 Enhancing String Literals Delimiters to Support Raw Text](https://swift.org/blog/behind-se-0200/)
+
+`SE-0200` 提案中增强字符串分隔符支持原始文本的能力。
+
+- 支持多行,并且同时具备Swift原有的字符串功能(如插值),示例:
+`"""
+line1
+\(line2)
+"""`
+
+- 为了覆盖边转义字符缘特殊情况,参考了 `Rust` 的设计,支持自定义分隔符声明原始字符串,同时支持插值。`#""#` 是将原本 `\` 转义分隔符修改为 `\#`。
+ - `#"\#(val))"#`,等同于以往的`\(val)`。`#"\n"#` 输出 `\n`。
+ - `###"\nline"###`,转义分隔符是 `"\####"`,输出 `\nline`。
+
+### 🐢 [Swift 5 Exclusivity Enforcement](https://swift.org/blog/swift-5-exclusivity/)
+
+在 2017 年初,Swift 社区发了一篇长文介绍 Swift 4 将在内存安全方面做一些改进,@onevcat 翻译了此文 [所有权宣言 - Swift 官方文章 Ownership Manifesto 译文评注版](https://onevcat.com/2017/02/ownership/) 建议细读。
+
+上文中提到的改变大多已在 Swift 4.x 落地,即将发布的 Swift 5 中,对「独占性访问」进行了增强:`在 Release 模式运行也默认开启。`
+
+Swift 4 中,只有 Debug 模式下,Runtime 会做「独占性访问」的检查(编译时 Debug 与 Release 都会检查,但编译检查可能覆盖不全),Swift 5 中, Release 模式 Runtime 也默认开启(可手动关闭)。文章仔细介绍了这个改变可能带来什么问题,以及如何应对。
+
+### 🐎 [How many apps use Swift in 2019?](https://blog.andrewmadsen.com/post/182862756395/how-many-apps-use-swift-in-2019)
+
+文章作者对 App Store 上美区 Top 110 的 App 进行了分析,来看到底有多少 App 使用了 Swift。结果上看,目前 Top 110 的 App 使用 Swift 和未使用 Swift 基本处于对半开的状态。
+
+大公司切换 Swift 和小公司切换 Swift 比起来,难度要大很多,所以对于这样的结果,也不算惊讶。希望再过一年,Swift 的比例能够有进一步的增长,毕竟 ABI 稳定了。
+
+### 🐕 [Painless UI Testing in iOS: Mocking the Network](https://code.egym.de/painless-ui-testing-in-ios-part-1-mocking-the-network-ffbd6ab4809a)
+
+本文是 Painless UI Testing in iOS 系列的第一篇文章。该系列打算介绍三种方法来让 UI 测试变得更快更可靠。第一种在本文做了介绍,第二种是在第二篇介绍的 [Stubbing the Navigation](https://code.egym.de/painless-ui-testing-in-ios-part-2-stubbing-the-navigation-c5984e728f7e)。但是该系列的第三篇还没有发布,大家可以关注他们的技术博客 [eGym Software Development](https://code.egym.de/)。本系列的作者按设计思路附上代码的方式把他的想法分享的很详细,是非常值得学习和借鉴的,热衷 UI 测试的同学不可错过。
+
+### 🚧 🐕 [Deep Diving React Native Debugging](https://medium.com/@shaheenghiassy/deep-diving-react-native-debugging-ea406ed3a691)
+
+在开发 React Native 应用时,我们可以通过开启 `Debug JS Remotely` 来实现在 Chrome 中调试 JS,包括断点调试、查看堆栈信息、变量状态等,有时候我们可能还会在调试时遇到红屏错误 `Runtime is not ready. Make sure your packager server is running.`,但是不知道这背后都发生了什么。我们往往对这些每天日常开发中接触的东西既熟悉又陌生,不妨跟着这篇文章读读源码并调试一下,一切都将豁然开朗。
+
+> 由 [@ShannonChenCHN](https://github.com/ShannonChenCHN) 推荐。
+
+### 🐕 [分析一次有意思的需求——HTML 代码注入](https://juejin.im/post/5c6f949b51882562260d37fa)
+
+在 iOS Hybrid APP 开发中我们经常会有这样的需求: 通过 WebView 实现 JavaScript 与 Objective-c 交互。本文作者以 WKWebView 访问了一个 HTML 页面,获取用户的所有输入信息这样的问题为例,将需求拆解为如下几部分,最终解决问题。
+
+1. HTML 和原生交互
+2. HTML 获取指定元素
+3. 通过 JavaScript 动态为 HTML 元素添加事件
+4. 通过 WKWebView 向 HTML 注入 JavaScript 并调用 原生代码
+
+作者通过逐步拆解需求,把抽象的问题分解成各个小问题的组合,然后逐个分析验证,最终解决相对复杂的问题。其实这正是如何分析具体的需求,并将其转换为代码的一个过程,感兴趣的读者可以跟着作者思路读一读,应该会有所启发。
+
+> 由 [@chouheiwa](https://github.com/chouheiwa) 推荐。
+
+### 🐢 [How I failed 39 interviews and what I’ve learned](https://medium.com/flawless-app-stories/how-i-failed-39-interviews-and-what-ive-learned-515c8e6c4b53)
+
+一个大学计算机系二年级在校生从 39 次面试失败经历中的总结,对于大部分软件开发工作者而言,去一些大厂工作都是一个目标。作者打小就梦想进入 Google Facebook 等这些大厂工作,而这篇文章总结了他在校期间面试大厂屡战屡败、屡败屡战的经历。
+老司机推荐给大家,希望给正在努力亦或是正在迷茫的你有所帮助。
+
+### 🐕 [Demystifying UIKit Spring Animations](https://medium.com/ios-os-x-development/demystifying-uikit-spring-animations-2bb868446773)
+
+Spring 弹簧动画从 iOS 7 开始就成为了公开 API,但当时的 damping-duration 接口非常不自然,iOS 10 发布 `UISpringTimingParameters` 和 `UIViewPropertyAnimator` 之后有所好转,但要制作出优秀的弹簧动画仍然不是一件容易的事。这篇文章会为你介绍究竟什么是弹簧动画、背后的工作原理以及如何调试出恰到好处的动画。
+
+### 🐎 [Swift 5 字符串插值之美](https://swift.gg/2019/02/21/the-beauty-of-swift-5-string-interpolation/)
+
+本译文介绍了 String 类型对 `ExpressibleByStringInterpolation` 协议的三种扩展实现,以精确控制字符串插值的打印方式。`ExpressibleByStringInterpolation` 协议在 Swift 3 时被废弃,如今被以一种更优雅、扩展性更强的方式重新实现。建议同时阅读一下 [SE-0228](https://github.com/apple/swift-evolution/blob/master/proposals/0228-fix-expressiblebystringinterpolation.md) 这个提案,对比了解下新旧两种实现方式,以及新的实现方式所带来的可扩展性和性能改进。也可以看下 [HTML,LocalizableString,SQLiteStatement](https://gist.github.com/brentdax/0b46ce25b7da1049e61b4669352094b6) 三种非 String 类型的扩展实现。
+
+### 🐎 [唯品会 iOS 代码覆盖率的应用实践](https://mp.weixin.qq.com/s/mTXMbm0c-nCWZ8v8D1-QAA)
+
+在快速迭代的这个软件开发生态下,量化测试数据成为软件测试中必不可少的一步。
+
+本篇中,作者将一步步剖析,iOS 代码覆盖率的应用。文中的主要步骤可以拆分成一下几个部分。
+
+- 在编译过程中,利用 LLVM 可以使用 gcda/gcno 记录代码覆盖率的特性,进行中间代码插桩
+- 在程序执行过程中,将记录文件刷入内存当中,利用 HTTP 接口上传服务器
+- 将 LCOV 作为记录文件分析工具,生成可视化的报表数据
+
+相较于传统的行/函数/分支覆盖率外,文中新增了行差异覆盖率。将覆盖率文件进行预处理,新增差异代码行数相关属性,达到支持差异/多版本合并。
+
+> 如果对于 GCC 插桩想要有所了解可以看这个博主的一系列研究 [链接](https://so.csdn.net/so/search/s.do?q=GCC%20%E6%8F%92%E6%A1%A9&t=blog&u=livelylittlefish)
+
+## 工具
+
+### 🐕 [Introducing the sourcekitd Stress Tester](https://swift.org/blog/sourcekitd-stress-tester/)
+
+Sourcekitd 是为 Xcode 和最近发布的 SourceKit-LSP 的编辑器核心功能提供数据支持的工具。如 Swift 文件的代码补全,语法高亮和重构等。为了帮助改善其健壮性,本文介绍了一个新引入的工具,即 “Sourcekitd 压力测试工具”。在过去几个月中,它帮助找到了 91 个可复现的 Sourcekitd 崩溃,断言失败和挂起。 这篇文章介绍了 Sourcekitd 的实现,如何在 Swift CI 和 PR 测试中部署,以及 Swift 开发人员如何在自己的项目中运行它,以帮助改善每个人的 Swift 编辑体验。
+
+## 代码
+
+### 🌟 [MicroKernel](https://github.com/mrriddler/MicroKernel)
+
+MicroKernel 是一个客户端微内核架构,它把业务和基础都视作插件,形成一个插件化微内核架构。对于业务,一切其他模块的业务和基础都是注入的依赖。
+
+MicroKernel 遵守了整洁架构 (clean architecture)、六边形架构 (hexagonal architecture) 等架构的主旨,架构以代码变更的原因和频率形成边界和层次。
+
+分为以下几个层次:
+
+- MicroKernel:App的驱动,提供MicroApplication管理、通信机制、依赖注入、路由等。
+- MicroKernelService:贯穿App的基础能力服务,提供基础能力的领域抽象,不包括具体的技术选型,不必拘泥于依赖注入形式。
+- MicroApplicationService:贯穿App的业务服务,从复用角度聚合,包括其整体业务方案,比如,分享、登录、支付等。
+- MicroApplicationCoordinator:解开MicroApplication之间耦合的协调器。
+- MicroApplication:独立的业务,从功能角度聚合,在架构中称作应用,其形式包括Native、H5、Hybrid、小程序等。
+- MainApplication:整个App的架构注册、配置,以及外部渠道的对接。
+
+> [MicroKernelDemo](https://github.com/mrriddler/MicroKernelDemo) 是作者通过模拟一个简单的业务场景,以帮助读者熟悉 MicroKernel 背后的概念和使用的实践 demo。
+
+### [Aiolos](https://github.com/IdeasOnCanvas/Aiolos)
+
+Aiolos 是一个受浮动面板启发的 Swift UI 框架,已在 iOS 11 中的地图应用中引入。它完全由手势驱动,并自动响应屏幕键盘,与许多其他开源面板解决方案相比,Aiolos 被设计为始终可见的子视图控制器,因此不使用 iOS 的自定义视图控制器转换 API。可通过 Carthage 集成到项目中,使用简单便捷,感兴趣的同学可以尝试一下。
+
+### [EasyTransitions](https://github.com/marcosgriselli/EasyTransitions)
+
+EasyTransitions 是一个简单易用的转场动画库,可以帮助开发人员使用协议中定义的简单函数创建自定义交互式转换,避免使用 UIKit 中的多个转换 API 进行实现的麻烦。
+
+特性
+- 自定义过渡简单设置
+- 支持模态演示,UIPresentationController 和 UINavigationController 过渡
+- 具有多个平移手势方向的 1 行中的交互式转换支持
+- 3 个自定义转换作为示例
+- iOS 和 tvOS
+
+EasyTransitions 库很实用,有需要感兴趣的读者可以看看,不过该库只提供了 swift 版本哦!
+
+## 音视频
+
+### [Swift Community Podcast #3 - Result Type, Character Literals and Swift Evolution](https://www.swiftcommunitypodcast.org/episodes/3)
+
+Swift Community Podcast 是 Swift 开源社区举办的讨论 Swift 语言特性与应用的电台节目,基本可以认为是 Swift 的官方 Podcast,第三期的主持人是 Swift 之父:Chris Lattner, 还有两位嘉宾:提出了 Result type,同时也是 Alamofire 维护者之一的 Jon Shier,以及Kelvin Ma,目前还是一名在校学生。三个人首先讨论了 Swift 的开源历史,有哪些重要的时间节点,然后从 Swift 的错误处理的前世今生开始聊,引出了 Result type 的必要性。最后也讨论了 Character Literals 提案的一些趣事。整体氛围比较轻松,尤其是 Jon Shier 吐字非常清楚,非常适合英文不太好的同学(比如我)听。基本都能听懂。
+
+### [ggtalk | 2019 准备学什么新技术?](https://talk.swift.gg/18)
+
+作为积极上进,互相攀比只有攀比学习的 iOS 圈,想必 iOS 程序员们最关心的话题的就是 9102 年,我们到底应该学什么。当然这个话题是因人而异的,ggtalk 这期节目邀请了 SwiftGG 翻译组的蓉老师和莲叔,和帮主一起聊了各自在 9102 年的学习计划,可以提供一定的参考给广大学习焦虑的 iOS 同学。
+
+## 内推
+
+- [上海-小红书-高级/资深/专家 iOS开发&架构](https://job.xiaohongshu.com):参与小红书App日常功能/架构 (APM \ Crash \ Security) 开发与维护;业务高速成长中, 团队年轻活泼, 技术氛围浓厚, 坐标上海市中心新天地地铁口。推荐或简历可直接发到 cli2@xiaohongshu.com。
+
+- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507):社招、应届、实习均可。项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来切磋,也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com,暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~
+
+- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0):负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱)或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。
+
+- 上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): jasy@okjike.com,或微博 [@JasonYuh](https://weibo.com/jasonyuh)。
+
+- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html):奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。
+
+- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D):如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
+
+- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society):简历可以发送到邮箱 raozhizhen@gmail.com,或者添加我([@AidenRao](https://weibo.com/AidenRao))的微信 jingmu1994 了解更多公司及岗位信息。
+
+- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度):百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:lizelei@baidu.com。
+
+- [深圳 - 格隆汇 iOS / Android / 前端](https://www.lagou.com/gongsi/j84043.html):公司方向是投研资讯,目前正在稳步扩张中,各个级别的工程师都有需求。任何推荐或者简历都可以发送到我邮箱:[chenkem@gmail.com](mailto:chenkem@gmail.com),同时也欢迎大家[私信我](https://t.me/kemchenj)了解更多信息。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#57-2019.03.04.md b/Reports/2019/#57-2019.03.04.md
new file mode 100644
index 000000000..36230de13
--- /dev/null
+++ b/Reports/2019/#57-2019.03.04.md
@@ -0,0 +1,163 @@
+# 老司机 iOS 周报 #57 | 2019-03-04
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 老司机周报 LOGO 全面更新!
+
+首先非常感谢 [@SketchK](https://github.com/SketchK) 为我们设计的十分贴合『老司机』一词的重金属风格 LOGO。几经波折,我们终于可以对外发布我们的全新 LOGO 了,而且版权已经注册并完成审批,希望这次不会再翻车!作为 LOGO 的设计者 [@SketchK](https://github.com/SketchK) 他对此次设计以及周报有一份自己的理解,以下是他的想法,而我们聪明的读者会怎么解读这个 LOGO/Banner 呢,欢迎留言告诉我们~
+
+> @SketchK:在设计之初,问了一些身边的朋友,老司机在你心里是什么样子的?有的朋友说老司机是那种熟悉道路,开车老练的出租车司机,也有朋友说老司机应该是那种带大家搬砖致富的卡车司机,当然也有人说老司机就是那种饭桌上带大家开“车”的司机。但对于我而言,提到老司机或者老司机周报,我脑海里浮现的画面是:一个校车司机每天带着一波热爱 Swift 的人去探索当今最前沿,最有趣,最具挑战性的知识和技术。而我们这些每天阅读老司机周报的人就是这辆校车上的学生,充满了对未知领域的好奇与热情。大体是因为有了这个想法,才有了最后的这个 LOGO 设计稿。最后呢,希望老司机周报的读者能喜欢这个 LOGO,也希望大家能继续支持老司机周报这个组织,更希望 Swift 这门语言能够被更多的人所熟知和喜爱。
+
+## 话题
+
+### [#1 上周话题 | Swift ABI](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183)
+
+> [读者 | @alexlee002](https://github.com/alexlee002):
+>
+> 新项目可能会优先选择 swift, 但得看对公司原有技术栈的依赖程度。ABI 稳定是一个里程碑,如果 OC 和 swift 相互调用能做到 Java 和 Kotlin 那样就更好。
+
+> [周报编辑 | @tom](https://xiaozhuanlan.com/u/6682065345):
+>
+> 对于我们来说暂时没啥意见的,毕竟我们早就已经 all in swift 了。我们选型 Swift 还是从性能上面考虑的,相机应用对于代码速度和 crash 率有挺高的要求的。对于相机应用来说,性能提升几十毫秒也很牛逼了。这样子可以让相机帧率从 50 变成 53,用户体验棒棒哒。
+
+**最后,强烈推荐 [周报编辑 |@四娘](https://kemchenj.github.io) 对 [Swift ABI 的看法](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183#issuecomment-469083106)。**
+
+**如果你也有什么关于 Swift ABI 的看法,也可以在我们的 [Github Issue](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183) 上评论,与周报编辑一起讨论。**
+
+### [#2 本周话题 | 协程](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1205)
+
+说起协程,很多人可能还比较陌生,它是一个 60 年代就已经提出概念,是一种在非抢占式多任务场景下生成可以在特定位置挂起和恢复执行入口的程序组件。
+
+目前在服务端中应用比较广泛,在高并发场景下使用极其合适,可以极大降低单机的线程数,提升单机的连接和处理能力,而在移动研发中,前端的 JavaScript,安卓的 kotlin 也都已经支持了协程,唯独对于 iOS 来说,Swift 的语言级协程支持还在路上,苹果官方也没有意愿给 objective-c 添加协程能力的意愿。
+
+好在,上周阿里巴巴也开源的 [coobjc](https://github.com/alibaba/coobjc) 为我们 iOS 开发者解决了这个困惑, [coobjc](https://github.com/alibaba/coobjc) 同时给 objective-C 和 swift 都提供了协程功能。
+
+**所以这周想和大家一起探讨一下协程相关的问题。欢迎大家移步到 [#2 本周话题 | 协程](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1205) 和我们一起探讨。**
+
+## 新闻
+
+### [Flutter 1.2 发布,带来全新的 Web 开发工具!](https://mp.weixin.qq.com/s/gdKSJw05RPUSkLpeVlO6hg)
+
+Flutter 从去年开始,势不可挡,一路突飞猛进。Flutter 团队也一直不停的拓展着 Flutter 的应用范围,努力实现着 Flutter 更多的跨平台需求。
+
+在 MWC 2019 上,Flutter 1.2 正式亮相,这次的最大的亮点是提供了新的 Web 开发工具。这个开发工具也会在之后加入到 VS Code 等其他开发工具中去。
+
+### [CocoaPods-1.6.0](http://blog.cocoapods.org/CocoaPods-1.6.0-beta/)
+
+CocoaPods 1.6.0 有以下两大更新:
+
+1. 编译设置的生成部分被完全重写:在一个比较大的项目中,使用重写过的该版本执行 pod install 的时间比之前的版本降低了 77%。
+2. 1.6.0 开始会为每个测试 spec 生成一个单独的测试 target,而不是像之前把多个测试 spec 合并为一个测试 target。
+
+另外,1.6.0 存在一个链接失效的 bug,已在后面的 1.6.1 版本解决,详情:[CocoaPods/issues/8493](https://github.com/CocoaPods/CocoaPods/issues/8493)。
+
+## 文章
+
+### 🌟 🐢 [阿里开源 iOS 协程开发框架 coobjc 源码分析](https://mp.weixin.qq.com/s/Vy_fsn95dgag4KumpQPlTw)
+
+阿里开源了 [iOS 协程开发框架 coobjc](http://gitlab.alibaba-inc.com/Coroutine/coobjc)
+
+参与一些大前端开发,写了很多 js 的同学们,相信对 ES6 的新特性 async await 是非常的喜爱,能够允许你在同步的代码逻辑中,书写异步的代码。一般这种协程能力有的是语言层面直接支持,有的来自于框架。如今淘宝团队的大神们为 iOS 的 Objective-C 的语言也带来了协程框架。“当你还在写 UI Button 写界面的时候,别人已经在用汇编写 iOS 语法库了”,没错 coobjc 在 OC 的基础上通过汇编对寄存器的直接控制,来保存/中断/挂起/恢复一段逻辑的上下文,从而实现上下文的切换,再加上编译器与语法糖的扩展,实现了在 OC 中的 async await 等语法关键字的支持,更详尽的分析请看[“知识小集”的这篇源码分析](https://mp.weixin.qq.com/s/Vy_fsn95dgag4KumpQPlTw)。
+
+### 🐕 [Parallel Computation using MPS](http://yulingtianxia.com/blog/2019/02/28/Parallel-Computation-using-MPS/)
+
+在图像处理任务上,GPU 一直以来都比 CPU 优异一个数量级。Metal 是苹果官方推出的 GPU 计算框架, 并提供了一套名为 Metal Performance Shader 的 API 接口,能够让开发者非常方便的使用 Metal 处理图像处理的任务。本文作者比较了使用 MPS 对比传统 CPU 的耗时,发现前者相比 CPU 耗时降低了 99.9%,之后介绍了 MPS 运行的基本原理并给出了一些 MPS 的编程技巧,做多媒体开发的同学不要错过。
+
+### 🐕 [UIView styling with functions](https://felginep.github.io/2019-02-19/uiview-styling-with-functions)
+
+在实际 App 中,视图通常只有几种样式,你可能会想各种办法做成视图组件。本文介绍了一种视图样式封装的方法,利用 Swift protocol extension 等特性组织代码,使得代码逻辑清晰易懂。
+
+### 🐕 [Swift 5 Type Metadata 详解](https://juejin.im/post/5c7513e7e51d451ac30154aa)
+
+Swift 5 发布以后,ABI 变得更加稳定了,尽管依然与早期的版本是二进制不兼容的。其中对 Metadata 也有不少改动,对于有些项目,可能使用了强依赖 Metadata 的库,这就需要我们加以修改。本文作者就通过查看源码,回顾了 Metadata 的前世今生,可能会对读者很有借鉴意义。
+
+### 🐕 [Using CLion as an IDE for Server-Side Swift Apps on Linux](https://www.raywenderlich.com/9363-using-clion-as-an-ide-for-server-side-swift-apps-on-linux)
+
+CLion 是 JetBrains 全家桶中的一员,也是 Linux 上比较好用的 IDE 之一。本文以 Vapor 框架为例,完整介绍了在 Ubuntu 上搭建环境、调试和连接数据库,如果你也想试试 Ubuntu 上的开发体验,不妨一读。
+
+### 🐕 [API Pollution in Swift Modules](https://nshipster.com/swift-api-pollution/)
+
+本周 NSHisper 讨论的是 Swift 导入 Module 时可能发生的 API 污染,Swift 的静态方法查找是发生在编译时的,有时候可能会因为函数的声明不当,而导致意外情况的发生,例如我们本来想调用的是 a 函数,结果却调用了 b。
+
+Matt 在文章里列举了几种 API 被污染的情况,最后还从调用方和声明方两个角度去探讨如何避免类似情况发生,值得一看。
+
+### 🐎 [The perfect guide to AppStore search optimization (ASO)](http://blog.rootshell.ir/2019/02/the-perfect-guide-to-appstore-search-optimization-aso/)
+
+本指南介绍了 App Store 产品页面每个基本信息的最佳实践,内容简明扼要,很有参考价值。相关阅读:[App Store Product Page](https://developer.apple.com/videos/play/insights/app-store-product-page/)
+
+### 🐎 [Flutter 与 iOS 原生 WebView 对比](https://juejin.im/post/5c778d86e51d4506304ee348)
+
+本文作者对比了 UIWebView、WKWebView、flutter_webview_plugin(在 iOS 中使用的是 WKWebView)的加载速度、内存占用、HTML5 兼容性。
+
+### 🐕 [[译] 用这些 iOS 技巧让你的 APP 性能更佳](https://juejin.im/post/5c6a0b6ef265da2de660f83f)
+
+本文介绍了 APP 性能优化的五种技巧:
+
+1. 使用可复用的 tableViewCell
+2. 使用看起来像应用首页的启动页
+3. 视图控制器的状态恢复
+4. 尽可能减少透明视图的使用
+5. 在后台线程中处理繁重的功能
+
+除了一些老生常谈的优化点之外,**视图控制器的状态恢复**这个点比例新颖,作者也着重讲解了其原理和使用方法。如果你的应用中尚未用到,不妨一试,应该可以明显提升内存经常吃紧的用户(😂)的使用体验。
+
+### 🐢 [Frontend Workshop from HTML/CSS/JS to TypeScript/React/Redux](https://github.com/Microsoft/frontend-bootcamp)
+
+微软出版的从 HTML / CSS / JS 到 TypeScript / React / Redux 的前端训练营,为期两天,第一天搭建环境、介绍 web 的基础知识:HTML,CSS 和 JavaScript,通过演示代码了解一些核心概念。第二天演示和练习结合在一起,深入更高级的主题,如 TypeScript、测试和状态管理。(TypeScript 是由微软开源的编程语言。它是 JavaScript 的一个严格超集,并添加了可选的静态类型和基于类的面向对象编程,设计目标是开发大型应用,然后转译成 JavaScript)。
+
+## 工具
+
+### [periphery](https://github.com/peripheryapp/periphery)
+
+periphery 是一个用 Swift 语言编写的,专门用于扫描 Swift 工程无用代码的工具。它的工作原理是利用了 Swift 语法树的各种回调特性,并且因为是 Swift 语言编写的关系,所以它也只能用于 Swift 工程。从本质上来说,它跟 OC 时代的各种`Clang Checker`做的事情是没有多大区别的,不过从代码的维护性上来说就比 C++ 版本的 checker 要好很多。实测下来,跑一次全规则扫描的时间确实挺长的,如果只是扫描无用的函数参数的话倒是非常的快,大概 10 来秒就出结果了。这个工具也提供了 CI 的集成方案,总体而言算是一个比较成熟的工具了,值得推荐。
+
+## 代码
+
+### 🌟 [chameleon](https://github.com/didi/chameleon)
+
+chameleon 是来自滴滴出行的一套前端跨端整体解决方案。其最大特点是目标让一套代码,同时解决微信小程序,支付宝小程序,百度小程序,快应用,CML-SDK 终端等以 MVVM 为标准的终端。
+
+目前国内前端大环境下,开发者需要为同样的功能在各自为阵的小程序,快应用上多次重复实现。这样做既耗时,也耗费大量的人力,最后的效果也不一定理想,所以这样一套统一多端的方案来避免多次重复开发,也不失为一个好选择。
+
+吐槽一下,chameleon 这个名字已经被很多库用了,算是个非常常见的项目名字,如果能有个更独特一点的名字,可能会更好一点。
+
+### [freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp)
+
+开源代码库和课程大纲,和数百万人一起免费学习编程。freeCodeCamp 由一个小型非盈利组织运营,目标是帮助数百万繁忙的成年人向科技行业转型,这个社区已经帮助超过 10000 人找到他们的第一份程序员工作。其中全栈 web 开发课程是完全免费的,可以按照自己的节奏来学习,有上千个互动性的编程挑战来帮助你学习。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+**如果你最近正在找工作,不放看看下面这篇文章:**
+
+### 🐕 [iOS 开发者如何在互联网寒冬中杀出重围(付费内容)](https://xiaozhuanlan.com/topic/7609328541)
+
+金三银四,又到跳槽时间点。该文章主要是整理了作者近段时间面试的一个心得体会,主要是讲述了面试前准备,简历书写,大厂面试经验,以及面试心态处理等几个方面。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://weibo.com/damonone),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj),[@AidenRao](https://weibo.com/AidenRao)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#58-2019.03.11.md b/Reports/2019/#58-2019.03.11.md
new file mode 100644
index 000000000..bd01a5d54
--- /dev/null
+++ b/Reports/2019/#58-2019.03.11.md
@@ -0,0 +1,142 @@
+# 老司机 iOS 周报 #58 | 2019-03-11
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+### 🌟 [移动开发唱衰,iOS 开发者如何涅槃重生?](https://mp.weixin.qq.com/s/urSrDFbK35VYC8pihVlREg)
+
+**戴铭,绝对是 iOS 届的资深老司机,GMTC 全球大前端技术大会的专题出品人及讲师之一**,前滴滴出行技术专家,在组件化方案落地、工程动态化、大前端建设、应用开发阶段效率的提升、上线后各种难点问题的解决等方面的经验非常丰富。极客时间的品牌我一向比较认可,专栏品质很有保障,《iOS 开发高手课》也是戴铭老师对移动开发这么些年沉淀下来的技术,详细而系统的输出。我看了目录,主要分为基础、应用开发、原理、前端与原生共舞的 4 个模块,你将获得:
+
+1、资深 iOS 开发专家为你构建完整知识脉络
+2、领略专家级大型开发项目,增强面试竞争力
+3、深入 iOS 核心技术与原理,从源头上掌控新技术
+4、精美手绘图解知识点帮助你轻松学习
+
+**周报编辑均已购买,来不及了快上车!!原价 ¥99,上新优惠 ¥68,赶快扫码直接订阅。通过以下链接购买的读者微信添加 AwayZ_T 或 Damonwong2,我们会返现 10元小红包,并邀请你进入我们老司机周报的读者群,一起学习戴铭老师的 iOS 进阶教程~**
+
+[点我试读或购买「iOS 开发高手课」,快上车~](http://gk.link/a/102wQ)
+
+另外,我们在微博上发起了一个福利活动,赠送老司机定制 Logo T 恤衫和「iOS 开发高手课」,[欢迎大家点我参与~](https://m.weibo.cn/6062089411/4348770474532991),中奖的我们也会邀请进读者群~
+
+## 新闻
+
+### 🌟 [刚刚,阿里宣布开源 Flutter 应用框架 Fish Redux!](https://mp.weixin.qq.com/s/8wVnL7OBzB8cbwo1vK6SRQ)
+
+闲鱼团队是国内最早开始大规模使用 Flutter 的大公司团队,也是国内现在 Flutter 风潮的引领者。
+
+在上周,闲鱼团队刚刚开源了名为 Fish Redux 的基于 Redux 数据管理的组装式 Flutter 应用框架,旨在解决大型复杂应用中的页面状态管理以及 UI 组件的复用等难点。
+
+对于想要实践 Flutter 于大型应用的团队及开发者们来说,值得学习参考。
+
+## 文章
+
+### 🌟 🐕 [庖丁解牛!深入剖析 React Native 下一代架构重构](https://mp.weixin.qq.com/s/dXZTqXOSi3fiOesDJ7gsFQ)
+
+去年六月,[Facebook 宣布要重构 React Native](https://facebook.github.io/react-native/blog/2018/06/14/state-of-react-native-2018)。时至今日,开发团队取得的一些进展已经非常值得我们期待和持续关注了。本文通过分析源码仔细介绍了 RN 的重构设计思路和后续业务开发适配注意点,解释了新技术方案在解决性能问题上的优势,同时描述了官方对以后组件开发维护的一些规划,对保持社区的活跃性、提升框架集成使用体验和加快组件迭代速度等都有很大的帮助。
+
+### 🐕 [没有 AST, IDE 中的错误提示、自动补全、重构、语法检查......都玩不转了](https://mp.weixin.qq.com/s/UYzwVRPFas6hwe2U7R0eIg)
+
+当下的软件开发,实际上并不需要我们了解许多编译原理相关的知识。但编译原理作为一门计算机经久不衰的基础课程,自然有它存在的价值。其中的 parser 部分就值得好好看一看,这会在我们遇到相关的需求时候,如排版布局,想自己搞一套 DSL 等都会很有帮助。本文讲了 AST (抽象语法树)是如何工作的,虽然是以 JavaScript 的代码举例,但原理其实是通用的。
+
+### 🐕 [How to integrate image recognition in iOS apps](https://medium.com/capgemini-norway/how-to-integrate-image-recognition-in-ios-apps-6d660f37f75)
+
+本文介绍了如何在 iOS 应用程序中集成图像识别,文章作者介绍如何使用 Microsoft Custom Vision 构建 CoreML 模型,以便能够识别照片中的对象以及如何在 iOS 应用程序中使用它。您需要对 iOS 开发和 Swift 有基本的了解才能阅读这篇文章。
+
+### 🐕 [The Xcode Build System](https://pewpewthespells.com//blog/xcode_build_system.html)
+
+作者从 Xcode 的编译系统组件( 插件,平台组件,工具链 ),工程文件( pbxproj 文件,文件引用 )
+编译环境( 编译设定,Target,xccofig 文件 ),编译输出( 输出路径,输出文件 )等内容比较全面地介绍了 Xcode 的编译系统。读者阅读后可以对 Xcode 的编译系统有更加全面的认识。
+
+### 🐕 [Swift Code Formatters](https://nshipster.com/swift-format/)
+
+最近几天,Swift 社区一直在讨论 [Tony Allevato](https://github.com/allevato) 和 [Dave Abrahams](https://github.com/dabrahams) 关于 [Swift 编码风格指南和格式化工具](https://forums.swift.org/t/pitch-an-official-style-guide-and-formatter-for-swift/21025) 的提案。
+
+[Mattt](https://nshipster.com/authors/mattt/) 专门在 [NSHipster](https://nshipster.com) 撰文对社区现有代码格式化工具进行比较,包含 [SwiftFormat](https://github.com/nicklockwood/SwiftFormat)、[SwiftLint](https://github.com/realm/SwiftLint)、[Prettier with Swift Plugin](https://github.com/prettier/prettier) 及 [swift-format (proposed)](https://github.com/google/swift/tree/format),分别从格式化结果及效率两个角度进行对比。
+
+### 🐢 [从源码解析 Swift 弱引用](https://zhuanlan.zhihu.com/p/58179258)
+
+弱引用的深层实现机制在 Objective-C 中,就让很多同学觉得云里雾里,那在 Swift 中又如何呢?和 Objective-C 中的实现又有何异同呢?作者通过研读源码,给我们深入剖析了 Swift 弱引用机制的实现方式,并比较了和 Objective-C 中的异同,非常值得我们借鉴学习。相关阅读:[Friday Q&A 2017-09-22: Swift 4 Weak References ](https://www.mikeash.com/pyblog/friday-qa-2017-09-22-swift-4-weak-references.html)
+
+### 🐢 [一步一步教你实现 iOS 音频频谱动画](https://juejin.im/post/5c1bbec66fb9a049cb18b64c)
+
+当我们在听音乐的时候,总能看到音频频谱随着优美的音乐而跳动,那么有没想过这样的动画如何实现?
+
+本文主要介绍了脉冲编码调制(PCM)基本音频处理概念;AVAudioEngine 音频播放和 AVAudioPCMBuffer 频谱数据的获取、计算、处理、音频动画绘制;频谱动画优化:锯齿消除、闪动优化等。
+
+作者通过一步步探索最终实现完美的音频频谱动画,感兴趣的同学[点击这里](https://github.com/potato04/AudioSpectrum)阅读源码,相信一定会有所收获。
+
+### 🐕 [已开源|码上用它开始 Flutter 混合开发——FlutterBoost](https://mp.weixin.qq.com/s/v-wwruadJntX1n-YuMPC7g)
+
+咸鱼团队在国内 Flutter 的探索上一直以来都是走在业界前列。近期,咸鱼技术团队开源了 Flutter 的混合开发框架 FlutterBoost。我们知道,在现有的工程中直接换成 Flutter 开发具有很高的成本以及风险,毕竟对于一些稍大些的工程,有些代码的业务逻辑已经很复杂了。所以,咸鱼团队基于对现状的考虑,采用 Native -> Flutter 渐进式的迁移方式,并将框架开源,对于想要在旧有工程上采用 Flutter 的同学可以看一下。
+
+### 🚧 🐎 [How to build a simple tracker blocker for iOS](https://medium.com/@nderkach/how-to-build-a-simple-tracker-blocker-for-ios-cc6c52a2d2d1)
+
+跨网站追踪是一种广告商用于搜集用户信息的方式,Apple 作为一家注重用户隐私的公司,在 iOS 里内置了 Content Blocker 等功能帮助我们不被追踪。
+
+这篇文章就教我们如何使用 Content Blocker 和第三方黑名单来搭建一个反追踪的插件,并且还提供了相关的网站以便我们进行测试。
+
+### 🐕 [Task-based concurrency in Swift](https://www.swiftbysundell.com/posts/task-based-concurrency-in-swift)
+
+对一组有相互依赖的并行任务,OperationQueue,ReSwift,Future & Promise 都是常用的备选方案,但这些方案相对较重("heavy-handed"),作者基于 DispatchGroup 封装了一套轻量、简洁的 "Task-based" 的解决方案,推荐阅读。
+
+## 工具
+
+### [Localization in Swift like a Pro](https://gist.github.com/Dschee/700d28a34ad6d6a3c66885f592d99afd?utm_campaign=Indie+iOS+Focus+Weekly&utm_medium=rss&utm_source=Indie_iOS_Focus_Weekly_209)
+
+你是否仍在用几年前的方式进行本地化?你知道有更好的方法吗?本地化一直令人痛苦,但阅读这篇文章后,你会发现它并不是那么糟糕。本地化的同步更新 Xcode 并不支持,但你可以使用 [BartyCrouch](https://github.com/Flinesoft/BartyCrouch) 和 [SwiftGen](https://github.com/SwiftGen/SwiftGen) 这些工具来解救你。
+
+### [XCSnippets](https://github.com/dtaylor1701/XCSnippets)
+
+合理的使用代码片段可以有效提高你的 Coding 效率。XCSnippets 工具可以让你使用命令行方便的将 .codesnippet 从 Git 仓库安装到 Xcode。你还可以使用作者开源的代码片段仓库 [XCUISnippets](https://github.com/dtaylor1701/XCUISnippets) 或编写并开源自己的代码片段。
+
+## 代码
+
+### 🌟 [MVVM-TemplateProject](https://github.com/popei69/TemplateProject)
+
+用 Swift 实现 MVVM 的 Demo 项目,可以同时配合作者关于 MVVM 的 3 篇文章学习,适合新手入门。
+
+1. [How to implement MVVM pattern in Swift from scratch](https://benoitpasquier.com/ios-swift-mvvm-pattern/)
+2. [Unit Testing your MVVM architecture in Swift](https://benoitpasquier.com/unit-test-swift-mvvm-pattern/)
+3. [How to integrate RxSwift in your MVVM architecture](https://benoitpasquier.com/integrate-rxswift-in-mvvm/)
+
+### [Nantes](https://github.com/instacart/Nantes)
+
+著名的 UILabel 替代库 [TTTAttributedLabel](https://github.com/TTTAttributedLabel/TTTAttributedLabel) 的 Swift 复刻版,支持 UILabel 的及 TTTAttributedLabel 所增添的新特性,支持 iOS 8.0+。
+
+## 音视频
+
+### [ggtalk | 如何(连续两次)获得 WWDC Scholarship](https://talk.swift.gg/20)
+
+新的一期 ggtalk 邀请到了 [@ApolloZhu](https://github.com/ApolloZhu) 来聊聊 WWDC Scholarship,WWDC Scholarship 是苹果的一个类似奖学金的奖项,申请的学生靠提交一个极具创意的 playground 的作品来参与评选,如果获奖则可以获得免费参加 WWDC 的机会,当然餐食和酒店也是包含了的。Apollo 目前还是高中生,但已经连续获得两次 WWDC Scholarship,这次分享里他谈了申请的一些技巧以及整个过程中有趣的体验。对 WWDC 感兴趣的童鞋不容错过。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://github.com/Damonvvong),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#59-2019.03.18.md b/Reports/2019/#59-2019.03.18.md
new file mode 100644
index 000000000..c2b522146
--- /dev/null
+++ b/Reports/2019/#59-2019.03.18.md
@@ -0,0 +1,177 @@
+# 老司机 iOS 周报 #59 | 2019-03-18
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**热烈欢迎周报团队的第 30 个编辑 - [@极速男孩](https://github.com/ztlyyznf001)!**
+
+## 新手推荐
+
+在年前我们做了一次问卷调查,我们很重视这次问卷结果,专门组织了一次集体语音会议对问卷中反馈的问题和建议进行了讨论。其中很多读者希望我们能够推荐一些对新手更加友好的内容,在接下来的时间里,我们会尝试收录一些对新手入门更友好的文章,[**也欢迎广大读者自荐这部分内容**](https://github.com/SwiftOldDriver/iOS-Weekly/issues),由于是新手向的,我们对此类文章的深度要求并不高,能通俗易懂地介绍分析某个知识点,利于新手吸收,我们都会考虑收录。
+
+### 🌟 [Help! My app freezes but no error appears](https://fluffy.es/help-my-app-freezes/)
+
+这是一篇非常有趣的关于 “入门 iOS 并发编程” 的文章。作者从一个新手容易碰到的 “界面卡死不响应了” 的问题入手,层层分析了这个问题产生的本质是 - UI 线程即主线程被耗时任务阻塞导致。如果你是一位以 iOS 为入门的新人开发者,这篇文章将能帮助你第一次认识到 iOS 中为主线程减负的重要性,也会为你打开 iOS 并发编程的大门。
+
+> 编辑寄语:可能这篇文章对新手最不友好的一点是它是一篇纯英文的,但作为一名开发者,我觉得一定不能排斥英文。作为 iOS 开发者最好的入门教程是苹果的开发文档和所有 API 文档,都是纯英文的。当然,如果你觉得需要从新手继续进阶,戴铭老师「iOS 开发高手课」将会十分适合你,[点我试读或购买,然后添加微信 AwayZ_T 返还小红包并邀请进入周报读者群和大家一起学习,老司机喊你快上车~](http://gk.link/a/102wQ)。
+
+## 新闻
+
+### 🌟 [WWDC 2019](https://developer.apple.com/wwdc19/)
+
+一年一度的苹果生态开发者盛会又要来了。
+
+WWDC 今年会继续在圣何塞会议中心进行,时间是 6 月 3 日到 6 月 7 日。
+
+今年的主题是 `Write code. Blow minds.`。按照目前流出的信息,今年软件更新的重头戏会在 iOS 13 上,iOS 会有一次非常大的 UI 更新。另外硬件方面,今年也很可能会在 WWDC 上发布模块化的 Mac Pro。
+
+一如既往,WWDC 的门票价格是 1599 美元,票价并没有包括食宿,机票等的费用。如果你有兴趣参加,或者是公司有这个福利的话,需要在 3 月 20 日前去官网注册,苹果会在 3 月 21 日公布抽签结果。
+
+预祝各位参与抽签的读者朋友们好运。
+
+## 文章
+
+### 🌟 🐕 [Why using isEmpty is faster than checking count == 0](https://www.hackingwithswift.com/articles/181/why-using-isempty-is-faster-than-checking-count-0)
+
+`Swift String` 中为什么使用 `isEmpty` 会比判断 `count == 0` 快?该文作者从 `count` 的工作原理中进行分析和对比。
+- `Swift` 字符串是复杂的字符集合,单个字符可能是由多个字符进行组合形成,例如 `🇬+🇧=🇬🇧`,但是 `"🇬🇧".count == 1`。每次检查一个字符所需要的最长时间为 `O(n^2)`,因此如果计算的 `String` 很长,则 `count` 会需要较长的计算时间。
+- `isEmpty` 的计算则是检查 `String` 起始索引等于结束索引则为空,时间为 `O(1)`。
+
+同时作者提醒,在 `arrays, sets, dictionaries` 没有这种情况。但是建议使用 `isEmpty` 去判空,语义更为清晰,并且有利于 `String` 习惯用上 `isEmpty` 而不是`count`。`SwiftLint` 和 `SwiftFormat` 都有检查该情况。
+
+### 🌟 🐕 [Websites using Swift and AWS Lambda — Part 1](https://www.jasonzurita.com/websites-using-swift-and-aws-lambda/)
+
+本文介绍了如何用 Swift 轻松、愉快地编写并部署一个轻量网站。
+
+1. 使用 Swift + HTML + CSS 编写网站可以充分利用 Swift 的语言优势,例如代码更安全、更容易理解,写起来也更有意思。
+2. 使用 Lambda、Layers、API Gateway 以及 Certificate Manager(可选)在 AWS 上免费部署(每个月 100 万次免费请求)。
+3. 易于部署和更新,只需要更新 AWS Lambda 函数即可!
+4. 网站是动态生成的,也就是说可以在查询数据库、调用另一个 Lambda 函数并请求 API 之后将网站组合起来。
+5. 不需要管理传统的、有时会非常麻烦的 JavaScript 依赖。
+6. [示例网站](https://swift-aws-lambda-website.jasonzurita.com/)是第一个使用 Swift + AWS Lambda 的网站。
+
+### 🚧 🐕 [Swift Localhost: Making XCUITest Great Again](https://medium.com/quick-code/swift-localhost-making-xcuitest-great-again-115d93954cf1)
+
+关于 UI 自动化测试,特别是对网络请求处理的文章以前有过不少推荐,比如 [第 41 期](https://github.com/SwiftOldDriver/iOS-Weekly/releases/tag/%2341) 的 [iOS UI Automation Tests at Babylon](http://ilya.puchka.me/ios-ui-automation-tests-at-babylon/),[第 56 期](https://github.com/SwiftOldDriver/iOS-Weekly/releases/tag/%2356) 的 [Painless UI Testing in iOS: Mocking the Network](https://code.egym.de/painless-ui-testing-in-ios-part-1-mocking-the-network-ffbd6ab4809a) 等。
+
+本篇文章对改善 UI 自动化测试的思路是通过搭建本地服务(localhost),再将网络请求重定向到本地的方式来做的。同时这篇文章也是作者在 [iOSConfSG 2019](https://2019.iosconf.sg) 上分享的内容,总结了使用 4 个简单步骤就能在工程里搭建基于本地服务的 XCUITest:
+
+1. 通过 CocoaPods 集成 [SwiftLocalhost](https://github.com/depoon/SwiftLocalhost)(作者自己维护的),编写代码配置本地服务
+2. 把代码里的网络请求重定向到本地服务上
+3. 在 Info.plist 里设置 ATS 配置,允许访问本地网络
+4. 最后就是编写测试代码,模拟请求响应的数据
+
+这里有亮点的地方是集成 SwiftLocalhost 后就不需要太操心服务端相关的事情,用例写完直接 `command+u` 就可以开始测试了,可以避免像环境配置、网络异常等问题,让开发者更专注于模拟测试数据,保证测试流程在可控范围内。
+
+### 🐢 [如何自建 Crash 平台](https://www.xuyanlan.com/2019/01/14/iOS-crash-report/#more)
+
+本文介绍了如何对非符号化的崩溃进行符号化,并介绍一些工具和脚本对崩溃报告进行符号化的操作。并实现了自己的 macho 解析工具和 crash 分析平台:
+
+1. 通过 dSYM 文件对崩溃信息进行分析,从而得到他的具体的堆栈地址和偏移地址。
+2. 分别通过 ATOS , lldb , Dwarfdump 对崩溃报告进行符号化。
+3. 分别用 dwarfdump 和自己实现的 atosl 脚本,对崩溃进行做符号化。并尝试去搭建一个自己的 crash 分析平台。
+
+### 🐕 [Linking Objective-C Code](https://pewpewthespells.com//blog/objc_linker_flags.html)
+
+本文首先简单介绍了链接器,库,二进制文件,符号,选择器和编译器的相关知识作为铺垫,然后介绍了 Objective-C 程序的链接过程,并且解释了 ``-all_load``,``-Objc`` 以及 ``-force_load`` 三种常用链接标志在链接过程中所起到的的作用。
+
+### 🐕 [一个在 Objective-C 和 Swift 中实现剖面导向编程的故事](https://juejin.im/post/5c86be73f265da2dd94ce3b3)
+
+苹果官方并不支持 AOP?非也。看作者带你走过一段从分析 KVO 原理到设计通用的 AOP 框架的历程。
+全文重在设计过程,用植物嫁接打比方,金句不断,细读颇具趣味。
+
+> 注:剖面导向编程 == 面向切面编程 == AOP(Aspect Oriented Programming)
+
+### 🐎 [PSPDFKit and Swift](https://pspdfkit.com/blog/2019/swift-and-pspdfkit/)
+
+PSPDFKit for iOS 是用 C、C++、Objective-C(++) 开发的大型项目。在这篇文章里,PSPDFKit 官方亲自讲述作为 SDK 开发商对于 Swift 的看法,大家都在拥抱 Swift,为何 PSPDFKit ofr iOS 还是坚持使用 Objective-C?在即将正式发布的 Xcode 10.2 中,Swift 5 将包含稳定的 ABI,PSPDFKit for iOS 是否会迁移到 Swift?作者详细分析了 Swift only 的优点和缺点,并得出结论:我们很热爱 Swift,在很多项目里采用了 Swift 语言,并且不断为 Swift 编译器贡献新功能,但 Swift 并不适合我们的 SDK,在可见的将来里,我们会继续坚持使用 Objective-C。
+
+### 🐕 [Why we stopped using fastlane - Life in the slow lane](https://silverhammermba.github.io/blog/2019/03/12/slowlane)
+
+> 相信现在很多团队都在用 Fastlane,推荐本文是期望大家听到更多的声音。
+
+本文作者在 2018 年写了一篇 Fastlane 的使用文章,现在,他来回顾一些 Fastlane 不好的地方:
+- 没有解决 Xcode 本身的问题
+- Fastlane 本身很庞大,有太多的依赖项
+- Fastlane 自身有许多 Bug
+- 太多人在用以至于 issue 太多,核心问题得不到解决
+
+### 🐎 [HTTPS 温故知新(一)— 开篇](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-begin.md)
+
+本文是 halfrost (霜神)[HTTPS 系列](https://github.com/halfrost/Halfrost-Field/tree/master/contents/Protocol) 学习笔记的第一篇,主要介绍了以下几方面:
+
+1. 为什么需要 HTTPS
+ - HTTP 数据没有加密
+ - HTTP 无法验证通信对方的身份
+ - HTTP 无法防止数据被篡改
+2. HTTPS 带来的好处
+ - 使用 HTTP/2 获得更高的性能
+ - 提高 SEO 排名
+ - 更好的推荐数据
+ - 更高的安全性
+ - 提高网站的信任和信誉
+ - HTLM5 新特性
+ iOS ATS 要求
+3. HTTPS 安全的本质
+ - HTTPS 采用混合的加密机制,使用公开密钥加密用于传输对称密钥,之后使用对称密钥加密进行通信
+ - HTTPS 通过使用 证书 来对通信方进行认证
+ - TLS / SSL 提供报文摘要功能来验证完整性
+4. HTTPS 中的 TLS / SSL 协议
+ - TLS 记录层协议
+ - TLS 密码切换协议
+ - TLS 警告协议
+ - TLS 握手协议
+ - TLS 应用数据协议
+
+计算机网络基础是开发者需掌握的知识,但往往会被忽略,了解这些计算机基础知识为我们构建完整的计算机知识体系颇有益处。
+
+### 🐢 [开发小知识](https://www.jianshu.com/p/5a4ba3c165b9)
+
+如作者言,最近一段时间面试中发现很多开发者都只停留在知道、听说过的层面,却很少能回答的好是什么、为什么。作者一口气整理了 78 个 iOS 以及计算基础相关知识点,简短明了直指关键(不错的面试指南😂),如果看完觉得 so easy,恭喜你已经脱离了知道会用的初级阶段了😇。
+
+### 🐢 [最详细版本|UI2Code 智能生成 Flutter 代码——版面分析篇](https://mp.weixin.qq.com/s/AkTgvv0EoydRmspEyfZNGg)
+
+AI 写代码,相信很多同学听到这个命题都会很感兴趣。UI2CODE 项目是闲鱼技术团队研发的一款通过机器视觉理解+AI人工智能将UI视觉图片转化为端侧代码的工具。本文全面分析了这个项目中 UI 前景提取和背景分析是如何做的。通过图像处理与深度学习相结合,在识别准确度,定位精度上都有了明显的提升。有兴趣的同学可以研究一下。
+
+## 代码
+
+### [Flare-Swift](https://github.com/2d-inc/Flare-Swift)
+
+[Flare](https://www.2dimensions.com/about-flare) 是一款强大的设计和动画工具,可以让 app 和游戏的设计师、开发者轻松添加高品质动画。Flare 的主要功能是让设计师可以实时、直接操作最终产品中的 assets,从而实现快速迭代、避免重写代码。Flare-Swift 则是 Flare 的 Swift 运行时,可以通过 Export to Engine 来导出 Flare 文件。
+
+## 音视频
+
+### 🌟 [ggtalk | 聊聊跨平台:后起之秀 Flutter](https://talk.swift.gg/21)
+Flutter 现在的热度自然不用多说,国内各个公司都开始了在业务肿的尝试,包括美团。本周的 ggtalk 邀请到了美团御姐(宇杰)一起深入聊了美团在 Flutter 中的相关实践,也聊了很多 Flutter 的过去、现在和将来。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://github.com/Damonvvong),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj),[@极速男孩](https://github.com/ztlyyznf001)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#60-2019.03.25.md b/Reports/2019/#60-2019.03.25.md
new file mode 100644
index 000000000..13236eac3
--- /dev/null
+++ b/Reports/2019/#60-2019.03.25.md
@@ -0,0 +1,132 @@
+# 老司机 iOS 周报 #60 | 2019-03-25
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [3 月 27 日起上传 App Store 最低需须使用 iOS 12.1 SDK 编译](https://developer.apple.com/news/?id=03202019a)
+
+Apple 发布公告:请注意,自2019年3月27日起,iPhone 或 iPad 的所有新 App 和 App 更新(包括通用 App)都需要使用 iOS 12.1 SDK 构建并支持 iPhone XS Max 或 12.9 英寸 iPad Pro(第 3 代)。还需要提供这些设备的屏幕截图。Apple Watch 的所有新 App 和 App 更新都需要使用 watchOS 5.1 SDK 构建,并支持 Apple Watch Series 4。
+
+## 新手推荐
+
+### 🐎 [Flutter 您需要知道的知识点](https://mp.weixin.qq.com/s/4tdqptBIf4VHrjWmHeUKjA)
+
+最近整理周报的时候发现关于 Flutter 的文章一下子多了起来,看来最近研究 Flutter 的人应该有不少,不过我觉得对于大部分读者来说,目前对于 Flutter 还是处于一个萌新的状态,所以为了能看懂一些先行者到底在讲什么,这周给大家推荐两篇比较基础的文章:
+
+- [Flutter 您需要知道的知识点 | FAQ・第一期](https://mp.weixin.qq.com/s/4tdqptBIf4VHrjWmHeUKjA)
+
+这篇文章主要讲了 Flutter 是什么,能做什么,什么样的人适合使用 Flutter 以及 Flutter 需要怎么样入门以及如何使用。
+
+- [Flutter 您需要知道的知识点 | FAQ・第二期](https://mp.weixin.qq.com/s/0JdDapzGIPByttq-key3Cg)
+
+在看完上面一篇文章的基本介绍之后,就要了解一下 Flutter 里面的内容了,这篇文章大概介绍了关于 Flutter 的 SDK 主要功能,支持的编辑器,开发的灵感来源以及是否包含测试框架等一系列问题。
+
+### 🐎 [UIApplicationDelegate 中方法的调用顺序](https://recoursive.com/2019/03/14/guide_uiapplicationdelegate_method_invocation_order/)
+
+本文介绍了在 UIApplicationDelegate 中的各个方法在各个不同状态下启动和打开是所调用顺序。
+
+## 文章
+
+### 🐕 [即将开源 | 让 Flutter 真正支持 View 级别的混合开发](https://mp.weixin.qq.com/s/-vyU1JQzdGLUmLGHRImIvg)
+
+本文介绍了今日头条主客户端上接入 Flutter 进行混合开发的经验,主要是解决如下问题
+1. FlutterView 在一些小场景碎片化的问题。譬如短期内无法完成页面级别的 Flutter 化,Native View 和多个 Flutter View 必须混合存在的情况。类似的还有 Feed 流中的 Flutter Cell,列表页中的某些 ItemView 是 FlutterView。
+2. 内存管理问题:回收不活跃页面占用的内存
+3. 共享线程:收敛全局线程为公共的4个线程
+4. SurfaceView 改 TextureView :主要是解决手势动画的问题
+
+总结来说,字节跳动客户端基础技术 Team 目前对于 Flutter 已经有了一定的研究,并且能够支持到 View 级别开发,目前文中提到的方案正在进行公司内部开源审查程序,通过后会在字节跳动官方 Github 上开源。
+
+### 🐢 [如何构建具有多种 Cell 类型的表视图](https://github.com/xitu/gold-miner/blob/master/TODO1/ios-how-to-build-a-table-view-with-multiple-cell-types.md)
+
+iOS 开发中,可以说几乎所有的项目都离不开 UITableView 的使用,甚至它的各种变形扩展都无处不在。UITableView 运用广泛的主要原因在于其 Cell 的多变性,在 Cell 数量和顺序恒定或展示内容相似的时候,这是比较常规的用法。但是当数量顺序甚至展示内容不尽相同的时候,这是比较有趣又极具挑战的。本文作者则指出传统写法在这种复杂情境中的弊端,并使用 MVVM 模式去构建这种动态试图:
+
+1. 模仿服务器响应,创建简单 JSON 数据,将 JSON 映射到 Model
+2. 基于 Model 创建 ViewModel,它将负责向 UITableView 提供数据,ViewModel 具有一个 Item 数组,它对应着 UITableView 包含的 Section 数组
+3. 每种Cell 对应 ViewModel 中的 Item 属性,可修改或者删除数据而不需要做任何代码修改
+
+这种模式最大的好处,就是在复杂业务情境下将业务和页面区分出来,免去各种分支判断及数据修改造成的大量代码修改,并且 ViewModel 也易被重用。
+
+### 🐕 [UTF-8 String](https://swift.org/blog/utf8-string/)
+
+文章内介绍了,`Swift 5` 将字符串的编码格式从 `UTF-16` 改成 `UTF-8`,以此提高性能。`Unicode-rich text` 和 `ASCII` 在 5 之前,用 `UTF-16` 存储,在这之后都用单个的 `UTF-8` 存储。
+
+选用 `UTF-8` 的原因:
+- 在 `ASCII` 中 `UTF-8` 比 `UTF16` 占用少50%。
+- 高兼容性(对操作系统,开发工具,C / Objective-C 桥接)。
+- 减少代码大小和编译时间成本。
+- 无需修改现有代码。
+
+更加详细的说明,请打开链接。
+
+### 🐕 [Mastering the VIPER architecture](https://theswiftdev.com/2019/03/19/mastering-the-viper-architecture/)
+
+作者介绍了面向协议编程在 VIPER 架构上的实践,并结合代码示例讲解了 Module, Presenter 和 Entity 协议的定义和使用方法。
+
+推荐阅读:
+- [VIPER best practices for iOS developers](https://theswiftdev.com/2019/03/11/viper-best-practices-for-ios-developers/)
+- [The ultimate VIPER architecture tutorial](https://theswiftdev.com/2018/03/12/the-ultimate-viper-architecture-tutorial/)
+
+### 🐕 [Swift AVFoundation framework — Text-To-Speech tool](https://blog.usejournal.com/swift-avfoundation-framework-text-to-speech-tool-f3e3bfc7ecf7)
+
+本文介绍了 AVFoundation 文字转语音的相关接口,并详细介绍了 `AVSpeechSynthesizer`, `AVSpeechUtterance`, `AVSpeechSynthesizerDelegate` 在实际应用中的流程与注意事项。
+
+### 🐎 [Better tests for delegates](http://www.mokacoding.com/blog/better-tests-for-delegates/)
+
+文中介绍了两种测试 `delegate` 调用的两种决策:面向实现、面向行为。在面向实现过程中,我们更多的关注状态变化,需要更多的测试 `delegate` 响应方法的实现。而在面向行为的决策中,我们不需要关注其参数细节,只需要关注其实现的内容。
+
+## 工具
+
+### [CocoaPods 历险 - 总览](https://www.desgard.com/cocoapods-1/)
+
+是否应该使用 CocoaPods 在几年前还是一个争论不休的问题,然而现在,但凡稍具规模的项目,就没有不使用 CocoaPods 的。作为一个三方库版本管理的工具, CocoaPods 对于组件的拆分粒度是非常细微的,我们所调用的 pod 命令都是执行本地对应目录下的脚本,那这些脚本文件到底执行了什么呢?本文主要分析了 pod install 命令执行的详细过程,当我们知道大致过程后,就可以对其做一些修改和控制,以达到我们的预期。
+
+
+## 代码
+
+### [Snail: An observables framework for Swift](https://github.com/UrbanCompass/Snail)
+
+一个轻量级的 observables 库,不用 KVO & RxSwift 也可以轻松观察变量的变化 & 响应事件了。
+
+### [swift-log](https://github.com/apple/swift-log)
+
+官方的日志接口包(Logging API package),使用方(比如 Swift 服务端、跨平台的应用或库)可以根据自己的需求配置 log 输出的具体实现。
+
+## 音视频
+
+### [ggtalk | 区块链到底能干嘛?](https://talk.swift.gg/22)
+区块链近年来一个是技术圈的热点,风头甚至盖过了 AI,不少技术圈的名人也纷纷投身了区块链相关的创业中。本期 ggtalk 邀请到了微博上链圈名人赏味不足,来一起聊聊区块链的一些入门知识,强烈推荐感兴趣但一直没入门的同学收听。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://github.com/Damonvvong),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj),[@极速男孩](https://github.com/ztlyyznf001)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#61-2019.04.01.md b/Reports/2019/#61-2019.04.01.md
new file mode 100644
index 000000000..d2ceac551
--- /dev/null
+++ b/Reports/2019/#61-2019.04.01.md
@@ -0,0 +1,176 @@
+# 老司机 iOS 周报 #61 | 2019-04-01
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [Swift 5 正式发布](https://mp.weixin.qq.com/s/-fLVdoTz3lT5Kxnea0-Avg)
+
+Swift5 正式更新,官方提供了更新笔记说明,我们周报编辑团队的 [@Tom](https://xiaozhuanlan.com/u/6682065345) 组织 [@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang) 和 [@极速男孩](https://github.com/ztlyyznf001) 为大家做了第一手的翻译工作,方便大家了解这次对于 Swift 发展史很重要的迭代。
+
+### 🌟 [支付宝移动开发平台 mPaaS 正式向个人开发者开放](https://fw.alipay.com/alipaymarket/ability/AM010000000000002935/detail.htm)
+
+mPaaS 是支付宝移动开发所依赖的平台服务,它承载了支付宝这种超级 App 的日常迭代。过去半年左右的时间,mPaaS 持续向社区输出自己的一套软件开发和管理方案。之前 mPaaS 服务只对企业级用户开放,而这周支付宝宣布这套开发平台也正式向个人开发者开放。个人觉得,就算不使用这个平台服务,通过浏览其功能的相关文档和接口规范,也能获得不错的收获。
+
+### [Shortcuts 2.2 Brings New Apple Notes Actions, Travel Time Enhancements](https://www.macstories.net/ios/shortcuts-2-2-brings-new-apple-notes-actions-travel-time-enhancements/)
+
+在苹果将 Workflow 纳入自家门下之后,越来越多的 私有 API 开放给了捷径应用。就在本周,捷径发布了其 2.2 版本。原先需要打开 Notes APP,再进行捷径操作。如今已变成了后台 API 访问的形式。除此之外,还增强旅行时间功能,其基于 Apple Maps,有更多的变量可以让你去选择,例如时长、距离、最佳路线等。
+
+## 新手推荐
+
+### 🌟 [代码自解释不是不写注释的理由](https://www.infoq.cn/article/eQlxAX013D9h5b-B356Q)
+
+代码注释通常有两种形式:要么没有和要么毫无用处 。作者认为`自解释的代码是不存在的` ,应该让注释成为代码的一部分。如果你对代码注释有任何疑问,推荐阅读此文。
+
+### [Swift 4.2 improves Hashable with a new Hasher struct](https://www.hackingwithswift.com/articles/115/swift-4-2-improves-hashable-with-a-new-hasher-struct)
+
+Swift 4.2 优化设计了 Hashable 协议,引入了新的 default implementation `func hash(into: inout Hasher) `,并以 Hash-flooding 攻击为知识背景详细介绍了为什么 Apple 官网文档不建议继续使用 `var hashValue` 的原因。
+
+> @[sunsetwan](https://github.com/SunsetWan) 推荐
+
+### [Swift, more elegant code: Typealias](https://medium.com/@ahmadfayyas/swift-quick-elegant-code-typealias-8e6d59f07f32)
+
+本文作者使用两个例子,一正一反,运用对比论证的手法,生动形象地说明了 Typealias 的恰当用法。
+别名的使用,在于将很长的声明类型缩短,增加可读性。常用于在 Swift closure (类比 Objective-C block `typedef` 场景)。
+
+```
+typealias Success = (_ data: Data, _ message: String, _ status: Int, _ isEnabled: Bool) -> ()
+```
+
+> @[sunsetwan](https://github.com/SunsetWan) 推荐
+
+
+## 文章
+
+### 🌟 🐢 [Flutter 实现原理及在马蜂窝的跨平台开发实践](https://mp.weixin.qq.com/s/WBnj_6sOonjR9XUnB-wZPA)
+
+马蜂窝团队根据他们对 Flutter 在马蜂窝商家端的一个小尝试,总结了他们对 Flutter 一些看法。文章主要分为三个部分:
+
+- 第一部分,主要说了马蜂窝为什么想尝试 Flutter 技术,并总结了 Flutter 基本架构和实现原理
+- 第二部分,主要讲了 Flutter 在马蜂窝商家端 App 中的应用实践,如何在两端集成、如何交互以及部分性能对比。
+- 第三部分,主要总结了如何管理「页面混合栈」以及对 Flutter 应用总结。
+
+如果还没有开始尝试 Flutter 朋友,这会是一篇很不错的参考文章哦。
+
+### 🌟 🐕 [VIPER best practices for iOS developers](https://theswiftdev.com/2019/03/11/viper-best-practices-for-ios-developers/)
+
+本文是作者在过去一年对 VIPER 架构最佳实践系列分享的第二篇。主要包括以下内容:
+
+1. 使用 VIPERA 代码生成工具自动生成 VIPER 各个模块
+2. 以 App 首页业务为例结合 Promises 分别实现 View、Interactor、Presenter、Entities、Router 、Services
+3. VIPER 模块间通信
+
+结合 Promises 基于 VIPER 架构可以使代码结构更加清晰,更容易做单元测试,更易复用,[点击这里](https://github.com/theswiftdev/viper-best-practices/)阅读源码。
+
+对 VIPER 架构感兴趣的读者可以扩展阅读作者这个系列教程[第一篇:](https://theswiftdev.com/2018/03/12/the-ultimate-viper-architecture-tutorial/)各种架构及 VIPER 基本概念,[第三篇:](https://theswiftdev.com/2019/03/19/mastering-the-viper-architecture/)面向协议编程在 VIPER 架构上的实践。
+
+### 🌟 🐕 [iOS 开发中的 Web 应用概述](https://dequan1331.github.io/web-in-ios.html)
+
+移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代。而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求着平衡。本文聚焦 iOS 开发和 Web 开发的交叉点,希望能通过简要的介绍,帮助开发者一窥 Hybrid 和大前端的构想。
+
+### 🐎 [CodeHub#1 回顾 | 敏捷开发与动态更新在支付宝 App 内的实践](https://mp.weixin.qq.com/s/eXzojM0lCaaCW4JxBaU6BQ)
+
+本文解释了支付宝 App 的一些架构实现细节,支付宝的架构设计需要满足的目标有
+
+- 多应用的生态:不限于形式,原生模块、离线包、小程序。
+- 开放:底层同一个架构,业务很方便的迁移。
+- 动态化:业务可以随时在线更新,无需发版,随时响应线上活动,比如双十一、双十二,春节扫福等活动
+- 高可用、高性能、高灵敏度:完善的监控运维体系、发现问题后多层次的修复技术、客户端良好的性能启动体验,强大的网络性能,防刷抗流量等。
+
+从整体上来说,一个超级 App 的发展过程,对于前后端的架构设计都会提出不同的演化目标。目前支付宝也开源了面向移动开发的一站式解决方案 mPass,能有效地减少研发成本,提升开发效率,可以多关注一下。
+
+### 🐕 [What’s new in Swift 5.1](https://www.hackingwithswift.com/articles/182/whats-new-in-swift-5-1)
+
+令 Swift 程序员们热泪盈眶,翘首以盼的 Swift5.0 已经发布了,带来了 ABI 稳定等一系列激动人心的特性。按照 Swift 一贯的节奏,当一个版本发布时,人们往往就已经开始关注下一个版本,比如这篇文章为我们简单的介绍了一下 Swift5.1 中目前已经基本确定的新特性,比如 Self 的新用法,optional 枚举的匹配以及数组的 difference 直接计算等,个人觉得最好玩的应该是最后一个点。基于这个特性应该可以做很多有趣的文本应用。感兴趣的同学可以仔细看看文章。
+
+### 🐎 [Deep dive into Pattern matching with ~= operator](https://mecid.github.io/2019/03/20/pattern-matching-operator/)
+
+Swift 中的 `switch-case` 语句非常强大,灵活配合 `turple`, `case let`, `where` 能写出可读性很高的代码。
+
+但是,你知道 `switch-case` 语句模式匹配的具体过程吗?是否支持自定义类型?标准类型的模式匹配如何扩展?你可能想不到,简单的重写 `~=` 运算符就能实现这些强大的功能。本文带你快速了解这一模式匹配过程。
+
+### 🐢 [XcodeKit and Xcode Source Editor Extensions](https://nshipster.com/xcode-source-extensions/)
+
+Xcode 8 提供了 Xcode Source Editor Extension方式来开发 Xcode 插件。本文详细介绍了插件的制作过程如 Menu Items 设置、XcodeKit Inputs and Outputs 处理、以及一些开发调试中的一些 Tips 等。在往期周报中已有不少相关内容的推荐,对 Xcode Extensions 感兴趣的读者不妨一看。
+
+> 推荐阅读:
+> 1. [How to convert your Xcode plugins to Xcode extensions](https://medium.freecodecamp.org/how-to-convert-your-xcode-plugins-to-xcode-extensions-ac90f32ae0e3)
+> 2. [制作一个 Mac APP:XcodeExtension](https://juejin.im/post/5c53f32be51d457fbe226fdd)
+> 2. [Code Friend](https://github.com/qvcodefriend/CodeFriend)
+
+### 🐢 [How to implement service oriented architecture using swift](https://itnext.io/service-oriented-architecture-in-swift-362dc454fc09)
+
+基于服务的架构是一种组件模型,它将应用拆分成多个功能单元(服务)暴露给上层进行调用,并通过这些服务之间定义良好的接口和契约联系起来。
+
+这篇文章讲的就是这种架构在 iOS 里的使用,作者讲述了他对于服务的定义,接口的构建,架构具体的分层,依赖注入的实现,并且基于这一套理论实现了一个用户信息管理功能。
+
+## 工具
+
+### 🌟 [通过异步生成 dSYM 实现极速打包](https://github.com/bestswifter/blog/blob/master/articles/async-dsym.md)
+
+对大型应用来说,进行编译打包通常比较耗时。通过对编译时间的分析可以发现,大约有两分钟的时间用于生成 dSYM 文件,也就是 Release 模式下的符号表。为了不阻塞编译构建,dSYM 可以通过异步的方式去生成。具体的做法为:
+
+1. 将一次编译构建拆分为两次
+2. 第一次编译不生成 dSYM 文件
+3. 第二次编译再生成 dSYM 文件,由于使用了相同的代码和缓存,因此速度非常快
+
+当前这个工具仅用于修改 UUID,不区分是否是 dSYM 文件,且仅支持 armv7 和 arm64 架构。
+
+### 🌟 [LLDB 知多少](https://juejin.im/post/5c8ca84ce51d456f43189dbd)
+
+LLDB 是我们 iOS 开发最为熟悉的调试工具了,本文就从 LLDB 基本概念和它的命令结构展开,总结了几个常用的调试命令,同时也介绍了两款功能强大的 LLDB 插件,让我们重新认识了 LLDB。正如作者所希望的,在大家了解了 LLDB 之后,还是要通过不断的练习来掌握更多的调试技巧,进一步提高开发效率。
+
+### [DevSwitch](https://github.com/aaronpearce/DevSwitch)
+
+一款可以快速切换应用商店的地区,来查看你的应用的评论和功能的工具。
+
+## 代码
+
+### [flutter_flipperkit](https://github.com/blankapp/flutter_flipperkit/blob/master/README.zh_CN.md)
+
+随着 Flutter 的热度不断增加,社区相关的工具库也在不断增加。如果之前有开发过 RN 的同学可能知道 blankapp 这个团队,他们为 RN 开发了很多易用的组件之前。目前,他们团队也开始为 Flutter 开发一些工具,flipperkit 这个工具主要用来在开发过程中方便的进行 debug,支持网络信息、UserDefaults 信息的查看等等,而且集成安装很方便,推荐大家尝试。
+
+## 音视频
+
+### [ggtalk | 如何出版一本书](https://talk.swift.gg/23)
+
+本期 ggtalk 邀请的嘉宾是曾经在人民邮电出版社担任过文字编辑和线上运营工作的刘女士以及《Xcode 江湖录》的作者星星。围绕“如何出版一本书”这一主题,本期讨论的内容(按照时间顺序)大致分成三个部分:
+
+1. 介绍图书出版的流程以及回答稿酬计算方式等关于出版图书的一些相关问题
+2. 星星和梁杰的出书和翻译经历
+3. 关于国内的出版现状,电子书和“碎片化阅读”的讨论
+
+本期的讨论对想自己出书或是翻译国外图书的朋友有比较大的帮助。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 本期编辑
+
+[@四娘](https://kemchenj.github.io),[@享耳先森](https://github.com/iblacksun),[@Damonwong](https://github.com/Damonvvong),[@折腾范儿_味精](http://weibo.com/agvicking),[@张嘉夫](https://weibo.com/2949394297),[@Parsifal](https://weibo.com/parsifalchang),[@aaaron7](https://weibo.com/aaaron7),[@kyo](https://github.com/KyoLi),[@tom510230](https://xiaozhuanlan.com/u/6682065345),[@anotheren](https://anotheren.com),[@水水](https://www.xuyanlan.com),[@looping](https://github.com/looping),[@老老老老老老老驴](https://weibo.com/u/6090610445),[@小非86](https://weibo.com/xuyafei86),[@邦ben](http://weibo.com/linwenbang),[@红纸](https://github.com/nianran),[@含笑饮砒霜](http://chinafish.news),[@JimQ](https://github.com/waz0820),[@老峰](https://github.com/GesanTung),[@zvving](https://github.com/zvving),[@J_Knight_](https://github.com/knightsj),[@极速男孩](https://github.com/ztlyyznf001)
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#62-2019.04.08.md b/Reports/2019/#62-2019.04.08.md
new file mode 100644
index 000000000..f4fffbc55
--- /dev/null
+++ b/Reports/2019/#62-2019.04.08.md
@@ -0,0 +1,178 @@
+# 老司机 iOS 周报 #62 | 2019-04-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+欢迎我们的新编辑 [@CrazyCoderShi](https://github.com/CrazyCoderShi) 加入周报团队,[@CrazyCoderShi](https://github.com/CrazyCoderShi) 在跨端方案尤其是 Flutter 方向均有较深的研究,希望接下来能为大家带来更优质的相关内容~
+
+## 新闻
+
+### [Can we do something for 996 programmers in China?](https://zhuanlan.zhihu.com/p/61638339)
+
+[996.ICU](https://996.icu/#/zh_CN) 在近来在国内互联网圈子里引发了不小的轰动,GitHub 上的仓库已经累计了 18w+ 的 star。而 Python 之父 Guido van Rossum 也同样关注着这个事件,早先就在推特上发声,而现在又在社区发起了一个讨论,希望能征集到一些切实可行的措施来改善这一现象。
+
+## 新手推荐
+
+### 🌟 [flutter_go](https://github.com/alibaba/flutter-go?utm_source=gold_browser_extension) / [flutter_ui](https://github.com/efoxTeam/flutter-ui)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 自打发布以来一直是热门话题,对于新手入门来说,一个完整且规范的项目是不可多得的学习资料,[flutter_go](https://github.com/alibaba/flutter-go?utm_source=gold_browser_extension) 出自阿里拍卖前端团队,[flutter_ui](https://github.com/efoxTeam/flutter-ui) 出自 YY 团队,两者均提供了丰富的组件示例,代码规范完全遵循 [Effective-Dart](https://www.dartlang.org/guides/language/effective-dart/style) 规范,新手入门 flutter 必备,通过这两个项目您将学习到以下知识点:
+
+- flutter 基础组件的使用方法
+- flutter 动画应用( [flutter_ui](https://github.com/efoxTeam/flutter-ui) )
+- 基于 [scoped_model](https://github.com/brianegan/scoped_model) 的 flutter 状态管理 ( [flutter_ui](https://github.com/efoxTeam/flutter-ui) )
+- 如何组织一个多 tab 应用
+
+### 🐕 [简单易懂 KVC 基础篇](https://juejin.im/post/5c948d6a6fb9a070eb267a08)
+
+[@JimQ](https://github.com/waz0820):一篇循序渐进地介绍 KVC 这门技术的文章。
+
+- 首先,分普通和特殊用法两部分讲述了与 KVC 相关的一系列 API 接口,并给出了这些 API 的思维导图;
+- 原理解析与实践,指出 KVC 协议中最关键的部分就是访问者搜索模式,并介绍了其中一种模式即可变数组的搜索模式;
+- 最后,讨论了 KVC 与 KVO 的实现机制之间是否有相关性,认为 KVC 是 KVO 实现的基础。
+
+## 文章
+
+### 🌟 🐢 [小程序渲染架构设计](https://mp.weixin.qq.com/s/D_7yvtEdwq8NM_tcb1YjMw)
+
+[@折腾范儿_味精](http://weibo.com/agvicking):BATT,微信,支付宝,头条,百度,都纷纷推出了自己的小程序,小程序这个概念已经广泛的渗透到了各大公司各大平台。
+
+- 小程序的架构有什么好处?为什么各大公司都倾向于用这样的小程序式的架构?
+- 小程序的架构是什么样子?这一套架构实现上与 H5/RN/Flutter 他们之间有什么差异?
+
+带着这些问题,来深入这篇文章,让我们从,用户的角度/平台的角度/架构与代码实现的角度,深入剖析一下“小程序”
+
+### 🌟 🐕 [燃烧我的卡路里——Flutter 瘦内存、瘦包之图片渲染组件](https://mp.weixin.qq.com/s/QwNMm0P2z7RGJ_xzhto1RQ)
+
+[@tom510230](https://xiaozhuanlan.com/u/6682065345):本文介绍了闲鱼在做 Flutter 工程中具体遇到的性能优化场景,并且提高了解决思路
+
+1. 内存问题 --- 连续 push flutter 界面内存累积
+
+2. 安装包问题 --- 过渡时期两份重复资源文件
+
+3. 寻址缓存问题 --- 原有的寻址缓存策略无法复用
+
+4. 图片复用问题 --- Native 和 Flutter 重复下载相同图片
+
+总体而言,Flutter 要想获得跟 native 差不多的性能,在不依赖原生 hybrid 组件的前提下,要对 Flutter Engine 做深度的定制,本文聚焦在了 OpenGL 渲染方面的性能改进。
+
+### 🐢 [运行时 Hook 所有 Block 方法调用的技术实现](https://juejin.im/post/5ca0ca6e51882567e32fc44b)
+
+[@含笑饮砒霜](http://chinafish.news):项目中为了监控拦截或统计一些行为时,可能会用到 Hook 机制。可以使用 Method Swizzling 技术去 Hook 一个 OC 方法,可以通过修改导入函数地址表中的信息来 Hook 一个 C 函数,那如何 Hook 一个 Block 对象的函数调用呢?这需要解决如下问题:
+
+1. 如何在运行时将所有的 Block 的 invoke 函数替换为一个统一的 Hook 函数
+
+2. 这个统一的 Hook 函数如何调用原始 Block 的 invoke 函数
+
+3. 如何构建这个统一的 Hook 函数
+
+Block 对象也是一种 OC对象,通过探究,最终要执行替换的是 retain 方法, 至于为何以及如何替换 retain 方法,有兴趣的同学可以参考学习一下。
+
+
+### 🐎 [跨平台技术演进](https://juejin.im/post/5ca1671651882567d41ebf6d)
+
+[@aaaron7](https://weibo.com/aaaron7):随着 Flutter 越来越流行,标志着无线端跨平台技术进入了第三个阶段,从最开始的 H5 + Native 的 hybrid 应用,到基于 DSL + 原生组件的 RN/Weex, 再到 DSL + 跨平台渲染组件的 Flutter。这些年跨平台技术的快速迭代,也促进了无线端技术栈和前端技术栈进行了各种各样的融合与尝试,也演化出类似 PWA,小程序这样独特应用场景的创新技术。本文作者总结了这一系列的技术,并针对性的分析了优缺点,算是不错的科普文章。深度一般,适合对相关技术不太了解的技术同学学习。
+
+### 🐎 [Swift Tip: Collection Protocols](https://www.objc.io/blog/2019/03/26/collection-protocols/)
+
+[@享耳先森](https://github.com/iblacksun):在 Swift 中,有许多 `Collection` 相关的协议,每个都有自己的作用,了解这些协议各自的作用,在写算法时将非常有帮助。本文摘录自 [`Advanced Swift`](https://www.objc.io/books/advanced-swift/) 这本书,作者们正在更新 Swift 5 相关内容,如果你之前买过电子版的话,将能免费更新。
+
+### 🐢 [A Glimpse into Generic Meta-Programming in Swift](https://wezzard.com/post/2019/03/a-glimpse-into-generic-meta-programming-in-swift-d2cd)
+
+[@老峰](https://github.com/GesanTung):VFL(Visual Format Language),是苹果公司为了简化 Autolayout 的编码而推出的抽象语言,其表达式通常是字符串,编译器无法在编译期验证表达式是否有误。基于这样的背景,本文作者以构建一个在编译期确保安全的 VFL 助手库为例,介绍了Swift 中的泛型元编程,点击这里查看本文 [源码](https://github.com/WeZZard/CTVFL),这里有这篇文章的 [翻译](https://juejin.im/post/5ca09c696fb9a05e5f3cfe1f) 可供参考阅读。
+
+### 🐢 [Introduction to Swift Keypaths](https://appventure.me/guides/keypaths/complete_book.html)
+
+[@极速男孩](https://github.com/ztlyyznf001) :在 Swift 中可以方便的通过 Keypath 对一个类进行类型安全的赋值和取值操作。本文首先介绍了 Swift 中的 Keypath 的基本用法和概念,然后给出一些实际的例子,并就如何在日常工作中使用 Keypath 给出一些建议和提示。
+
+> 由 [yuhanle](https://github.com/yuhanle) 推荐
+
+### 🐢 [The Pragmatic Guide to Scalable Swift Architecture for 2019](https://blog.usejournal.com/the-pragmatic-guide-to-scalable-swift-architecture-in-2019-dbe662f7f516)
+
+[@四娘](https://kemchenj.github.io):这算是一篇架构散文,作者在文章里通过一问一答的形式去阐述自己对于架构的理解:
+
+1. 高薪程序员是如何在团队里逐步推进架构改造的?
+2. 如何解决异步代码逻辑分散的问题的?
+3. 如何在依赖注入时保障安全性和可复用性?
+4. 如何通过状态和事件的解耦让 ViewController 的代码质量变得更高?
+5. 如何解耦 ViewController 里的跳转逻辑?
+
+## 设计
+
+### 🐕 [Everything you need to know about Loading Animations](https://medium.com/flawless-app-stories/everything-you-need-to-know-about-loading-animations-10db7f9b61e)
+
+[@张嘉夫](https://weibo.com/2949394297):这篇文章对加载动画进行了深入的介绍,包括加载动画的发展历史、入门指南、何时应该简洁何时又应该充满细节、实用的工具和资源等等,可以帮助你创造更加优秀的用户体验。
+
+## 工具
+
+### [cocoapods-binary](https://github.com/leavez/cocoapods-binary)
+
+[@小非86](https://weibo.com/xuyafei86):在 CocoaPods 中,即使没有对项目中的 Pod 进行任何修改,Xcode 也仍然会重新编译 Pod。这在大型项目中是一件十分痛苦的事情。因此,Carthage 甚至将二进制管理作为其核心功能。但其实 CocoaPods 在官方指南的“插件”章节介绍一款可以支持二进制管理的 CocoaPods 插件 [CocoaPods Binary](https://guides.cocoapods.org/plugins/pre-compiling-dependencies.html)。
+
+CocoaPods Binary 通过在 Pod 安装期间预编译你的 Pod,然后将二进制产物(例如:Framework 文件)添加到生成的 Pods 项目中,使 Xcode 没有重新编译代码的机会,以此实现二进制管理。
+
+### [CIFilter.io (Core Image Filter Reference)](https://noahgilmore.com/blog/cifilterio/)
+
+[@anotheren](https://anotheren.com):`CIFilter` 是 `Core Image` 的一个重要组成部分,但是 Apple 提供的 [文档](https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIPerspectiveTransformWithExtent) 已经提示不再更新,缺少新加入系统的 `CIFilter` 的使用说明。CIFilter.io 提供了完整的列表搜索,以及其相关用法。甚至它还提供了一个 App 来展示各个 `CIFilter` 的实际使用效果,你可以在 [这里](https://github.com/noahsark769/cifilter.io) 找到相关源码。
+
+## 代码
+
+### 🌟 [Matrix for iOS/macOS](https://github.com/tencent/matrix/tree/master/matrix/matrix-iOS)
+
+[@J_Knight_](https://github.com/knightsj):Matrix for iOS/macOS 是一款微信团队研发并日常使用的性能探针工具,目前集成在 iOS 和 macOS 微信的 APM(Application Performance Manage)平台中使用。
+Matrix for iOS/macOS 当前监控范围包括:崩溃、卡顿和爆内存,目前包含两款插件:
+
+1. WCCrashBlockMonitorPlugin:捕获卡顿堆栈插件,基于 KSCrash 框架开发,具有如下特点:
+ - 通过检查 Runloop 运行状态判断应用是否卡顿,同时支持 iOS/macOS 平台;
+ - 具备耗时堆栈提取能力,可获取最近时间最耗时的主线程堆栈。
+2. WCMemoryStatPlugin:内存监控插件,能够全面捕获应用出现爆内存时的堆栈以及内存分配的情况,具有如下特点:
+ - 在应用运行期间获取对象存活以及相应的堆栈信息,在检测到应用爆内存时进行上报;
+ - 使用平衡二叉树存储存活对象,使用 Hash Table 存储堆栈。
+
+
+推荐阅读:
+- [Matrix for iOS/macOS 正式开源了](https://mp.weixin.qq.com/s/ub4HF0PCGWoEveCvoGOG6A)
+- [Matrix-iOS 卡顿监控](https://mp.weixin.qq.com/s/gPZnR7sF_22KSsqepohgNg)
+
+### 🌟 [objc_msgSend_hook](https://github.com/czqasngit/objc_msgSend_hook)
+
+[@红纸](https://github.com/nianran):作者利用 [fishhook](https://github.com/facebook/fishhook) 原理巧妙的实现了对于 arm64 架构下 objc_msgSend 函数精简版的 Hook,代码量很少,可以有效工作且每一行代码都有注释(贴心~)。
+
+> 由 [@首先很有趣](https://weibo.com/everettjf?is_hot=1) 推荐
+
+### [RoughSwift](https://github.com/onmyway133/RoughSwift)
+
+[@在等简历の邦Ben](http://weibo.com/linwenbang):Swift 写的一个卡通手绘风格图形库,提供了所有基本类型(线,矩形,圆,圆弧等等),包括 SVG path。如果有同学想做点萌萌有趣的 APP 不妨考虑使用一下。
+
+### [LVThemeKit](https://github.com/lvpengwei/LVThemeKit/blob/master/README.md)
+
+[@JimQ](https://github.com/waz0820):作者开发中用到多个区域切换多套皮肤的功能,之前版本中新增功能或主题时要新增许多冗余代码,针对此借助 OC 的泛型和 KVC 进行了一次重构,代码是重构后的实现。
+
+> 由 [吕鹏伟](https://github.com/lvpengwei) 自荐
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#63-2019.04.15.md b/Reports/2019/#63-2019.04.15.md
new file mode 100644
index 000000000..f33f36d54
--- /dev/null
+++ b/Reports/2019/#63-2019.04.15.md
@@ -0,0 +1,166 @@
+# 老司机 iOS 周报 #63 | 2019-04-15
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [T 沙龙 - 互联网寒冬来袭,移动开发者如何破局](https://www.bagevent.com/event/2546122)
+
+2019 年上海第一次 T 沙龙将于 4 月 20 日下午 1 点 30 分在上海虹口区天水路 172 号金融街海伦中心 B 座准时举办,此次活动邀请到了来自饿了么、iTutorGroup、极光、以及看雪论坛的业界资深从业者为大家分享他们在移动端技术深度和广度上的实践和思考。希望这次活动能对互联网寒冬下迷茫的移动开发者有一些启发,并成功破局!猛戳上方链接免费报名。
+
+### [SwiftNIO 2.0 released](https://forums.swift.org/t/swiftnio-2/22136)
+
+[@四娘](https://kemchenj.github.io/):伴随着 Swift 5 的发布,SwiftNIO 也正式发布了 2.0 版本,这个版本主要有两个大更新:
+
+1. 内置了 BoringSSL 作为 Vendor,不再依赖系统的 OpenSSL
+2. 使用纯 Swift 实现了 HTTP2 协议,不再依赖于 nghttp2
+
+### [Smoke Framework 1.0 released](https://forums.swift.org/t/smoke-framework-1/22710)
+
+[@享耳先森](https://github.com/iblacksun):Amazon 之前开源的 Swift Web Framework 发布 1.0 了,围绕着 AWS 的服务做了很多深度集成。1.0 使用 Swift 4.2, SwiftNIO 1.x 开发,即将发布 Swift 5 及 SwiftNIO 2 的版本,包含 `SmokeHTTP`,`SmokeAWS`, `SmokeDynamoDB`, `SmokeAWSCredentials` 几个子模块。
+
+## 新手推荐
+
+### 🌟 🐕 [纯 Swift 项目 - Xib | Storyboard 多人协作技巧](https://juejin.im/post/5c468f676fb9a049ed313183)
+
+[@looping](https://github.com/looping):本文就针对大家在使用 Storyboard 后出现的一些问题或质疑,提出了自己的看法,并列举了相关实践和建议,从而说明 Storyboard 和 Xib 虽然存在一些缺点,但也是值得学习研究的:
+
+- 通过定制规范,合理的任务分工,以及有节制的使用工具来避免多人协作的坑 —— 对 Storyboard 的滥用(作者在文章中也给出了他们团队使用 Storyboard 的规范);
+- 通过良好的模块设计,熟练使用 Storyboard 分离代码的几个方案来避免由于 Storyboard 造成 ViewController 代码臃肿的问题;
+- 需要修改类名或者变量名,应该善用 Xcode 的重构功能,来避免由于手动修改代码出现遗漏,导致应用崩溃等现象排查定位困难的问题;
+- 经过测试,Storyboard 和 Xib 的执行效率并没有想象中的那么低,在重复创建实例时效率反而会比纯代码要高;
+- 使用 Storyboard 和 Xib 进行布局,缺少约束或者约束冲突就会直接提示错误,适配不同设备也可以直接在 Interface Builder 上切换测试,效率和准确性比手写适配代码要高很多。
+
+## 文章
+
+### 🌟 [iOS app 秒开 H5 优化总结](https://juejin.im/post/5c9c664ff265da611624764d)
+
+[@折腾范儿_味精](http://weibo.com/agvicking):为了让 app 里面的 H5 页面实现秒开的效果,很多项目都采用了加载本地 H5 离线包的方式。如何实现这样的秒开就得分别从两个方面着手实现。
+
+- 离线包的分发与下载
+- WebView 的本地加载
+
+需要补充一点的是,本文在 WebView 本地加载上都是以拦截的思路进行本地加载,UIWebView 自然可以顺畅使用 NSURLProtocol 但是在 WKWebView 里就面临很大的阻碍,而作者给出的代替方案还是 WKURLSchemeHandler 拦截,但面临的代价也是本来前端无感的拦截方案现在被迫前端也得受影响,打包的时候对资源协议头进行适配,这一点和很多公司的离线包方案略有差异。
+
+在 WKWebView 里,即便是使用 WKURLSchemeHandler,资源拦截的方式也面临着与安卓差异化严重,对前端侵入性严重等问题,很多公司的离线包方案选择了另外的一条路,App 起本地服务器 run 前端离线包页面,做到让 WebView 无感知当前是一个“离线”页面,这样做能够最大程度的让前端对于离线包“无感”,也能忽略掉拦截 API 的平台差异导致的框架实现差异。
+
+关于起本地服务器的这套方案,可以参考 [基于 LocalWebServer 实现 WKWebView 离线资源加载](https://www.jianshu.com/p/a69e77bf680c) 一文。它介绍了基于 Local Web Server 的方案来实现离线本地 H5 页面秒开。对这个方案有兴趣的朋友可以详细地看一下本篇文章给大家介绍的几套 Local Web Server 的开源方案并且文章还配有 Demo 代码可以参考。本文还向大家详细介绍了一下证书签名等部署本地服务会面临的问题。
+
+### 🌟 🐢 [Building a dynamic modular iOS architecture](https://medium.com/fluxom/building-a-dynamic-modular-ios-architecture-1b87dc31278b)
+
+[@莲叔](https://weibo.com/aaaron7/):在以往讲述 iOS 架构/设计模式的文章中,往往 focus 在某个功能模块如何设计,如:MVC,MVP,VIPER,MVVM 等,讲述整个工程的设计模式和组织方法的讨论并不多见。本文从整个工程的架构着手,提出了一种工程的分层的架构方式,并且通过针对不同的层选择动、静态库来承载,实现了易于拓展、可组合、低耦合的工程架构,同时能兼顾编译时间和启动时间。针对各种不同粒度的需求变更,feature 级或者流程级都能够很好地兼容,文章还给出了对初学者很友好的 example app 来描述其思想,避免了读者在工程配置上可能花费的探索时间(毕竟要配置一堆动静态库的依赖关系还是有点蛋疼的)。值得阅读。
+
+### 🌟 🐢 [百度 App 网络深度优化系列(一):DNS 优化](https://www.infoq.cn/article/3QZ0o9Nmv*O0LoEPVRkN)
+
+[@kyo](https://github.com/KyoLi):在移动互联网时代,对于各家公司而言,什么东西最重要呢?我想大多数的答案应该是流量。本文当然不是讨论如何获取更多的流量等问题,毕竟那更多是产品运营的事情,而为流量做保驾护航的,就是网络。所以,如何优化网络,也是各厂纷纷探索的方向。对于流量越大的 App 而言,网络优化所带来的收益也越大。本文由百度 App 研发团队所写的[百度 App 网络深度优化系列]的第一篇,DNS 的优化,从百度这个亿级日活的 App 自身的实践中总结出来的,非常值得好好看下。
+
+### 🌟 🐎 [Pure protocol factory for Interface Builder-based views](https://blog.hal.codes/ib-constructible)
+
+[@looping](https://github.com/looping):多人协作引起的代码合并冲突是我们使用 Storyboard 进行开发时常会遇到的比较头疼的问题了。避免这类协作问题的常用解决方案就是制定规范,规定一个界面用一个 Storyboard,并由单人维护。这样虽然解决了协作问题,但假如在写实例化代码时不进行优化,还是会存在一些不太友好的冗余代码,甚至硬编码。例如,`let controller = UIStoryboard(name: "MyViewController", bundle: Bundle(for: MyViewController.self)).instantiateInitialViewController() as? MyViewController`。
+
+本文作者就分享了一种优化思路,他通过设计一个 UIViewController 的协议(protocol)IBConstructible —— 带有 nibName 和 bundle 这两个属性,利用 Swift 允许通过扩展(Extension)为协议提供默认实现的特性,使得最终实例化代码变得非常简洁,`let controller = MyViewController.fromNib`。
+
+如果有在使用 Storyboard 进行开发的团队,但还没有对相关代码进行优化的话,可以参考本文提供的方案来处理,让代码变得更加简洁。如果已经优化过的,不妨也分享下自己的思路。同时本文的优化技巧也是可以用在很多代码重构的场景上的。
+
+### 🐎 [RunLoop 实战:实时卡顿监控](https://juejin.im/post/5cacb2baf265da03904bf93b)
+
+[@kyo](https://github.com/KyoLi):虽然移动设备的性能越来越好,但为了追求更好的体验,卡顿依然是我们日常开发中不可忽视的问题。目前,各个公司都会采用各种三方库或者自己写的库来监控卡顿,但无论什么库,监控卡顿必然绕不开 Runloop。本文作者简单介绍了监控卡顿的原理,然后利用 Runloop 的特性制作了一个可以监控卡顿的 Demo。
+
+### 🐎 [Indeterminate Types chuwith Codable in Swift](https://medium.com/makingtuenti/indeterminate-types-with-codable-in-swift-5a1af0aa9f3d)
+
+[@极速男孩](https://github.com/ztlyyznf001) : Codable 是在 Swift 4 以后引入的一种序列化和反序列化的协议。本文主要介绍了两种对于在 Codable 协议中,处理不确定类型的两种方式:
+
+1. 通过枚举去关联想要存储的不同类型的属性值。
+2. 使用 `Any` 关键字去存储想要的类型。
+
+本文在这里主要推荐使用 `Any` 关键字, `Any` 和用枚举的方法相比在保持类似的开发体验的同时,可以灵活的去修改。
+
+> 由 [yuhanle](https://github.com/yuhanle) 推荐
+
+### 🐎 [一篇文章读懂 HTTPS 及其背后的加密原理](https://mp.weixin.qq.com/s/3gI8avaaaEaBJjOKitN7Fw)
+
+[@J_Knight_](https://github.com/knightsj):作者以使用 HTTPS 的缘由为切入点,从对称加密和非对称加密的对比,数字证书,数字签名,以及 HTTPS 通信的建立流程这几个方面介绍了 HTTPS。
+
+### 🐕 [Stubbing in pair with Swift compiler: a spy registration](https://medium.com/flawless-app-stories/stubbing-in-pair-with-swift-compiler-a-spy-registration-bbfdc1cf87a1)
+
+[@zvving](https://twitter.com/zvving):45 期我们曾介绍过 [Unit tests 中轻量级 stubbing 实现](https://medium.com/@londeix/stubbing-in-pair-with-swift-compiler-c951770a295b),其中测试用例执行前注册 stub body 的过程略显繁琐。
+如今作者更近一步,设计一套名为 **arguments spy** 的可插拔机制,尝试解决 Unit Tests 中动态修改 stub body 实现的困扰。对函数式编程感兴趣的同学不要错过。
+
+## 工具
+
+### [optionals](https://www.optionals.org)
+
+[@张嘉夫](https://weibo.com/2949394297):一个展示 Swift 可选型(optional)各种用法的网站。
+
+### [onesignal](https://onesignal.com/)
+
+[@邦Ben](http://weibo.com/linwenbang):国外的一个集合型的服务(移动推送,Web 推送,内购,邮件),老套路,基础服务免费,高级服务氪金。因此,如果有海外业务的同学和开发个人 APP 的同学不妨看看。
+
+## 代码
+
+### [Solutions to LeetCode by Swift]()
+
+[@zvving](https://twitter.com/zvving):算法已经成为各大公司面试必考项目。刷 LeetCode,无论是准备面试还是锻炼自己的算法和编程能力都很有帮助。网上 Swift 解法实现不多,这个版本相对完善,在代码规范、分类、时间(空间)复杂度梳理等方面可圈可点,值得参考。
+
+LeetCode 已入驻国内,中文名[『力扣』](https://leetcode-cn.com),可以一试。
+
+相关阅读:
+
+- [LeetCodeAnimation](https://github.com/MisterBooo/LeetCodeAnimation)
+
+### [Codextended](https://github.com/JohnSundell/Codextended)
+
+[@张嘉夫](https://weibo.com/2949394297):让 Swift 的 `Codable` API 更容易使用的一套 extensions,赋予其类型推断(type inference) 能力。Codextended 既不是 wrapper 也不是全新的框架,而是用一种极其轻量的方式来增强 `Codable`。`Codable` 很强大也很方便,但如果你需要一定程度的自定义的话(例如转换部分 decoded data,或为某些键提供默认值),`Codable` 的标准 API 就会变得*相当*啰嗦。它没有充分利用 Swift 强大的类型推断能力,导致产生了很多不必要的重复代码。Codextended 就旨在解决这个问题。
+
+### [Brooklyn](https://github.com/pedrommcarrasco/Brooklyn)
+
+[@享耳先森](https://github.com/iblacksun):受苹果 2018.10.30 发布会启发,设计并开源的一个屏保程序,非常漂亮,可在终端执行 `brew cask install brooklyn` 安装。
+
+### [SecureDefaults](https://github.com/vpeschenkov/SecureDefaults)
+
+[@小非86](https://weibo.com/xuyafei86):SecureDefaults 是对 UserDefaults 的轻量封装,使用 Swift 编写,并额外支持 AES-256 加密(密钥 256 位)。如果你想改善 App 持久化数据的安全性,又执意要使用 UserDefaults 的接口,SecureDefaults 提供了 Keychain 之外的另一种灵活选择 。
+
+## 书
+
+### 🌟 🐎 [Swift 5.0 中文版官方文档](https://swiftgg.gitbook.io/swift/swift-jiao-cheng)
+
+[@老峰](https://github.com/GesanTung):上个月 [Swift 5.0](https://mp.weixin.qq.com/s/-fLVdoTz3lT5Kxnea0-Avg) 正式发布了,这是 Swift 发展史一次重要的迭代。SwiftGG 翻译组最近也更新了 [Swift 5.0 中文版官方文档](https://swiftgg.gitbook.io/swift/swift-jiao-cheng),内容覆盖了 Swift 的基础语法结构以及各种高级特性,感兴趣的读者快来学习吧。
+
+## 音视频
+
+### 🌟 [ggtalk | 三组织揭秘:知识小集 x iOS 周报 x SwiftGG](https://talk.swift.gg/25)
+
+[@Parsifal](https://weibo.com/parsifalchang):知识小集 x iOS 周报 x SwiftGG 已经成为 iOS 圈子内为大家所熟知的三大社区组织。这一期 GGTalk 邀请到了我们三大组织的创始人 - 小集 [南峰子](https://weibo.com/touristdiary),SwiftGG 的 [梁杰](https://weibo.com/numbbbbb),以及我们周报团队的一代目 [卓同学](https://weibo.com/u/1926303682),一起谈谈我们这三大组织的故事。
+
+周报团队从 18 年 1 月份第 1 期到现在第 63 期,已经一年多了,期间除了春节等特殊节假日,没有断过更新。但周报其实在这一年多的时间里,也有遇到过不少小问题。我从去年 10 月份左右从老卓手上接过周报的运营工作,至今正好是半年。基于老卓打下的基础,还有周报 30 位编辑的一起努力,我们依旧在每期稳定地输出高质量内容,并尝试了掘金沸点、话题讨论和GitHub Release 等全新的方式,公众号在 [@Damonwong](https://weibo.com/damonone)、[@邦Ben](http://weibo.com/linwenbang) 和 [@红纸](https://github.com/nianran) 地运营下,也逐渐走上正轨。至此我也能说上一句不负所托。
+
+虽然正如梁杰所说的 “组织总有尽头”,但我还是希望周报在未来的日子里还会有三代目、四代目……感谢我们三大组织的所有参与者,以及我们所有的读者和听众。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#64-2019.04.22.md b/Reports/2019/#64-2019.04.22.md
new file mode 100644
index 000000000..ea36af4ce
--- /dev/null
+++ b/Reports/2019/#64-2019.04.22.md
@@ -0,0 +1,174 @@
+# 老司机 iOS 周报 #64 | 2019-04-22
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🐎 [Designing Swift APIs](https://www.swiftbysundell.com/posts/designing-swift-apis)
+[@zvving](https://twitter.com/zvving):如何写出可读性更高的代码?本文提供一些示例:参数标签可以帮助我们定义清晰易读的 API,嵌套类型能提供辅助的上下文关系,强类型为代码增添必要的仪式感,可扩展的 API 设计能同时满足便捷调用和丰富定制。
+
+作者认为:『人人都是 API 设计师,当我们在设计非私有属性或方法时,我们都在设计 API』,你认为呢?
+
+## 文章
+
+### 🌟 🐕 [Humble Asset Catalog](http://lingyuncxb.com/2019/04/14/HumbleAssetCatalog/) & [Assets Catalogs 与 I/O 优化](https://juejin.im/post/5cb74d786fb9a068773948fc)
+
+[@looping](https://github.com/looping):这两篇文章分别从各自的角度解释了在使用 Asset Catalogs 后,读取图片资源的速度变快的原因。
+
+通过仔细阅读这两篇文章,我们能够更清晰地了解到:
+- Asset Catalogs 和 car (Compiled Asset Catalogs) 文件的相关内容以及它们的作用
+- CoreUI 框架对图片资源加载过程的一些逻辑细节
+
+从而明白使用 Asset Catalogs 后,在加载资源上速度更快的原因:
+- Asset Catalogs 会对图片进行分类压缩存储,减少在目标机型上的资源文件大小,提高读取速度
+- 通过内存映射 (mmap),减少 I/O 操作,加速读取 car 文件内容
+- car 文件实际上是一种特殊的 BOM 文件,能够在加载图片时直接获取 rendition、renditionKey 以及 attribute 这些信息,不同于从文件夹 (bundle) 中读取,需要执行耗时的 `-[CUIMutableStrucetedThemeStore canGetRenditionWithKey:]` 操作来读取 rendition 和 renditionKey
+
+除了文章带给我们的结论,以及我们今后可以做的事情 (将常规资源文件都迁移到 xcassets 中) 之外,两位作者对问题的探寻和思考的方式也是非常值得学习借鉴的。
+
+### 🌟 🐢 [Let’s write Swift code to intercept SSL Pinning HTTPS Requests](https://medium.com/@kennethpoon/lets-write-swift-code-to-intercept-ssl-pinning-https-requests-12446303cc9d)
+
+[@含笑饮砒霜](http://chinafish.news):现在几乎绝大部分的 iOS App 都使用了 HTTPS 请求,这极大提升了我们使用的安全性,但也不意味着这就是绝对安全的。
+
+如果想检查 iOS 应用中的 HTTPS 请求,最常用的方法就是中间人(MITM)攻击,这种技术需要使用某台主机作为代理服务器,为客户端提供服务。为了保证攻击成功,客户端需要将代理服务器的证书安装到设备的全局信任存储区中。这样处理后,客户端就会将证书添加到白名单中,允许与代理服务器之间的 HTTPS 通信。
+
+如果想保护应用免受 MITM 攻击影响,可以使用 SSL 校验证书绑定,此时受信任服务器的证书副本会打包到 iOS 应用中,还有一些附加代码可以确保应用只与使用特定证书的服务器通信。当 SSL 证书绑定处于激活状态时,应用不会将任何请求发送到不受信任的服务器上。
+
+即便如此,也依然可以绕过 SSL 证书绑定。也就是在具体请求通过受保护的 HTTPS 通道发送之前,尝试拦截这个请求,这需要将代码植入到应用中,这里会用到代码注入的相关知识。
+
+如果想更细致的了解如何拦截 HTTPS 请求,本文不可错过,绝对深度好文。
+
+### 🌟 🐢 [干货 | 近万字长文详述携程大规模应用RN的工程化实践](https://mp.weixin.qq.com/s?__biz=MjM5MDI3MjA5MQ==&mid=2697268025&idx=1&sn=2d197c4cf7a338246abe0d3111e16002)
+
+[@Damonwong](https://github.com/Damonvvong): 如果谈起 React Native 在国内的业务落地,我可能第一个会想起的就是携程和赵辛贵老师。在上次听完赵兴贵老师分享的专题《携程无线持续交付平台工程实践》之后,意犹未尽,一直想更加深入了解一下携程在 RN 方面的技术探索。今天终于等到了携程的 RN 建设及他们设计的 CRN 的分享。这篇文章主要讲了下面几个事情:
+
+1. RN 在携程中的使用情况
+2. 携程基于 RN 优化的 CRN 框架的设计及使用
+3. CRN 做了哪些性能优化及实际效果比较
+4. 如何发布及运维
+
+比较可惜的是没有看到这套系统相比较于原生开发,对业务增长,开发效率有哪些优化,所以比较期待后续能有这方面的分享。
+
+最后,在文中提到将要开源的 CRN,也已经开源了,感兴趣的同学移步 [携程开源RN开发框架CRN](https://mp.weixin.qq.com/s/r6mB5Zq3jIf-K2YQi_AS8Q) 查看。
+
+### 🐎 [JSON as configuration files: please don’t ](https://arp242.net/weblog/json_as_configuration_files-_please_dont)
+
+[@olddonkey](https://github.com/olddonkey):这是一篇 2016 年的老文章,但是其中的观点直到今天依然具有参考价值。
+
+很多公司,很多团队使用 JSON 文件作为 App 的配置文件,不论是从远程下发,还是本地加载。
+
+但是,在实际的项目中,用 JSON 来作为配置文件解决方案并不是个完美的方案,它存在的很多问题,这些问题会在实际中逐渐暴露。
+
+文章作者围绕这他心中的几个缺点展开论述:
+
+1. 注释容易缺失。
+2. 可读性差。
+3. 过分严格的格式。
+4. 缺乏可编程性。
+
+本文虽本意是针对 Web 开发提出观点,但是对 Mobile 开发也一样适用。
+
+### 🐎 [Swift 5 Frozen enums](https://useyourloaf.com/blog/swift-5-frozen-enums)
+
+[@没故事的卓同学](https://weibo.com/1926303682/profile):在 Swift 5.0 中编译器针对使用 C style 枚举增加了一类提醒(即使 `switch` 已经覆盖了所有的 `case` 依然会有这样的警告):
+
+> Switch covers known cases, but 'XXXXX' may have additional unknown values,Handle unknown values using "@unknown default"
+
+提醒用户虽然现在你已经覆盖了所有的 `case`,但是未来这个枚举值有可能会增加新的值,我建议你还是处理一下这样的情况。
+
+不过有的枚举值作者可以保证未来不会新增值,针对这个场景苹果增加了 `NS_CLOSED_ENUM`。如果枚举用 `NS_CLOSED_ENUM` 声明而不是 `NS_ENUM`,Swift 使用这个枚举编译器就不会产生建议使用 `@unknown default` 的警告。
+
+### 🐎 [Asynchronous completion handlers with Result type](https://mecid.github.io/2019/04/17/asynchronous-completion-handlers-with-result-type/)
+
+[@邦Ben](https://github.com/linwenbang):Swift 5 中的标准库中加入了 Result Enum (success / failure),该文作者通过一个 URLSession 的请求例子,演示了使用 Result Enum 改造过程。使用 Enum 会让你的程序看上去更为简洁以及意思明确,详细请看文章内容。
+
+### 🐕 [Improve your iOS team’s productivity by building features as frameworks](https://medium.com/flawless-app-stories/improve-your-ios-teams-productivity-by-building-features-as-frameworks-9d2a64cbcab5)
+
+[@老峰](https://github.com/GesanTung):如果你使用 Swift 开发过大一点的项目,那么你可能会有这样的感受,明明只是修改了一行代码,但却把整个 App 重新编译了一次,花费了很多时间。
+
+本文作者针对这一痛点提出一种优化方案,通过把功能独立的业务代码改为 Framework 动态库,这样就不会每次重新编译整个 Project,从而减少编译时间,文中结合[示例](https://github.com/akfreas/SimpleCounter)代码给出了详细的优化过程。
+
+尽管作者这一方案可以缩短编译时间,但如果 Framework 粒度太小,太多动态库反而会引起其他问题如增加 APP 启动时间、App 安装包变大;粒度太大,每次修改代码又会涉及多个 Framework ,编译时间优化又不会很明显,感兴趣的读者可以借鉴这一思路,做些有益的尝试。
+
+### 🐕 [How to deploy a Swift backend on Amazon AWS](https://medium.com/@gianpispi/how-to-deploy-a-swift-backend-on-amazon-aws-ea9213518c43)
+
+[@小非86](https://weibo.com/xuyafei86):目前 Swift 的后端框架主要有 Perfect、Vapor、Kitura 和 Zewo 等。[往期周报](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2329-2018.07.30.md) 推荐过使用 [Perfect](http://blog.yuusann.com/posts/article/18014) 开发后端的经验。本期推荐大家这篇使用 Kitura 开发后端的另一种尝试。
+
+### 🐕 [Disjoint-set union in C++ and Swift](https://medium.com/flawless-app-stories/disjoint-set-union-data-structure-in-c-and-swift-a52703b01fcb)
+
+本文使用 C++ 与 Swift 实现了简单的并查集。大家可以借此对比同一个数据架构在不同语言的实现。
+
+## 工具
+
+### [Accio](https://github.com/JamitLabs/Accio)
+
+Accio 是一个基于 SwiftPM 和 Carthage 的包管理工具,其有以下特点:
+
+- 依赖预编译,也就是二进制化。
+- 自动集成到项目文件里,不像 Carthage 那样需要手动集成,这也解决了 Carthage 项目中最麻烦的部分。
+- 基于 SwiftPM 的依赖管理系统,只要第三方库使用 Package.swift 声明即可,不需要去跟 xcodeproj 和 Cartfile 打交道。
+- 基于 SwiftPM 的缓存管理,可以减少不必要的重复的下载和编译。
+
+## 代码
+
+### [Markdown Playgrounds for Swift](https://github.com/objcio/markdown-playgrounds)
+
+[@莲叔](https://weibo.com/aaaron7/):Markdown Playgrounds for Swift 是 objc.io 基于 Swift5 开发的一款 markdown 编辑器,最大的特性就是在你 markdown 中的 Swift 代码可以被执行。对比传统 markdown 编辑器,核心就是实现了 Swift 语法的高亮以及将 Swift 代码提取出来后用 Swift REPL 程序去执行并拿到返回的结果(Swift REPL 程序就是终端中的 Swift 命令)。整个工具是开源的,并且 objc.io 有一整套配套的教学视频(第一章是免费的)一步步的教你如何写一个类似的工具出来,从工具的属性可以看出从中可以学到各种高级的字符串处理(如符号高亮、代码提取等),算是非常不错的 Swift 学习材料。
+
+## 音视频
+
+### 🌟 [深入了解 Flutter 的高性能图形渲染](https://mp.weixin.qq.com/s/RNhdYtoQ8RQcjIXJReGZWA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):本视频为 Google Flutter 团队的软件工程师 Yuqian Li 在 2018 谷歌开发者大会做的演讲,内容包含 Flutter 介绍,Flutter 的工作原理(对比原生开发和其他跨平台框架),[Skia](https://skia.org/index_zh) 介绍,分析常见的性能瓶颈等,通过解决 Flutter 样例 App - Flutter Gallery 的性能问题([Issue #13736](https://github.com/flutter/flutter/issues/13736)),与大家分享如何通过 Flutter 工具定位、调试和解决性能问题。
+
+视频主要讨论点:
+
+- Flutter 为何能够拥有媲美原生的高性能图形渲染
+- 如何通过 Skia 调试来分析 Flitter 应用
+- 关于 saveLayer 和 clipPath 的注意点
+- 使用 flutter screenshot 截取 skp 来单步调试绘图指令
+
+### [ggtalk | 向架构进发](https://talk.swift.gg/26)
+
+[@J_Knight_](https://github.com/knightsj):本期 ggtalk 邀请的嘉宾是 Casa Taloyum,他所写的 iOS 架构系列文章在社区非常受欢迎。本期主要围绕“架构”这一主题,主要讨论了以下几点:
+
+- 做架构到底是在做什么
+- 架构师和工程价值观
+- 架构师和高级工程师的区别在哪里
+- 如何定义真正的问题
+- 如何看待新技术和旧技术
+
+除此之外,Casa 还分享了对跨平台技术以及区块链的一些看法。
+
+推荐阅读:
+
+- [《iOS 应用架构谈》](https://casatwy.com/iosying-yong-jia-gou-tan-kai-pian.html)
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#65-2019.04.29.md b/Reports/2019/#65-2019.04.29.md
new file mode 100644
index 000000000..cdc602b6c
--- /dev/null
+++ b/Reports/2019/#65-2019.04.29.md
@@ -0,0 +1,149 @@
+# 老司机 iOS 周报 #65 | 2019-04-29
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [『基于多重替换方式的 iOS 代码混淆方案』- 勘误](https://www.v2ex.com/t/557888#reply88)
+
+在 65 期,我们收录了『基于多重替换方式的 iOS 代码混淆方案』一文,后经读者反馈,我们发现这篇文章的内容存在严重的抄袭迹象。文中涉及到的混淆方案抄袭自 [@kaich](https://github.com/kaich) 的 [codeobscure](https://github.com/kaich/codeobscure)。目前该文章的在知乎和掘金上已经被删除,周报也在第一时间删掉了有争议的推荐内容。对此次事件,我们对 [@kaich](https://github.com/kaich) 和广大读者表示抱歉,同时也感谢各位读者的监督和反馈。
+
+另外,在收到反馈之后,我们小挖了一下那篇抄袭文的作者,发现此人是惯犯,洗稿专业户。他的 GitHub([RobinChao](https://github.com/RobinChao))和博客([Technical.io](https://robinchao.github.io/)),真的是仿品聚集地。
+
+
+### [WWDC 2019 for developers: Siri, Marzipan and AR improvements, more](https://9to5mac.com/2019/04/22/wwdc-developers-siri-marzipan/)
+
+距离今年的 WWDC 已经只有将近一个月的时间了,众所周知,WWDC 向来能带给行业和开发者带来全新的围绕用户体验新技术,本篇文章给我们介绍了本次 WWDC 会发布的新的 API 以及特性,主要有:
+
+1. 新的 Siri intents
+2. Marzipan 的优化(Marzipan 就是让 macOS App 也能用上 UIKit 的技术)
+3. Swift-only 的 AR 框架
+4. 震动引擎,NFC 在以前的基础上提供了更多的功能
+5. CoreML 支持动态训练以及音频的分析
+
+
+## 新手推荐
+
+### [How to make Auto Layout more convenient in iOS](https://medium.com/flawless-app-stories/how-to-make-auto-layout-more-convenient-in-ios-df3b42fed37f)
+
+[@邦Ben](https://weibo.com/linwenbang):该文从 Frame 布局,到 Autoresizing 讲到了 AutoLayout,并且介绍了如何简单的进行封装 AutoLayout,以提高易用性。毕竟众所周知,原生的 AutoLayout 异常难用,在 OC 下,Masonry 的出现简直是拯救了世界。在 Swift 下,各种布局系统百花齐放。同时眼光不妨放到 React Native 和 Flutter 上,声明式布局非常值得学习。
+
+## 文章
+
+### 🐕 [RxSwift & MVVM - How to use RxTests to test your ViewModel](https://benoitpasquier.com/how-to-use-rxtests-to-test-mvvm/)
+
+[@Damonwong](https://github.com/Damonvvong):之前我问过好多人这样一个问题,你觉得 Rx 框架到底解决了一个什么样的问题?虽然答案都不太一样,但是引入 Rx 框架,便于封装 ViewModel,然后编写单元测试提高应用稳定性是大部分人比较认可的一点。
+
+所以推荐大家阅读一下作者写了三篇关于 RxSwift & MVVM 的文章:
+
+- 第一篇是 [How to integrate RxSwift in your MVVM architecture](https://benoitpasquier.com/integrate-rxswift-in-mvvm/):主要介绍了如何使用 RxSwift 编写 MVVM 结构的代码
+- 第二篇是 [RxSwift & MVVM - An alternative structure for your ViewModel](https://benoitpasquier.com/rxswift-mvvm-alternative-structure-for-viewmodel/):主要描述了一个 ViewModel 最基本的结构要怎么设计,我个人特别喜欢他在文中描述的 Intput 和 Output 的设计。这个设计也是为做单元测试做了一个很好的铺垫。
+- 最后一是 [RxSwift & MVVM - How to use RxTests to test your ViewModel](https://benoitpasquier.com/how-to-use-rxtests-to-test-mvvm/):讲的是如何利用前面的 VM 设计 结合 RxTest 编写单元测试。
+
+### 🐎 [Conditional Compilation Part 1](https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-1/) [Part 2](https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-2/) [Part 3](https://davedelong.com/blog/2019/04/09/conditional-compilation-part-3/)
+
+[@四娘](kemchenj.github.io):之前我们在 [29 期周报](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2329-2018.07.30.md#-conditional-compilation-in-swift-part-1)里介绍过这篇文章的第一篇:
+
+> 本文讲述了 Swift 中方的条件编译。当然首先是传统的方法 arch(),作者对各个参数都做了详细的介绍。不过随着 Swift 4.1 的到来,你更应该了解一下方便好用的 targetEnvironment()(SE-0190)。其次是使用配置文件(.xcconfig),这个方式其实被 CocoaPods 大量使用。作者也用示例做出了详细的介绍,同学们不妨也在自己的工程中试一试。
+
+后面陆续写了 Part 2 和 Part 3,主要是介绍了跨平台代码库编译选项的一些控制方式,对这方面有疑虑的同学可以看一看
+
+### 🐕 [Flutter 实时视频渲染](https://zhuanlan.zhihu.com/p/62821195)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 如火如荼的火了一段时间了,但鲜少有关于音视频方面的文章,本文是声网 Agora 的高级架构师张乾泽在 RTC Dev Meetup 上的分享,主要介绍 Agora 在 Flutter 实时音视频开发方面的实践经验,整个分享分三部分:
+
+- 基于 Texture Widget 实现思路分析
+- 基于 PlatformView 实现思路分析
+- 两种方案的性能对比
+
+### 🐎 [对职业发展的一些想法](https://limboy.me/essay/2019/04/15/career.html)
+
+职业发展是每一个职场同学都会去思考的很重要的问题,我们也常常说有时候选择比努力更重要,除了个别的运气成分外,我们能过左右的就是如何去做选择。本文是 limboy 对职业发展的一些看法,从**稀缺度**和**剩余市场空间**这样两个角度去谈,结合生动的坐标图,让人一看就很明了。
+
+### 🐕 [How to run a single test in Xcode](http://www.mokacoding.com/blog/running-one-test-in-xcode/)
+
+[@老峰](https://github.com/GesanTung):本文作者归纳总结了在 Xcode 中运行单元测试的一些小 tips:
+
+- 通过 gutter (左边列)
+- 通过 shortcut (快捷键 ^ ⌥ ⌘ U)
+- 通过 scheme
+- 通过 terminal
+- 通过开源测试库如:[Quick](https://github.com/Quick/Quick)
+
+### 🐕 [iOS 中的 Promise](https://juejin.im/post/5cb6d1215188253fdd641c15)
+
+[@四娘](kemchenj.github.io):当你需要连续地执行多个异步过程时,总会无可避免的出现地狱回调,Promise 是一个不错的解决方案,这篇文章前半部分主要讲了 Promise 具体的实现,后面介绍了一些实用的 API,感兴趣的朋友可以看一下。
+
+### 🐎 [Preventing Infinite Loops in Swift Property Observers](https://theswiftness.com/preventing-infinite-loops-in-swift-property-observers/)
+
+[@张嘉夫](https://github.com/josephchang10):Swift 的[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262) (即 `willSet` 和 `didSet` hook 函数)非常实用,可以用于验证、通知和调用 log 方法等等,适用于结构体、类和枚举。但在使用强大的属性观察器时,要避免搬起石头砸了自己的脚,这篇文章会为你介绍如何避免在 Swift 属性观察器中创建无限循环。
+
+### 🐎 [如何画出一张合格的技术架构图?](https://mp.weixin.qq.com/s/1hPZacqJuUeElyHiMxa9rw)
+
+画架构图是架构师的第一门课,本文介绍了架构图的各种画法和具体案例,希望让大家在架构图方面的理念和经验得到提升
+
+架构图分类
+1. 场景视图:一般就是我们理解的用例图
+2. 逻辑视图:一般是组件图和类图
+3. 物理视图:一般是部署图
+4. 处理流程视图:一般是时序图和流程图
+5. 开发视图:一般是包图
+
+好的架构图:好的架构图是不需要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,能够与代码相呼应
+
+最后推荐 [C4官网](https://c4model.com/),有各种画图的模板可以参考
+
+## 工具
+
+### [MTHawkeye](https://github.com/meitu/MTHawkeye)
+
+[@looping](https://github.com/looping):MTHawkeye 是美图 iOS 团队开源的调试和性能优化辅助工具集,旨在帮助 iOS 开发者提升开发效率、优化性能体验。目前已经包含对内存、CPU、电量、网络等的使用监控。由于该工具模块采用了可扩展的插件式设计,所以我们也可以根据自己的需求定制合适的开发调试插件。详细介绍可以参考这篇文章 [MTHawkeye:美图开源的iOS调试辅助、性能优化工具集](https://mp.weixin.qq.com/s/J0tgozOFpm7bBrH8RxOp5Q)。
+
+## 代码
+
+### [Swiftshield](https://github.com/rockbruno/swiftshield)
+
+[@oldonkey](https://github.com/olddonkey):这是一套代码混淆工具,作用是加密工程的函数和类名,来免疫一些逆向工程。加密的原理很简单,就是把所有函数和类名都替换成一段新的字符串。此工具可以加密,也可以解密,以方便对 Log 进行 Debug。
+
+## 开源库
+
+### [IkigaJSON](https://github.com/Ikiga/IkigaJSON)
+
+IkigaJSON 是一个非常快的 JSON 解析器,它的解析速度大概是是 Foundation 中对应组件的 4 倍。它也提供了 SwiftNIO 的支持(同时也依赖 SwiftNIO),你可以直接从 `ByteBuffer` 对象初始化需要的 JSON 。
+
+## 音视频
+
+### [ggtalk | 聊聊我们的编程启蒙经历](https://talk.swift.gg/27)
+
+[@J_Knight_](https://github.com/knightsj):本期 ggtalk 邀请的嘉宾是李亮老师和莲叔。围绕本期的主题,二位嘉宾和主持人梁杰都分享了各自的编程启蒙经历。
+
+此外,还分享了对“中年危机”的看法以及关于小孩应该如何入门编程的讨论。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#66-2019.05.06.md b/Reports/2019/#66-2019.05.06.md
new file mode 100644
index 000000000..4eba562cd
--- /dev/null
+++ b/Reports/2019/#66-2019.05.06.md
@@ -0,0 +1,109 @@
+# 老司机 iOS 周报 #66 | 2019-05-06
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### [Flutter 豆瓣客户端](https://github.com/kaina404/FlutterDouBan)
+
+[@邦Ben](https://weibo.com/linwenbang):该开源库,对豆瓣客户端有一定的还原度,不过未实现部分也挺多,毕竟仅仅只是学习用途,暂时里面并没有用到更为复杂的 Rx 或者 Redux ,因此十分适合新手先上路。在学习 Flutter 的同学可以一看。
+
+PS:项目需要还原一下 Podfile 为初始状态方可运行( BUG )
+
+## 文章
+
+### 🌟 🐕 [移动开发这十年](https://mp.weixin.qq.com/s/vcbHMtaJEkZhSgiRBST1YA)
+[@莲叔](https://weibo.com/aaaron7/): 移动开发从诞生之日起,到现在已经过了十年时间,这篇文章是 InfoQ 邀请美团的藏成威老师回顾了移动开发技术的十年演变。笔者作为移动开发年限算比较久的老兵,有幸经历了其中大部分的浪潮。其中绝大多数技术升级都是围绕跨平台、动态性,归根到底技术体系的升级是围绕业务形态来决定的。文章比较全面的剖析了从 H5 hybrid,到 RN/Weex, 到 Flutter/小程序等不同阶段的跨平台技术。文章本身没有太多技术点,但非常适合拿来作为思考技术和业务是如何相互影响的素材,在阅读文章的时候要多问 Why,相信会有不少的收获。
+
+### 🌟 🐕 🚧 [Reducing FOOMs in the Facebook iOS app](https://code.fb.com/ios/reducing-fooms-in-the-facebook-ios-app/)
+
+[@zvving](https://twitter.com/zvving):Facebook 2015 年的一篇经典文章,提出优化 OOM 问题的一些思路:
+
+- 通过列举所有 App 被终止的已知路径区分是 FOOM 还是 BOOM
+- 分析内存使用状况,从 UIWebView 迁移至 WKWebView,降低内存占用
+- 避免内存重复申请与释放,减少多达 30% OOM Crashes
+- 完善基础设施:跟踪 App 中每个类的实例计数和内存占用
+
+相关阅读:[iOS微信内存监控](https://mp.weixin.qq.com/s/r0Q7um7P1p2gIb0aHldyNw)
+
+### 🌟 🐕 [iOS App 安全加固方案调研](https://mp.weixin.qq.com/s?__biz=MzI2NzI4MTEwNA==&mid=2247485642&idx=1&sn=dce8e7581d94c8d8d2b79366f6223161&chksm=ea807f75ddf7f663daf6776b0f5a98aeea2e735e08c3a5268fd00f45b5a893d0e8dbac03b0f8&mpshare=1&scene=23&srcid=%23rd)
+
+[@红纸](https://github.com/nianran):iOS 系统向来以安全著称,但是在越狱面前,我们的 App 接近于裸奔的状态。在本文中,作者整理了如下内容:
+
+1. 现有市面上已有的加固方案,以图片的方式,展示了各家公司的核心功能点。
+2. 对现有的加固方案,进行了一次规整,总体方案梳理
+ 1. 数据保护:细分中有网络数据、IPA 资源数据、沙盒数据、Keychain 数据
+ 2. 混淆保护:细分中有符号混淆、字符串混淆、指令混淆
+ 3. 反调试保护:细分方案有 ptrace 和 sysctl 两种防护策略,(有兴趣可以参考 [关于反调试&反反调试那些事](http://bbs.iosre.com/t/topic/8179))
+ 4. 异常检测:动态监控 App 的异常信息,例如被注入、篡改代码、重签名等攻击行为
+
+世界上没有绝对的安全可言,想要了解更多关于安全方面的知识,推荐沙老师的书《iOS应用逆向工程》,以及 [念茜的安全攻防系列](https://blog.csdn.net/yiyaaixuexi)。
+
+### 🌟 🐕 🚧 [为什么需要 Reactive Programming?](https://medium.com/@jasonyuh/%E5%85%B3%E4%BA%8Ereactive-programming-24a2cf28fffa)
+
+[@Jason](https://github.com/yxztj):相信有不少同学都或多或少尝试过 ReactiveCocoa 或者 RxSwift,享受到了链式调用的快乐,但是对于 Reactive 思想的本质,可能不一定每个人都有深入的思考过。本文抛开 Rx 库本身,也没有再重复介绍如何使用 Rx,而是从一些日常开发过程中的问题出发,探讨 Reactive 思想的由来,它所解决的关于数据流、事件传播和观察者模式的一系列问题,以及作者在几年的使用中所领悟的一些更深层次的思考。
+
+### 🐕 [Architecturing an app with functional reactive programming](https://www.welcometothejungle.co/fr/articles/functional-reactive-programming-architecture)
+
+[@anotheren](https://github.com/anotheren):本文从常见的“回调地狱出发”,讲述了为什么应该使用响应式框架来进行编程。并以 ReactiveX 框架为例,同步展示了在 Swift/Kotlin 中这类框架的思想和应用,推荐阅读。
+
+### 🚧 🐕 [Optional, throws, Result, and async/await](https://nshipster.com/optional-throws-result-async-await/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):在 Swift 5 之前,我们通过 optional 和 throws 来处理错误。在 Swift 5 中,虽然没有我们期盼的 async/await 特性,但在标准库中增加了 Result 类型。本文对这些 Swift 错误处理的方式进行对比,让你更好的了解 Swift 错误处理的进化过程。
+
+## 工具
+
+### [Xcode10 New Build System And CocoaPods](http://yuqiangcoder.com/2018/11/13/Xcode10-new-build-system-and-CocoaPods.html)
+
+[@享耳先森](https://github.com/iblacksun):Xcode 10 发布之后,你可能发现修改了 CocoaPods 依赖库的源码之后立即编译并不生效,必须 clean 整个项目重新编译,这其实是 Xcode 10 默认采用 `New Build System` 导致的,本文介绍了两种解决方案。
+
+### [Marzipanify](https://github.com/steventroughtonsmith/marzipanify)
+
+[@老峰](https://github.com/GesanTung):在 WWDC 2018 苹果分享了名为 Sneak Peak 的工具可以将 iOS APP 移植到 Mac 中,并宣布 2019 对第三方开发者开放,Marzipanify 是 [Steven Troughton-Smith](https://www.highcaffeinecontent.com/blog/20190301-Bringing-iOS-Apps-to-macOS-Using-Marzipanify) 自己开发的一个小工具让开发者提前体验 iOS APP to Mac APP,感兴趣的读者快来尝试吧。
+
+## 代码
+
+### [手把手教你在 Flutter 项目优雅的使用 ORM 数据库](https://juejin.im/post/5c45c72d6fb9a049d81c2b4c)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 现在开发上最大的槽点可能就是数据库使用了,Flutter 现在只提供了 sqllite 插件,手写 sql 代码,建表、建索引、transation、db 线程控制等等繁琐的事情必然接踵而至,这种数据库使用方式是最低效的了,又倒退回去裸写 sql,这对大部分团队都是重大的成本。
+
+本文将详细介绍一种在 Flutter 项目中优雅的使用 ORM 数据库的方法,文中使用的 ORM 框架是包含在一个 Flutter 插件 [flutter_luakit_plugin](https://pub.dartlang.org/packages/flutter_luakit_plugin) (如何使用可参考[介绍文章](https://juejin.im/post/5c34597651882523d3200c98))中的其中一个功能,本文只详细介绍这套 ORM 框架的使用和实现原理。并且给出了一个详细的 [demo](https://github.com/williamwen1986/flutter_luakit_demo) 。
+
+## 开源库
+
+### [NSFWDetector](https://github.com/lovoo/NSFWDetector?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more)
+
+[@张嘉夫](https://github.com/josephchang10):CoreML NSFW(色情)内容检测器。NSFWDetector 是一个小型(17 kB)CoreML 模型,由 CreateML 训练,用于检测图片中的裸体。
+
+### [InAppViewDebugger](https://github.com/indragiek/InAppViewDebugger)
+
+[@红纸](https://github.com/nianran):UIView Debugger,类似于 Reveal 和 Xcode 中集成的组件,其比较方便的是能够在 APP 内就可以直观的去查看,但目前它只是处于 1.0 版本,功能仅限于查看视图层级,期待其能拥有更加完善的功能。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#67-2019.05.13.md b/Reports/2019/#67-2019.05.13.md
new file mode 100644
index 000000000..077881252
--- /dev/null
+++ b/Reports/2019/#67-2019.05.13.md
@@ -0,0 +1,154 @@
+# 老司机 iOS 周报 #67 | 2019-05-13
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+### [19 年老司机周报定制 T 恤上架啦](https://item.taobao.com/item.htm?id=592379266013)
+
+只订做一批,错过不再有。
+
+### 🚧 [Google I/O for Flutter](https://developers.googleblog.com/2019/05/Flutter-io19.html)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):伴随着 Google I/O 大会召开,Flutter 这几天又刷屏一波,一个好消息和一个坏消息:
+
+- [好消息 | 全平台支持](https://developers.googleblog.com/2019/05/Flutter-io19.html): Flutter 1.5 稳定版发布,并为我们带来了 Flutter for web - Hummingbird 以及可供嵌入式设备使用的 Flutter for Embedded。自此,也正如官方宣称的 Flutter 已经支持全平台。
+- [坏消息 | 暂时无热更新](https://github.com/flutter/flutter/issues/14330): Flutter 官方开发团队宣布暂时不会开发热更新(Code Push)功能,原因如下:
+ - Code Push 在 Android 和 iOS 平台上各有不同的限制
+ - 出于安全方面的考虑,可能会被滥用
+
+### 🐕 [MongoDB 宣布收购 Realm]()
+
+[@xiaofei86](https://weibo.com/xuyafei86):MangoDB 宣布3900万美元的价格收购 Realm ,通过收购弥补了 MongoDB Mobile 在移动端的不足。 Realm 作为一款成熟的移动端数据库框架有着数十万的用户,并且在github上有着1w + 的star。
+
+## 文章
+
+### 🐕 [泛型语法改进第一弹 —— Opaque Result Types](https://kemchenj.github.io/2019-05-05/)
+
+[@享耳先森](https://github.com/iblacksun):Swift 5.1 将包含针对范型的一个重要改进 —— `Opaque Result Types`:简单来讲,用 `some` 修饰的方法返回值或属性,其具体类型在编译时就能确定,并且是由被调用方去决定。
+
+### 🐕 [What should I learn if I want to contribute to the Swift compiler?](https://forums.swift.org/t/what-should-i-learn-if-i-want-to-contribute-to-the-swift-compiler/18144)
+
+[@莲叔](https://weibo.com/aaaron7/):Compiler 相关的工作一直处于鄙视链的顶端,这篇帖子的楼主在 2018 年 11 月的时候给自己定了一个看起来有点梦幻的目标:2019 年末能够参与到 Swift compiler 的开源工作中去(即便是楼主自己也认为很梦幻)。但有爱的 Swift 社区告诉楼主这并不梦幻,可以实现。首先 codafi 提出事实上在 Swift 编译器源码中的 C++ 并不是 Raw C++,而更多是 LLVM C++(LLVM C++并不是一门语言,而是 LLVM 工程规定的一系列 API和规范),是复杂,但没有那么复杂, 所以从 LLVM 代码规范是最佳的入门材料,不用被 C++ 吓到。然后 Aljandro 甚至给出了编译器各个环节如 Lexer、Parser、Sema 到 SIL,LLVM IR 分别对应在哪些编译器的源文件中实现,简直不要太良心。除此之外,还分享了自己很多在 compiler 相关的大型项目中如何挖到合适的点切入的经验。
+
+整个帖子有不少优质的回复,都是既具备专业性,又照顾了对 compiler 技术陌生的新人,不容错过。
+
+### 🐕 [大侦探福老师——幽灵Crash谜踪案](https://mp.weixin.qq.com/s/lmqeS6f3DSNsOJGywGsSsg)
+
+[@邦Ben](https://weibo.com/linwenbang):该文闲鱼技术小编描述了出现 BUG 到分析 BUG,到如何最终艰难地找到 BUG 的过程,非常值得一看。最后也得出了结论:Flutter 在用户启动辅助功能(如阅读屏幕)的情况下会出现 Crash(新版本已经 fix,同学们都升级一下。)例外这里面还提及到两个有意思的点,线上 Zombie 野指针监控和 UI 自动化重现。另外有一个很重要的点:保持和用户的良好沟通,最后直接上门现场 DEBUG,没准还可以帮妹子顺手修修电脑 >_<。
+
+参考链接:
+- [Let's Build NSZombie](https://www.mikeash.com/pyblog/friday-qa-2014-11-07-lets-build-nszombie.html)
+- [The Inner Life of Zombies](https://www.mikeash.com/pyblog/friday-qa-2011-05-20-the-inner-life-of-zombies.html)
+
+### 🐕 [LLVM 编译器中的内置 (built-in) 函数](https://juejin.im/post/5cce3955e51d453b440236ce)
+
+[@looping](https://github.com/looping):以 `__builtin_` 开头的函数声明或者调用其实是一些编译器内置的函数或者编译优化处理的开关,其作用类似于宏,只不过这些内置函数并不是真实的源代码,而是一段指令块,起到编译时的内联功能。本文就介绍了八个特殊的内置函数及其用法,熟练使用这些内置函数可以提升我们程序的运行性能,也可以扩展一些编程的模式技巧。
+
+### 🐕 [What's new in RxSwift 5](https://medium.com/@freak4pc/whats-new-in-rxswift-5-f7a5c8ee48e7)
+
+[@olddonkey](https://github.com/olddonkey):RxSwift 5 终于和大家见面了。RxSwift 5 带来了一些不算小的变化,比如有拆分 Relay 出 RxCocoa,成为独立框架,转用 DispatchTimeInterval 以对更小时间间隔的更好支持,舍弃 Variable,新增 do(afterNext:) 以及允许绑定多个观察者等变化。对于现有的 RxSwift 开发者来说,不算是根本上的变化,但是需要在一些使用习惯和语法上进行相对应的改变。
+
+如果对英文版不是很有信心的话,也可以看看小集团队发布的[中文翻译版](https://mp.weixin.qq.com/s/ag7z-w3J52sTxhjzibvnww)。
+
+### 🐢 [深入iOS系统底层之映像文件操作 API 介绍](https://juejin.im/post/5c6a976ae51d451eb711a90f)
+
+[含笑饮砒霜](https://weibo.com/chinafishnews/):所谓的映像可以理解为将一个程序文件的内容加载到进程虚拟内存中的内容,也就是说进程的映像就是程序磁盘文件在内存中的一个副本。程序文件和映像之间的关系就如程序和进程之间的关系是一样的。那关于进程映像操作的 API 有哪些呢:
+
+- 获取当前进程中加载的映像的数量
+- 获取某个映像的 Mach-O 头部信息结构体指针
+- 获取进程中某个映像的名称
+- 获取某个库链接时和运行时的版本号
+- 注册当前线程结束时的回调函数
+- ...
+
+相关操作的 API 有很多,在 `` 都有声明。通过相关 API 的使用,可以检测程序中某个类的某个方法是否被非法 HOOK 了。可执行程序中定义的类的实例方法的实现地址总是在可执行程序映像的地址区间范围内,即使是这个方法被可执行程序中的其他方法 HOOK 了,这个 HOOK 的方法地址仍然是在可执行程序的映像地址区间范围内,我们仍然认为这是一个合法的 HOOK 。如果这个实例方法被恶意攻击者通过动态库注入并以方法交换的形式来 HOOK 原有方法的实现时,因为HOOK 的方法地址是在恶意注入的动态库映像的地址区间范围内,所以我们就可以通过检测这个类的实例方法的实现地址是否在可执行程序的映像的地址区间范围内来判断这个方法是否被恶意 HOOK 了。
+
+### 🐕 [百度App iOS工程化实践: EasyBox破冰之旅](https://mp.weixin.qq.com/s/Oa52PvsHw8wS-OvYb3ArZg)
+
+[@xiaofei86](https://weibo.com/xuyafei86):EasyBox 是手百开发的一套包管理工具集。致力于为超级 App 量身打造一套现代、高效、优雅的研发工具链。EasyBox 主体由工程组装器(Installer)、多仓库管理工具(MGit)、二进制管理工具(LFS)三部分构成,分别负责工作区的构建(组件依赖分析、工程的生成与组合)、源码仓库的管理以及二进制的管理。本文对 EasyBox 的设计进行了讲解,从中可以学到一些软件架构的思想和工程管理的经验。但并没有开放源代码。
+
+### 🐢 [Sharing code between iOS and Android using J2ObjC](https://medium.com/ubique-innovation/sharing-code-between-ios-and-android-using-j2objc-ecd6c4c247)
+
+[@tom](https://xiaozhuanlan.com/u/6682065345):这是关于跨平台开发的系列文章,之前作者还有讨论[采用 C++ 来进行 iOS 和 Android 的跨平台开发](https://medium.com/ubique-innovation/sharing-code-between-ios-and-android-using-c-d5f6e361aa98?sk=308b1a500b536b94437282955ac56d2b)。关于跨平台的好处就不多说了,这篇文章主要介绍了使用 [J2ObjC](https://developers.google.com/j2objc/) 来进行跨平台开发。J2ObjC 是一个代码转换器,能够直接将 Java 代码翻译成 Objective-C 代码,从而达到跨平台开发的目的。注意的是,正如大部分的跨平台开发框架一样,一般跨平台代码只适合工作在 Model 层,在 UI 层的代码几乎无法做到一份代码共享多个平台(自带虚拟机或者语言翻译机的除外,如 RN、Flutter 等)。最后总结一下 J2ObjC 的优缺点
+
+优点
+1. 代码共享
+2. 可以只用 Java 进行开发(Java 开发人员容易招,iOS 同学嘛)
+3. 可以在 iOS 工程中调试 Java 代码
+
+缺点
+1. 代码翻译总是会出错的
+2. 如果需要 Swift 混编的话是个灾难
+3. 翻译出来代码不是最优形式,会增加包体积大小
+4. 翻译的范围有限制,仅限用可支持的 JRE 类
+5. 如果依赖了一些第三方库,而又与 J2ObjC 不兼容的话也是一个大问题
+
+### 🐢 [100-Days-Of-iOS-DataStructure-Algorithm](https://github.com/renmoqiqi/100-Days-Of-iOS-DataStructure-Algorithm)
+
+[@kyo](https://github.com/KyoLi):算法应该是面试中大多数公司都会考察的点,虽然在日常的业务开发中可能并不常使用,但如果做一些深入的比较复杂的项目,算法就是必不可少了。可以说,如果在技术上想更深入的了解,算法和数据结构就是必须要熟悉的。在众多相关的文章中,以 C++,JAVA 等语言进行讲解的很多,很少以 OC 来讲的文章,而这个系列文章就采用 OC 为主语言,这对其他语言不太了解的同学来讲是个福音。
+
+### 🐕 [搞事情之 Vapor 初探](https://juejin.im/post/5ccc7d3fe51d453afc760317)
+
+[@老峰](https://github.com/GesanTung):从 Swift 开源并支持 Linux 运行之后,Swift Server Side 趋热,先后出现了 Perfect、Vapor、Kitura 和 Zewo 几个框架,其中 Vapor 目前在 Github star 数最多。
+
+本文是作者对 Vapor 的探索实践,分享了在 Vapor 中 MySQL 的基础使用;在 Vapor 中的用户鉴权;以及自己实践中的心得体会。
+
+相关阅读:
+[Swift HTTP Server 开发体验](http://posts.enumsblog.com/posts/18014)
+[Docker ❤️ Swift & Vapor](https://theswiftdev.com/2018/11/15/docker-loves-swift-and-vapor/)
+
+## 工具
+
+### [SwiftKit](https://github.com/SvenTiigi/SwiftKit)
+
+[@张嘉夫](https://github.com/josephchang10):用命令行快速生成跨平台 Swift Framework,支持 iOS、tvOS、watchOS 和 macOS,兼容 CocoaPods、Carthage 和 Swift Package Manage,整合了 Fastlane 以便测试和发布,采用 Jazzy 来生成文档。此外还包括 README.md 模板、格式工具 SwiftLint、持续集成服务配置模板(Travis、GitLab)以及自动判断库名在 CocoaPods 上是否已被占用等等。
+
+### [Messier - 简单易用的Objective-C方法跟踪工具](https://everettjf.github.io/2019/05/06/messier/#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%AE%89%E8%A3%85macos%E5%AE%A2%E6%88%B7%E7%AB%AF)
+
+[@红纸](https://github.com/nianran):Messier 可以用来跟踪 iOS 应用的 Objective-C 方法调用。在越狱设备上可以跟踪任意应用,在非越狱设备上也可用于跟踪调试中的应用或使用 Monkey Dev 植入框架的项目,仅支持 arm64 的真机。据文中作者介绍,其原理基于 Hook objc_msgSend 来实现函数记录,存储本地,使用自研工具导出文件后,使用 [catapult](https://github.com/catapult-project/catapult) 进行展示。另外调试过程中或多或少影响到了调试性能,适合查问题的时候进行植入。
+
+## 代码
+
+### [MaLiang - iOS 涂鸦库](https://github.com/Harley-xk/MaLiang)
+
+[@anotheren](https://anotheren.com/):MaLiang 是 iOS 平台基于 Metal 的涂鸦绘图框架,完全使用 Swift 实现。
+
+目前支持的功能:
+* 笔迹通过贝塞尔曲线进行平滑处理
+* 支持添加自定义贴图
+* 纹理和贴图支持旋转
+* 内置一个荧光笔特效的实现
+* 可以根据压力自动调整笔迹,支持 3D Touch
+* 支持撤销和重做
+* 支持滚动和缩放画布
+* 导出绘制内容为图片
+* 将绘制内容保存为矢量文档和从文档恢复数据
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#68-2019.05.20.md b/Reports/2019/#68-2019.05.20.md
new file mode 100644
index 000000000..77c0bbb72
--- /dev/null
+++ b/Reports/2019/#68-2019.05.20.md
@@ -0,0 +1,135 @@
+# 老司机 iOS 周报 #68 | 2019-05-20
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [SE-0260 Library Evolution for Stable ABIs](https://github.com/apple/swift-evolution/blob/master/proposals/0260-library-evolution.md)
+
+[四娘](kemchenj.github.io):目前 ABI 稳定的工作正在逐步收尾,Swift 5.0 达成的是标准库的 ABI 稳定。但这种 Module ABI 稳定的机制还没有提供给外部用户使用。
+
+当前标准库是通过一些私有的注解和编译选项来使用这一套机制的,所以这次提案讨论的内容就是如何将它作为一个功能提供给我们使用,里面涉及的主要是一些语法和编译选项的设计。
+
+需要跟 SDK 打交道的同学可以点击查看更具体的内容。
+
+### [(SE-0253)Callable values of user-defined nominal types](https://github.com/apple/swift-evolution/blob/master/proposals/0253-callable.md)
+
+Swift Evolution 最近通过的新的提案,([SE-0253](https://github.com/apple/swift-evolution/blob/master/proposals/0253-callable.md))为 Swift 带来了静态调用的 `Callable`。作为对比你可以看看在 Swift5.0 中就引入的([SE-0216](https://github.com/apple/swift-evolution/blob/master/proposals/0216-dynamic-callable.md))`@dynamicCallable`。或者,你也可以对比一下 Python 中的 `__call__`。
+
+## 新手推荐
+
+### 🌟 [FlutterDartTips](https://ibhavikmakwana.github.io/FlutterDartTips/)
+
+[@olddonkey](https://github.com/olddonkey):对于很多刚接触 Flutter 的同学来说,有一些 Dart 和 Flutter 编写中的一些小技巧可能并没有特别的熟悉。这些小知识点很多时候能让开发的时候,减少掉很多不必要的负担。
+
+有一位来自印度的同学,就建了这样的一个项目,专门分享这些 Dart 和 Flutter 的小知识点。即便你已经对此很熟悉了,也不妨可以看看是不是有什么遗漏的点。
+
+## 文章
+
+### 🌟 🐎 [CocoaPods 1.7 新特性](https://kangzubin.com/cocoapods-1.7/)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了 CocoaPods 1.7.0 的几个新特性:
+
+1. 支持多个 Swift 版本:可以在 podspec 配置文件中通过 swift_versions 字段指定其支持的 Swift 版本。也可以可通过 supports_swift_versions 字段为 Podfile 文件中集成的每个 target 指定所需的 Swift 版本。
+2. 引入 App Specs:引入了 app apecs,允许 pod 库作者在其 podspec 中描述一个应用程序。
+3. 生成多个 Xcodeproj:可以将每个 pod 库集成为其自己单独的 Xcode project,并嵌套在顶级 Pods.xcodeproj 下,这样显著提高大型 CocoaPods 项目的性能。
+4. 增量安装:支持了仅重新生成自上次 install 以来发生更改的 pod 库,而不是像之前那样重新生成整个 workspace。
+5. 新增 scheme 字段:可以为 specs,test specs 以及 app specs 自定义 scheme 的生成。
+6. 支持 .xcfilelist:script phases 支持使用 .xcfilelist 来指定脚本的输入和输出路径。
+7. 为 Master Specs Repo 提供 CDN 支持:启动了对 CDN 的支持,以避免在本地机器或 CI 系统上克隆 master specs repo,让使用 CocoaPods 更加方便。
+8. 为 Windows 系统提供支持:添加了对 Windows 系统的支持。
+
+### 🌟 🐎 [Image Resizing Techniques](https://nshipster.com/image-resizing/)
+
+[@邦Ben](https://weibo.com/linwenbang):Mattt 大佬说:大量的调整图片的代码都宣称自己是最正确的。因此,Mattt 给出 5 种不同的技巧以供选择。什么情况我们需要缩小调整图片尺寸?当图片尺寸远大于需求的时候,缩小可以节省内存提高性能。
+
+- Drawing to a UIGraphicsImageRenderer (UIKit)
+- Drawing to a Core Graphics Context (Core Graphics)
+- Creating a Thumbnail with Image I/O (Image I/O)
+- Lanczos Resampling with Core Image (Core Image)
+- Image Scaling with vImage (vImage)
+
+最后通过性能对比,前三种方法性能较好。如非必要,不使用后两种。
+各个方法的示例代码,请阅读原文。
+
+### 🚧 🐎 [A Deep Dive Into Hero Widgets in Flutter](https://medium.com/flutter-community/a-deep-dive-into-hero-widgets-in-flutter-d34f441eb026)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):对于 Hero 动画想必做移动开发的同学都不陌生,通常在 Native 开发情况下想要实现这个动画并不容易,但是在 Flutter 中内部就实现了这一交互效果,只需简单的使用 Hero 这个 Widget 即可,本文详细的讲解了 Hero 的基本使用和定制化开发。
+
+### 🐢 [基于协程的编程方式在移动端研发的思考及最佳实践](https://mp.weixin.qq.com/s/DXj0-6YOwRcwQfsqB6CTTw)
+
+从超级 App 的性能和代码痛点从发,道出 iOS 异步编程现状存在的缺陷,想必读者也感同身受。
+
+- 多线程访问引发野指针问题
+- 多线程访问引发容器类崩溃问题
+- 多线程访问引发过渡释放问题
+
+从而引出协程,基于协程的全新的异步编程方式,是我们解决现有异步编程问题的有效的方式。想要了解协程的最佳实践,读者们可以仔细阅读本文。
+
+### 🐢 [Xcode Build Configuration Files](https://nshipster.com/xcconfig/)
+
+在 Xcode 中可以设置我们项目相关各种工程设定,但是把所有的编译配置都在 Xcode 中设置有时候并不是一个明智的选择,光 Build Settings 选项里面就有上百项的设置选项,这并不利于我们维护。但好在苹果给了我们另外一种方式,使用 xcconfig 文件。它是用来保存配置键值对的纯文本文件,这使得我们可以分离代码和配置,如果你也有为工程配置烦恼过,不妨尝试试用一下 xcconfig 文件。
+
+推荐阅读:
+- [CocoaPods 1.7.0 Beta!](http://blog.cocoapods.org/CocoaPods-1.7.0-beta/)
+
+
+### 🐎 [在闲鱼,我们如何用 Dart 做高效后端开发?](https://mp.weixin.qq.com/s/jAD3hacFMVcOv9GnAfCFOw)
+[@xiaofei86](https://weibo.com/xuyafei86):Dart 是一门简洁、容易上手、对异步支持良好的编程语言,在 Flutter 的开发中大放异彩。本文简单讲解了闲鱼使用 Dart 进行后端开发的实践经验。在闲鱼团队的努力下,Dart 用于后端开发的支持逐渐完善,前台和后端开发人员已经能够快速高效地使用 Dart 开发胶水层接口。未来闲鱼团队会着力于进一步改善 Dart 开发体验、与 Java 项目的兼容性、提升 Dart 远程服务的性能,挖掘 Dart 在后端开发中更大的潜力。
+
+### 🐢 [What to Expect From Marzipan](https://blog.iconfactory.com/2019/05/what-to-expect-from-marzipan/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B403)
+
+> Marzipan 是 Apple 内部项目代号,Apple 在 WWDC 2018 发布了一项计划:将 UIKit App 迁移到 macOS 上。
+
+[@享耳先森](https://github.com/iblacksun):WWDC 2019 不久就要开始,预计 Marzipan 计划将有新的进展,但作者认为平台迁移没有想象中那么美好,不是光适配代码发布就完事了,作者从开发、设计及市场三个方面分析迁移可能会面对的难题。
+
+## 工具
+
+### [Run Swift in browsers](https://swiftwasm.org/)
+
+[@AidenRao](https://weibo.com/AidenRao):将 Swift 代码编译为 [WebAssembly](http://webassembly.org.cn/) ,使它能在浏览器上直接运行。目前还是第一个版本,Swift 的很多功能还需要支持,感兴趣的同学可以加入 [swiftwasm](https://github.com/swiftwasm)。
+
+## 代码
+
+### 🌟 [Mango](https://github.com/YPLiang19/Mango)
+
+[@looping](https://github.com/looping):MangoFix 是一个 iOS 热修复 SDK,不同与 JSPatch,它内置了一个语法和 Objective-C 非常类似的 DSL 和对应的解析器。它的设计目标是为了解决 iOS 热修复问题,所以在使用的便捷程度和性能方面都有很大优势。对 iOS 热修复或者制作 DSL 感兴趣的同学可以参考作者写的 [《MangoFix:iOS 热修复另辟蹊径》](https://www.jianshu.com/p/7ae91a2daead) 和 [《iOS 热修复 MangoFix 原理分析》](https://www.jianshu.com/p/a6511c687eda) 这两篇文章深入了解下。
+
+### [ui-fabric-ios](https://github.com/OfficeDev/ui-fabric-ios?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B403#colors-and-typography)
+
+`ui-fabric-ios` 是微软开源的一个界面框架,可为 iOS 平台提供 Office UI 体验。它包含有关颜色和排版的信息,以及平台控件的自定义,所有这些都来自 Office 和 Office 365 产品中使用的官方 Fluent 设计语言。感兴趣的同学可以下载下来深入研究。
+
+### [mathAI](https://github.com/Roujack/mathAI)
+[@莲叔](http://weibo.com/aaaron7):拍照做题在生活大爆炸中第一次出现后,就引起了不少关注,这个极具未来感的应用场景随着计算机视觉技术的发展已经逐渐走近现实,该作者基于 py 实现了一套拍照做题的系统,并在仓库中附带了一份 ppt 来介绍自己的防范,大概就是首先通过 opencv 进行字符预处理,然后用 cnn 来识别手写的字符已经数学符号,并根据空间信息来重建出手写公式的信息结构,最后一步通过编译原理中的表达式处理等方法来求解式子。作者部分开源了代码,但应该也能从中学到主要的流程,有兴趣的同学可以学习。
+
+## 音视频
+
+### [ggtalk | 聊聊跨平台:Weex 尚能饭否?](https://talk.swift.gg/30)
+[@莲叔](http://weibo.com/aaaron7):如标题所说,这一期的 ggtalk 讨论了 Weex 这个颇具争议的框架。节目中除了聊 Weex 本身的一些问题之外,还聊到了一些对 Weex 比较常见的误解。虽然 Weex 和 RN 经常被拿来做比较,但其实本身的定位却有区别,本质上是 for 不同目的的业务场景,比如 RN 比较完整的包装了系统的接口,目标是尽可能闭环在 RN 的环境中完成整个 app 的开发,而 weex 恰恰相反,其相对简洁的框架主要是服务于动态 UI 的实现,绝大多数逻辑部分还是依赖于 Native 实现,但也就因为这个特性,Weex 有非常简洁的和 native 进行 bridge 的框架方法。这类问题在节目中得到了充分的讨论,当然也包括其中的一些坑,有兴趣的同学可以看看。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#69-2019.05.27.md b/Reports/2019/#69-2019.05.27.md
new file mode 100644
index 000000000..9df4fd111
--- /dev/null
+++ b/Reports/2019/#69-2019.05.27.md
@@ -0,0 +1,102 @@
+# 老司机 iOS 周报 #69 | 2019-05-27
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [WWDC19 Schedule](https://developer.apple.com/wwdc19/schedule/#!/)
+
+[@红纸](https://github.com/nianran):WWDC 2019 已临近,特此献上日程表以供各位进行提前查阅。
+(另外推荐一款 macOS 下的观看应用 [WWDC](https://github.com/insidegui/WWDC)。)
+
+## 新手推荐
+
+### 🌟 🐕 [给 iOS 开发者的 Flutter 指南](https://mp.weixin.qq.com/s?__biz=MzUyMjg5NTI3NQ==&mid=2247483737&idx=1&sn=dd55f91bce2fd947a9951488ce39558b&chksm=f9c5ab9dceb2228bc0136d2e7b8155e84e87d6123d0e919e35ed013388c02752adbe67c48679&scene=21#wechat_redirect)
+
+[@邦Ben](https://weibo.com/linwenbang/):作为一名 iOS 原生开发,如何更好的进入 Flutter?该文通过类比 iOS 开发中的概念来解释 Flutter 相关的内容,都是一些相当常见的基础内容,非常适合入门。Flutter 的热加载其实提供很好的入门试错体验,毕竟,你只需要保存一下就知道你写错了还是写对了,因此,入门的学习成本降低了不少。个人感觉,入门曲线要低于 ReactNative。
+
+该文分为上下两篇:
+
+- [给 iOS 开发者的 Flutter 指南(上)](https://mp.weixin.qq.com/s?__biz=MzUyMjg5NTI3NQ==&mid=2247483737&idx=1&sn=dd55f91bce2fd947a9951488ce39558b&chksm=f9c5ab9dceb2228bc0136d2e7b8155e84e87d6123d0e919e35ed013388c02752adbe67c48679&scene=21#wechat_redirect)
+- [给 iOS 开发者的 Flutter 指南(下)](https://mp.weixin.qq.com/s/59w9e3pdnT5-GqF98J0gYQ)
+
+### 🐕 [UIButton: Padding Between Image and Text](https://noahgilmore.com/blog/uibutton-padding/)
+
+[@极速男孩007](https://github.com/ztlyyznf001):本文介绍了如何通过修改 UIButton 的 contentEdgeInsets 和 titleEdgeInsets 还有 imageEdgeInsets的值,来改变 UIButton 中图片和文字的位置。
+
+## 文章
+
+### 🐕 [Improving your Swift code using value objects](https://www.hackingwithswift.com/articles/188/improving-your-swift-code-using-value-objects)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):值对象是自定义类型,它们是代表我们应用程序一部分的小型精确类型。与值类型一样,值对象应该是不可变的,值对象通过利用值类型的不变性以及添加自我验证的能力来帮助我们编写更易于理解,更容易测试,更安全的代码 。我希望您可以试一试。
+
+### 🐎 [@autoreleasepool uses in 2019 Swift](https://swiftrocks.com/autoreleasepool-in-2019-swift.html)
+
+[@xiaofei86](https://weibo.com/xuyafei86):本文先是简单的介绍了 autoreleasepool 在 Objective-C 中的使用场景——在循环体中大量创建 autorelease 对象。而 ARC 对 Swift 的优化在过去几年中进步了很多,根据作者的测试,似乎 ARC for Swift 从不调用 autorelease,而是用多次调用 release 来替代。所以对于纯粹的 Swift 对象我们可能不再需要 autoreleasepool。但在 Swift 开发中 autoreleasepool 仍然有用,因为在 UIKit 和 Foundation 中仍然存在调用 autorelease 的遗留 Objective-C 类。以上便基本是本文的所有内容,如果你对 autorelease 的问题还不是很了解,可以去继续阅读原文。
+
+### 🐢 [Building a NFC Scanner App with CoreNFC in Swift](https://medium.com/appcoda-tutorials/building-nfc-product-scanner-ios-app-with-corenfc-alfian-losari-5da0365bcde5)
+
+[@享耳先森](https://github.com/iblacksun):在 2014 年 Apple 发布 Apple Pay,iPhone 6 是第一批支持 NFC 功能的设备。iOS 11 终于发布了 CoreNFC 框架,第三方 App 可以在前台读取 NFC tags(iPhone 7 及以后的机型才能读取 NDEF),iOS 12 增强了 CoreNFC 的能力,允许在后台读取 tags 并通过 Universal Link 技术唤起 App。iOS 13 马上就要发布了,相信开发者们十分期待 Apple 开放 NFC 写入功能。
+
+文章详尽的描述了如何从零开发一个读取 NFC tags 的应用,甚至十分贴心的介绍了如何制作 tags 供测试使用,建议对 NFC 有兴趣的开发者们读一读。
+
+### 🐎 [Using Codable to make enums with associated values even more powerful](https://blog.natanrolnik.me/codable-enums-associated-values)
+
+[@zvving](https://github.com/zvving):带有关联值的枚举被用在 Optional、Resutl 等场景、为编码带来更丰富且严谨的语义。作者通过一处网络数据解析的案例,展现定义枚举相比类或结构体的优势。也详细介绍了在此基础上如何实现 Codable 协议,支持持久化。
+
+### 🐎 [Empty Strings in Swift](https://useyourloaf.com/blog/empty-strings-in-swift/)
+
+[@JimQ](https://github.com/waz0820) 一个 string 是否 empty 可能有三种不同的含义:1. 长度为零;2. 只包含空白符;3. 可选值为空。针对这三种含义,文章分别给出了最优 & 最 Swift 化的判断方法。
+
+### 🐕 [OOM 与内存](http://sindrilin.com/2019/05/23/oom_and_memory.html)
+
+[@looping](https://github.com/looping):本文作者从一起可疑的崩溃现象,即从崩溃日志上看,设备还有很多可用内存,但是排查发现,却是内存分配失败后对无效地址的访问错误;再结合内存分配方式,发现每种类型的内存分配地址都是有上限的,也就是说即便在设备依然有可用内存的情况下,如果某个类型的内存地址被分配完毕,同样会引发 OOM 问题。
+
+本文不管是对问题排查过程的描述,还是对 malloc_zone 的分析介绍,都是一份很好的学习资料,感兴趣的同学可以深入学习下。
+
+## 工具
+
+### 🌟 [i18ns.com](https://i18ns.com/zh/index.html)
+
+[@张嘉夫](https://github.com/josephchang10):i18ns.com 是一个免费的多语言翻译搜索网站,致力于让软件国际化变得简单便捷。作者从长期的软件开发过程中发现,超过50%的软件文案都是可复用的,而在同类别软件中可复用的内容甚至超过80%以上,于是创建了这个网站。期望能帮助广大小微开发者能更廉价更便捷地完成软件国际化翻译。
+
+### [Fledge](https://github.com/mmcc007/fledge)
+
+[@老峰](https://github.com/GesanTung):Fledge 是一个构建 Flutter 项目的 CI/CD(持续集成/持续部署)工作流工具,包括自动构建、测试、签名和发布 Apple Store 和 Google Store,支持 Travis、Jenkins、GitLab 等,感兴趣的同学还以点[这里](https://medium.com/@nocnoc/cicd-for-flutter-fdc07fe52abd)。
+
+## 代码
+
+### [Flutter4GitLab](https://github.com/stefanJi/Flutter4GitLab)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):[Flutter4GitLab](https://github.com/stefanJi/Flutter4GitLab) 是[纪阳](https://github.com/stefanJi)同学用 Flutter 实现的一个 GitLab 客户端,只实现了一部分功能。对于正在学习 Flutter 的同学是一个不错的一手参考资料, 项目中的一些插件的使用很是值得学习, 比如:
+
+- xml 解析
+- html 标签展示
+- 通过 stetho 连接 Chrome 的 Network Inspector
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#70-2019.06.03.md b/Reports/2019/#70-2019.06.03.md
new file mode 100644
index 000000000..09bee1e8c
--- /dev/null
+++ b/Reports/2019/#70-2019.06.03.md
@@ -0,0 +1,112 @@
+# 老司机 iOS 周报 #70 | 2019-06-03
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [『SwiftOldDriver 精选』调价至 1 元](https://xiaozhuanlan.com/olddriver-selection)
+
+『SwiftOldDriver 精选』是周报编辑去年做的一个付费专栏,内容是编辑们自己的原创或译文,总共 20 余篇。现在正式以一元价格开放,保留一元售价而不完全免费只是为了减少无脑订阅导致的一系列麻烦事儿~望谅解。
+
+### [iPhone 蜂窝网络下载限制提升到 200M](https://9to5mac.com/2019/05/31/apple-iphone-cellular-limit-increased/)
+
+[@JimQ](https://github.com/waz0820):iPhone 蜂窝网络下载限制从 150M 提升到了 200M,上次调整还是在 2017 年 9 月 从 100M 提升到 150M。值得一提的是,并非应用主页上显示超过 200M 就不能使用蜂窝网络下载了,只要经 App Store 压缩瘦身之后的应用大小不超过 200M 这个阈值都是可以下载的。
+
+## 文章
+
+### 🌟 🐎 [开启 Cocoapods 新选项,加快项目索引速度](https://kemchenj.github.io/2019-05-31/)
+
+[@红纸](https://github.com/nianran):来自编辑部[@四娘](kemchenj.github.io)关于 Cocoapods 1.7.0 的踩坑作品。其主要内容如下:
+
+1. 生成多个 Xcodeproj,在 Podfile 文件中可以加入 **generate_multiple_pod_projects** 选项,开启时,生成多个 Project 嵌套在 Pods 这个顶级 Project中,未开启的状态为一个 Project 对应多 Target。据[@四娘](kemchenj.github.io)考察这种方式所有的 Item 都会按照类别存放到各自的 section 里,最终在项目的结构树里会以引用的形式呈现,从而加快了索引速度。
+2. 在 Podfile 中 install! 函数只能调用一次,其函数是一个配置函数,仅保留最后一次的配置结果
+3. Swift 版本控制和生成多个 Xcodeproj 会有冲突,因为生成多个后,项目结构会发生改变 post_install 函数中 installer.pod_target 就没办法获取所有 pods 引入的 Target
+4. 在使用 Pod 时,我们可以去利用 **pry** 去调试 Pod 程序,简单易懂(如果想更好的去调试的话,建议直接调用 **Pod::Command.run(%w(#{你要调试的命令,eg install}))**,可以一步步去断点调试到每一个函数的执行。)
+
+### 🌟 🐢 [Preparing a code base for WWDC](https://wwdcbysundell.com/2019/preparing-a-code-base/)
+
+WWDC 马上就要到了,显然我们目前还并不知道会苹果具体会发布什么,但根据以往的经验,肯定会带来一些新的技术点,以及废弃一些老的 API 等等。所以我们依然可以提前为即将到来的 WWDC 做一些准备,如:
+
+- 去除一些老的 Warnings,它们可能存在很久了。
+- 让我们的工程结构更加的解耦,以避免像之前苹果废弃 UIWebView 时候替换 WKWebView 所带来的巨大的工作量。
+- 适当做一些单元测试和 UI 测试,这样能让我们更加从容面对新的 API 或者代码更改。
+- 大的项目基本都会或多或少有一些三方库在里面,所以在 WWDC 之前,可以做一些依赖项检查,了解它们内部工作的原理,这样在新版本升级时候遇到问题我们可以更好的去处理。
+- 使用一些最新的 API ,相信很多同学已经听说过今年可能会推出 Dark 模式,所以使用官方最新的 API 是减少以后适配成本的最好方式。
+
+### 🐢 [腾讯新闻前端团队:Flutter Web 初体验](https://mp.weixin.qq.com/s/AlTtvrsRWRLxAbJbs-Y8XA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):flutter_web 发布有一段时间了,业内对其褒贬不一,但不管如何 Google 在持续的推动,在 flutter 1.5.4 以后的版本已经做到 Write once,Run everywhere , 同一份 flutter 代码可以在不做任何修改和适配的情况下同时运行在 iOS,Android,Web,Desktop。所以不管从哪个角度看,flutter_web 都是一门值得探索的技术。
+
+[本文](https://mp.weixin.qq.com/s/AlTtvrsRWRLxAbJbs-Y8XA)由腾讯新闻前端团队推出,可以说是手摸手教你从零开始使用 flutter 来开发 web 前端应用。
+
+### 🐎 [Ordered Collection Diffing](https://thoughtbot.com/blog/ordered-collection-diffing)
+
+[@anotheren](https://github.com/anotheren):SE-0240 为 `Collection` 带来了新的一个新的方法 `difference(from:)`。就如同方法名本身,这个方法能够高效地处理集合之间的差异。本文以 `UITableView` 的数据更新为例,简明展示了这个新 API 的使用方法。目前这个提案的状态已经更新为 `Implemented (Swift 5.1)`,相信本周的新 Xcode 就能使用了,不要忘了试一试。
+
+### 🐕 🚧 [Migrating to Codable from a third party parsing library](https://medium.com/@elenipapanikolo/migrating-to-codable-from-a-third-party-parsing-library-fd85298ef5a2)
+
+[极速男孩007](https://github.com/ztlyyznf001):在 Swift4 中,苹果引入了 Codable 协议。本文以 [Argo](https://github.com/thoughtbot/Argo) 为例子,介绍了如何从第三方 JSON 解析库迁移到 Codable 协议中。本文主要通过实现 init(from decoder: Decoder) 和 decode(_ json: JSON) 这两个协议,并且让 JSON 对象遵循这个协议,使得对象即可以通过 Argo 也可以通过 Codable 去解析。
+
+### 🐎 [Understanding Compilers – featuring Swift! ](https://www.prolificinteractive.com/2019/05/18/understanding-compilers-featuring-swift/)
+
+[@莲叔](https://weibo.com/aaaron7):本文以 Swift 为例,科普了编译器和解释器的区别以及编译器的主要组成部分,文中比较有价值的观点就是对于 Swift 这样一门比较新、语法也相对复杂的语音,对编译过程有所了解的确是可以对日常开发也有帮助。建议如果不了解相关知识的同学们可以看看,不过近些年编译器相关的文章并不少,横向比较下来看本文并没什么新东西,大佬可以略过。
+
+### 🐕 [Refactoring iOS app with Coordinator Pattern for Navigation](https://medium.com/swift2go/refactoring-ios-app-with-coordinator-pattern-for-navigation-alfian-losari-50081bfa7a4a)
+
+[@老驴](https://github.com/olddonkey):这篇文章的作者从一个实际项目出发,介绍了如何使用 Coordinator Pattern 来对项目中的 View Controller 进行解耦,有兴趣的话也可以自己动手试一试。
+
+前两年的有一段时间,这类库和这类设计思路盛行过一段时间,后来都逐渐没有了声音。倒不是这类库不好,而是在实际应用过程中,设计中的过度解耦会给项目编写带来不必要的麻烦,所以在应用过程中应该结合自己项目的情况进行考虑。解耦但不要过度解耦,才是应用的正确之道。
+
+### 🐕 [技术清谈【008期】【代号:超人】](https://github.com/ChenYilong/iOSInterviewQuestions/issues/124)
+
+[@小T](https://github.com/tom510230):这是著名 iOS 程序员 [ChenYilong](https://github.com/ChenYilong) 整理的技术清谈话题,稍微看了一下 issue 列表,基本都属于要对底层实现或者 Swift 源码实现比较了解的话题。如果功利来说,属于面试不会问,工作中也很难遇到的场景,当然如果你是 sunny 组内的同学或者专业做 iOS 底层技术研究的同学除外。总体而言,issue 里面的问题都值得推敲一下,对于提升 iOS 技术都有很大的帮助。很多时候,解决方案不一定就是目标,可能在寻找解决方案的路上就已经学到了很多。
+
+### 🐢 [深入了解 Swift 中的初始化(Initialization)](https://juejin.im/post/5ceb82056fb9a07efe2d9aab)
+
+[@四娘](kemchenj.github.io):类型安全是 Swift 的一大特点,其中一个表现就是初始化的确定性,只要一个实例完成了初始化过程,它的属性就必然初始化完成,不会处在不确定的状态。
+
+这篇文章的作者总结了自己对于初始化过程的了解,加上一些更加接地气的例子和练习,如果有同学对于这一部分知识还比较模糊的话,推荐一看。
+
+## 工具
+
+### [Stride - 跨平台的 Swift IDE](https://github.com/pmacro/Stride)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):Stride 是 Swift 开发的跨平台 IDE, 它是自托管的,您可以编辑、构建和运行。目前仅支持 macOS 和 Linux,但在目前的替代品有限的状态下,它是有用且可用的。尽管目前依然处于早期阶段,还有很多调试尚未实现,但如果您很感兴趣,可以在[Twitter](https://twitter.com/saniceadonut)上关注作者,以获得 Stride 的进度更新,或者您也可以参与其中,贡献自己的一份力量。
+
+### [launchaco](https://www.launchaco.com)
+
+[@张嘉夫](https://github.com/josephchang10):为创业项目快速生成产品宣传网站,包括快速构建自适应网站、利用 AI 设计图标、域名查询及注册的在线工具。
+
+## 代码
+
+### 🐎 [XCTAssertAutolayout](https://github.com/tarunon/XCTAssertAutolayout)
+
+[@jimq](https://github.com/waz0820):通过封装 XCTAssertAutolayout 断言为 autolayout 提供测试用例,仅支持 Swift。
+原理是 hook UIViewAlertForUnsatisfiableConstraints 获取有歧义的约束,以此作为断言失败的依据。有 UI 测试需求的朋友推荐试用。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#71-2019.06.17.md b/Reports/2019/#71-2019.06.17.md
new file mode 100644
index 000000000..d099b6296
--- /dev/null
+++ b/Reports/2019/#71-2019.06.17.md
@@ -0,0 +1,177 @@
+# 老司机 iOS 周报 #71 | 2019-06-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 🐎 [iOS 13 Preview](https://www.apple.com/ios/ios-13-preview/)
+
+[极速男孩007](https://github.com/ztlyyznf001):在 WWDC 2019 上苹果发布了全新的 iOS 13 版本:
+
+主要带来了一下功能:
+
+ - 大家期盼已久的黑暗模式。提升了夜晚的视觉效果。
+ - 人像拍照更多的功能,并且可以通过日期去筛选照片。
+ - 全新的苹果登录功能,使你的信息更加安全。
+ - 全新的 map 带来更多的地图细节,和 360° 的全景街景。
+ - siri 声音变得更加自然,并且能通过 homepod 识别各个家庭成员的声音。
+ - App 启动速度会比以前快两倍,并且会有更小的包的大小。
+ - ARKit 3 支持人的动作识别,并且支持人和虚拟景象的结合。
+
+### 🚧 [Why Did Apple Reject My App? Ex-Head of App Store Review Explains](https://www.bloomberg.com/news/articles/2019-05-28/why-did-apple-reject-my-app-ex-head-of-app-store-review-explains)
+
+[@anotherene](https://github.com/anotheren):App Store 审核团队的前负责人讨论了为什么应用程序被拒绝,Apple 和 开发人员之间的竞争以及 WWDC 的规划。
+
+## 新手推荐
+
+### 🌟 🚧 [SWIFTUI BY EXAMPLE](https://www.hackingwithswift.com/quick-start/swiftui)
+
+[@邦Ben](https://weibo.com/linwenbang):WWDC 最受瞩目的莫过于的 SwiftUI 了,虽然这可能三年后才有机会普及。
+
+作者 [Paul Hudson](https://twitter.com/twostraws) 非常速度的给出来大量的学习例子(涵盖了日常需要用到的内容,例如:文本图片,列表容器,弹窗,动画,视图形变,状态等等),并且还有录制了学习视频,可谓是干货满满。
+
+其他参考:
+
+- [Learn SwiftUI with free tutorials](https://www.hackingwithswift.com/articles/196/learn-swiftui-with-free-tutorials)
+
+## 文章
+
+### 🌟 🐎 [Thoughts on SwiftUI](https://mackuba.eu/2019/06/14/thoughts-on-swiftui/)
+
+[@zvving](https://github.com/zvving):作者 [Kuba](https://mackuba.eu/about) 是一名资深的 macOS&iOS 开发,整理了对 SwiftUI 的一些思考:
+
+上手所面临的困难:
+
+ - 你可能需要把自己当成 macOS&iOS 开发新手,哪怕忽略开发范式的变化,熟悉新的 framework 也需要时间
+ - 有很多细节问题需要进一步探索:如面对复杂布局不知道如何开始;属性的 $ 如何使用?修饰符的排列顺序有什么影响?等等
+ - 工具现状:仍处于测试版状态,文档不完善,错误消息很神秘,自动提示在一半的时间里无效
+
+看好未来的可能性:
+
+ - 对 SwiftUI 提升 UI 开发效率充满信心,相信能节省开发时间,避免出错
+ - 很好的是苹果没有简单地把 11 岁的 UIKit 抹平差异,迁移到所有平台。而是重新设计一个 UI 框架,承认并强调每个平台的独立性,把有共性的好的体验统一定义,不通用的部分为每个平台提供自定义的可能。就像他们所提倡的那样:『并不是:Write once, run anywhere,而是 Learn once, apply anywhere』
+ - 期望保持 macOS Apps 优秀体验的同时,SwiftUI 为其带来更多的可能性
+
+### 🌟 🐎 [Will Combine kill RxSwift?](https://medium.com/flawless-app-stories/will-combine-kill-rxswift-64780a150d89)
+
+[@Damonwong](https://github.com/Damonvvong): 今年的 WWDC 不但出了 SwiftUI 这个重量级框架,还出了一个官方的 ReactiveX 库 Combine,作者也将 Combine 和目前社区较为流行的 RxSwift 做了以下对比:
+
+- Combine 支持 Backpressure 特性,而 RxSwift 不支持
+- Combine 和 RxSwift 在错误处理上有所不同,相比较而言 Combine 需要更明确的错误类型
+- Combine 不需要使用 DisposeBag 来管理内存问题
+- Combine 和 RxSwift 在 API 上还是有所差异的
+- Combine 在性能上有一点「碾压」的趋势
+- ...
+
+综合比较起来 Combine 虽然还处于 beta 及 iOS 13+ 的阶段,但是各方面似乎都要比 RxSwift 都要稍微好一点。
+
+最后谈一下我自己对 ReactiveX 的看法。在 Combine 这库出来之前,我对 RxSwift 的定义为「毒瘤」。什么意思呢?就是一旦一个项目中一个库引入了 RxSwift 你会发现渐渐的所有的库都会依赖它,以至于想去也去不掉。再加上不同水平的人对 ReactiveX 理解不同,行业中也没有一个很好的规范来约束,以至于项目中的 RxSwift 代码质量参差不齐,难以维护。所以虽然我们项目中引入了 RxSwift 但是我还是会有所克制的去使用 RxSwift。但是 Combine 的出现,彻底打消了我这些顾虑,Combine 的出现是苹果开发团队对 ReactiveX 的肯定,而且 SwiftUI 也依赖于 Combine,所以我觉得对 ReactiveX 充分理解,不再是一个考察开发者能力的可选项,而是一个必须要掌握的技能。如果你还没有开始了解 ReactiveX 那么 RxSwift 是一个不错的选择。
+
+以至于 RxSwift 会不会被 Combine 替代?谁也不知道。把答案交给明天。
+
+### 🌟 🐕 [WWDC 2019](https://nshipster.com/wwdc-2019/)
+
+这是著名的 AFN 作者 Matt 大神写的博客,主要是针对```WWDC 2019 keynote```中的内容进行了一些解读和展望,如果你对于```WWDC 2019 keynote```已经比较了解了,那么看这篇文章可以帮助你更好地知道苹果新技术的一些思想,如果你不太了解,建议先到[苹果官网](https://developer.apple.com/videos/play/wwdc2019/101/)了解一番,然后再阅读这篇文章。
+这次 wwdc2019 对于开发者来说,最重要的莫过于推出了```SwiftUI```框架,重新定义了 UI 层的工作流程,因此 Matt 大神也着重提到了这点。具体来说就是苹果终于对于声明式编程方式提供了合理的支持途径,是可喜可贺的一步。
+另外一个重大的变化就是 iPad 应用移植到 Mac 平台将会变得更加方便了,苹果称呼这个项目叫```Project Catalyst```,具体的内容,在 WWDC 的 session 上面都有提及,譬如 [Session235](https://developer.apple.com/videos/play/wwdc2019/235/) 和 [Session205](https://developer.apple.com/videos/play/wwdc2019/205/)。
+作者在文章的最后再次强调了,今年 iOS 开发者要关注的重点,无疑就是 SwiftUI 和 Swift5 ,如果现在还没有对这两个方向给予足够的重视,那在技术上就很容易被拉开差距了。
+
+### 🌟 🐕 [First impressions of SwiftUI](https://www.cocoawithlove.com/blog/swiftui.html)
+
+[@olddonkey](https://github.com/olddonkey):本文以一个类 SwiftUI 开源库的作者的角度出发,来介绍了一下自己对 SwiftUI 的第一印象。
+
+作者在几个月前写了一个叫 CwlViews 的开源库,也是使用了声明式的设计思路,目标以简单的声明来快速构建 UI 组件。但是作者的设计思路与苹果的设计思路却并不完全相同。例如 SwiftUI 采用的是双向绑定,而作者采用的是单向绑定。再比如 SwiftUI 采用了 Value Type,而 CwlView 则因为 Binder 的原因,不得不选择引用类型。
+
+以上这些比较最后让作者不得不做出一个“艰难”的决定:长远来看,作者将会放弃自己的开源库。但是在最低版本支持是 iOS 13 或 macOS 10.15 之前,SwiftUI 也会遇到很多的问题。而这些问题,都需要时间来完善。
+
+### 🐎 [一招教你解决 FlutterPlatformViews 内存泄露问题](https://mp.weixin.qq.com/s/2CRirw1hxjJDD6e2d8xodQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):PlatformView 是 flutter 总一个非常酷炫的功能,使用 PlatformView 你可以贴一个 native 的控件到 flutter 的 render tree 中,这给了开发者无限的想想空间,但同时也带来一些坑点,比如内存问题,本文通过对 OpenGL 层面的探索发现并解决这一问题。
+
+### 🐎 [How To Adopt Dark Mode In Your iOS App](https://www.fivestars.blog/code/ios-dark-mode-how-to.html)
+
+[@J_Knight_](https://github.com/knightsj):本文作者从使用条件,颜色,图片,代码层面上的 UIVisualEffectViews,NSAttributedString,以及调试方法几个方面讲解了如何使 APP 采用 Dark Mode。
+
+### 🐢 [Property wrappers to remove boilerplate code in Swift](https://www.avanderlee.com/swift/property-wrappers/)
+
+[@享耳先森](https://github.com/iblacksun):`Property wrappers` 是在 WWDC 2019 随 Xcode 11 和 Swift 5.1 一起发布的,提案可以参考 [SE-0258](https://github.com/DougGregor/swift-evolution/blob/property-wrappers/proposals/0258-property-wrappers.md) 。
+
+本文举例使用 `Property wrappers` 实现一个 `@UserDefault` wrapper,用来解决 UserDefault 读取与存储包含大量模板代码的问题,另外,Swift UI 也利用了 `Property wrappers` 实现 View 与 Model 的动态绑定。
+
+### 🐕 [Swift Combine 入门导读](https://icodesign.me/posts/swift-combine/)
+
+[@老峰](https://github.com/GesanTung):Combine 是 WWDC19 Apple 官方推出的基于 Swift 的响应式编程框架。
+
+本文浅显易懂的介绍了 Combine 中 Publisher 、Subscriber 、Subject 、Cancellable 等基本概念,作为作者 Combine 系列的第一篇很适合响应式入门级的读者阅读。
+
+### 🐕 [新晋网红 SwiftUI —— 淘宝带你初体验](https://mp.weixin.qq.com/s/x_jFcKeXSbtdK0CnfayFsw)
+
+在刚刚过去的 WWDC 2019,苹果为我们带来了很多惊喜,其中最引人注目的内容莫过于 SwiftUI 了。从学习 iOS 开发开始, UIKit 就一直伴随着我们。UIKit 是基于命令式的,而近年来,声名式和函数式方式来进行界面开发已经越来越普及,例如最近很红的 Flutter 。我想很多开发者都在期待苹果官方能够出一套类似的技术方案,这不,它就到来了。淘宝团队也在第一时间体验了 SwiftUI 并带了这篇文章,对于还没有去了解 SwiftUI 的同学,推荐看一看。不过,SwiftUI 虽然很棒,但是 Only iOS13 哦。
+
+相关阅读:
+
+[WWDC 2019 - Session 722:Introducing Combine](https://developer.apple.com/videos/play/wwdc2019/722/)
+
+### 🐎 [Solving-ambiguous-constraints-without-rerunning-your-app](https://mar.codes/2019-05-28/Solving-ambiguous-constraints-without-rerunning-your-app)
+
+[@jinmq](https://github.com/waz0820): 本文介绍了使用 View Debugger + LLDB 的方式去定位并消除有歧义的 Auto Layout 约束,而不必每次尝试都重跑你的应用。
+
+### 🐎 [WWDC 2019 Session Notes](https://github.com/Blackjacx/WWDC)
+
+每年的 WWDC ,issue 都多达上百个,作者整理了几十个比较热门的 issue 内容,写成大纲供没什么耐心看完视频的开发同学进行快速预览。大部分的内容都还不错,美中不足的是没有附带图片,可能有一些知识点是不太好理解的,更推荐由各位 iOS 网红整理的 [WWDC精读文章](https://xiaozhuanlan.com/wwdc19) ,另外,[ASCIIwwdc](https://asciiwwdc.com/) 也是很不错的索引网站喔。
+
+## 代码
+
+### 🌟 [RxCombine](https://github.com/freak4pc/RxCombine)
+
+[@四娘](https://kemchenj.github.io):RxSwift 社区推出的一个用于与 Combine 进行交互的框架,提供了 Observable 与 Publisher 相互转化的功能,目前还是属于概念验证阶段。
+
+### 🌟 [RxSwift to Combine Cheatsheet](https://github.com/freak4pc/rxswift-to-combine-cheatsheet)
+
+[@Damonwong](https://github.com/Damonvvong): 这是一个 RxSwift 和 Combine 库 API 的对照表,如果你对 RxSwift 的 API 已经很熟练了,那么这个仓库的对照表可以让你很快上手 Combine。
+
+### [Swift-Docker Slim Images](https://github.com/apple/swift-docker/pull/140)
+
+[@张嘉夫](https://github.com/josephchang10):Swift Docker 镜像的精简版本,适用于 Ubuntu 16.04 和 18.04,去掉了编译器只保留 runtime,镜像从 1.3GB 减小到了 200MB 左右,以便部署。
+
+### [SwiftUI Hooks](https://github.com/unixzii/SwiftUI-Hooks)
+
+[@looping](https://github.com/looping):这个项目是受到了 [React Hooks](https://reactjs.org/docs/hooks-intro.html) 的启发,想证明下在 SwiftUI 上也能用 Hooks。目前作者已经实现了 useState、useEffect 和 useReducer 这几个 Hook,同时还写了一个 [Todo List](https://github.com/unixzii/SwiftUI-Hooks/blob/master/SwiftUI-Hooks/ContentView.swift#L59) 作为演示。对 React Hooks 技术和理念感兴趣的同学可以持续关注。
+
+### [MovieSwiftUI](https://github.com/Dimillian/MovieSwiftUI)
+
+[@邦Ben](https://weibo.com/linwenbang):这是一个基于 SwiftUI 并且使用 Flux 架构完成的电影类 App,示例功能都比较完整。
+
+参考链接:
+
+- [Flux APPLICATION ARCHITECTURE FOR BUILDING USER INTERFACES](https://facebook.github.io/flux/)
+- [Flux 架构入门教程](http://www.ruanyifeng.com/blog/2016/01/flux.html)
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#72-2019.06.24.md b/Reports/2019/#72-2019.06.24.md
new file mode 100644
index 000000000..3caf3c154
--- /dev/null
+++ b/Reports/2019/#72-2019.06.24.md
@@ -0,0 +1,121 @@
+# 老司机 iOS 周报 #72 | 2019-06-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+### 🌟 [免费领取小专栏 -- WWDC2019 内参](https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51)
+
+WWDC2019 专栏由「iOS 周报」、「SwiftGG 翻译组」和「知识小集」共同发起,我们招集了30多位优秀的同学,共同把 WWDC2019 上优质的内容进行解读。目前已解读了包含必看 14 篇,SwiftUI 5 篇文章以及推荐 17 篇文章,以下是部分目录,欢迎大家订阅学习~
+
+#### 必看
+
+* [What's new in Xcode 11](https://xiaozhuanlan.com/topic/3719648250)
+* [Swift 5 & 5.1 为我们带来了什么](https://xiaozhuanlan.com/topic/1390785624)
+* [Sign In with Apple - 使用苹果账号登录你的应用](https://xiaozhuanlan.com/topic/8675913204)
+* [机器学习移动端的峥嵘初现: Core ML 3.0](https://xiaozhuanlan.com/topic/7650813942)
+* [基于 Metal 的现代渲染技术](https://xiaozhuanlan.com/topic/6927418053)
+* [Data Source 新特性:基于 Diffable 实现局部刷新](https://xiaozhuanlan.com/topic/9158203647)
+* [iPad 上的多窗口](https://xiaozhuanlan.com/topic/0342159876)
+* [用 SiriKit 播放你的 App 内容: SiriKit Media Intents](https://xiaozhuanlan.com/topic/0135497268)
+* [What's new in CoreLocation:新增定位临时授权](https://xiaozhuanlan.com/topic/4209567831)
+* [全新后台任务框架及最佳实践](https://xiaozhuanlan.com/topic/1806594273)
+* [低延迟的 HLS](https://xiaozhuanlan.com/topic/1480297563)
+* [内购新特性以及使用 server-to-server 通知](https://xiaozhuanlan.com/topic/0673452981)
+* [理解 Vision 框架中的图片技术](https://xiaozhuanlan.com/topic/5821039746)
+* [创建独立的Watch应用](https://xiaozhuanlan.com/topic/9460127538)
+
+#### SwiftUI
+* [SwiftUI 概览:十分钟构建简单应用](https://xiaozhuanlan.com/topic/9604582713)
+* [SwiftUI 多设备兼容](https://xiaozhuanlan.com/topic/1074925368)
+* [SwiftUI 自定义视图](https://xiaozhuanlan.com/topic/9586134027)
+* [SwiftUI 数据流](https://xiaozhuanlan.com/topic/0528764139)
+* [Apple 官方异步编程框架:Swift Combine 简介](https://xiaozhuanlan.com/topic/9683417052)
+
+#### 推荐
+* [更现代的 Swift API 设计](https://xiaozhuanlan.com/topic/5203689741)
+* [Debugging in Xcode 11](https://xiaozhuanlan.com/topic/1896573024)
+* [开始使用 Instrument](https://xiaozhuanlan.com/topic/3869705241)
+* [机器学习新工具:Create ML App](https://xiaozhuanlan.com/topic/1960485732)
+* [今年的相机有什么新玩法](https://xiaozhuanlan.com/topic/1583627049)
+* [快速掌握 Xcode 预览](https://xiaozhuanlan.com/topic/6850724193)
+* [CryptoKit 框架与 App 安全防护策略](https://xiaozhuanlan.com/topic/6701982534)
+* [Universal Links 新特性](https://xiaozhuanlan.com/topic/3019548672)
+* [What’s New in Clang and LLVM](https://xiaozhuanlan.com/topic/5869372401)
+* [LLDB: Beyond po](https://xiaozhuanlan.com/topic/5438071296)
+* [利用好模拟器](https://xiaozhuanlan.com/topic/0698472351)
+* [摄像新玩法:使用多个摄像头同时拍摄](https://xiaozhuanlan.com/topic/6809542731)
+* [What's New in App Store Connect](https://xiaozhuanlan.com/topic/8526907431)
+* [应用测试与分发渠道简析](https://xiaozhuanlan.com/topic/2076153984)
+
+可直接点击标题链接,或者复制 https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51 至浏览器打开领取。
+
+## 新闻
+
+### [CocoaPods 1.7.2 - Master Repo CDN is Finalized!](http://blog.cocoapods.org/CocoaPods-1.7.2/)
+
+[@享耳先森](https://github.com/iblacksun):`CocoaPods` 近期发布了 1.7.2 版,支持 CDN,意味着我们不需要将整个 `Podspecs` 仓库 clone 并保存在本地,节省几 G 的硬盘空间。最新的版本中,需要在 `Podfile` 里将修改 `source 'https://cdn.cocoapods.org/'`,CDN 将会在未来版本变为默认设置。
+
+## 文章
+
+### 🌟 🐕 [Flutter 最新进展与未来展望](https://mp.weixin.qq.com/s/dC2C1jpDrQSsip6wjiejBw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 自打发布以来一直都是跨平台方向的关注焦点, 本文的作者是 Google Flutter 团队的高级研究员董韬, 文章从多个方面分析了 Flutter 的现状, 以及对其未来的展望, 小编读完本文都觉得未来可期呢😄:
+
+- Flutter 及其在中国的发展状况
+- 多平台愿景: Flutter for Web
+- 生态建设: 与社区共建的状态管理解决方案
+- 开发体验: "UI as Code"
+- Flutter/Dart 近期展望
+
+### 🌟 🐕 [SwiftUI or Flutter ?](https://juejin.im/post/5d05b45bf265da1bcc193ff4)
+
+[@邦Ben](https://weibo.com/linwenbang):本文作者通过一些同功能代码例子对比了 SwiftUI 和 Flutter 的代码复杂度,以此说明 Apple 在 SwiftUI 上更为简洁。在 SwiftUI 跨平台方面也进行了介绍,不同系统下的不同表现,这些都视为 Apple 方面对多设备进行了许多的特性处理。
+
+在小编看来,SwiftUI 算是自家多设备兼容,而不算真正的跨平台,和 Flutter 抹平平台间差异的画布做法来说,还是有很大差别,或许暂不应该相比较,两者目标暂不一致。让我们继续期待 SwiftUI 的进展,希望 Apple 爸爸进度能持续加快!
+
+### 🐕 [iOS Code Review - Health check of your Swift code](https://benoitpasquier.com/code-review-health-check-of-swift-code/)
+
+[@莲叔](https://weibo.com/aaaron7):我们接手一个工程的时候,往往总是习惯性吐槽上一个做这个项目的人做得很垃圾,工程各种有问题。但抛去个人的代码风格不管的话,理性的来看,我们如何衡量一个项目到底是好还是不好呢?这篇博客提出了一个 Swift 工程健康度的概念,并给出了常规的 工程健康度的衡量方法。分别从目录和 git 主页的层面,到 codebase 层面,进一步看代码语言的构成,iOS 的版本,数据库的实现,UI 的方案以及设计模式的使用,最后到是否具备可测试性和 CI/CD 的相关能力,虽然具体每个点都不新鲜,但胜在覆盖全面。有相关需求的同学可以看一下。
+
+### 🐎 [【译】如何正确选型,React Native 还是 Native?](https://mp.weixin.qq.com/s/J-6EKH4fOroPS8RMsC9CJg)
+[@looping](https://github.com/looping):本文总结了 Native 跟 React Native 开发的优缺点,同时为开发移动应用的技术选型提出了自己的看法。如果觉得列的东西太多,不太好分析,文章结尾给出了非常简单的方法 —— “预算充裕,而且也不想在 App 的用户界面和功能上妥协”,即有钱且任性的话,就选择开发原生应用。当然,实际技术选型还得重点关注团队技术能力以及项目需求排期这些因素才能做好。不过从技术的利弊角度看,这篇文章罗列的内容是值得参考的。
+
+## 代码
+
+### [SwiftyGPIO](https://github.com/uraimo/SwiftyGPIO)
+
+[@四娘](https://kemchenj.github.io):一个适用于Linux / ARM 硬件项目的Swift库,支持 GPIOs / SPI / I2C / PWM / UART / 1Wire 等主流协议,有丰富周边教学和衍生项目。
+
+## 音视频
+
+### 🚧 [SwiftUI Gestures, Blend Modes and 3D Transform](https://m.youtube.com/watch?v=js1qFgJS67Q)
+
+[@张嘉夫](https://github.com/josephchang10):DesignCode 的视频教程,展示如何用 SwiftUI 制作交互动画,包括手势、Blend Mode 和 3D Transform 等。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#73-2019.07.01.md b/Reports/2019/#73-2019.07.01.md
new file mode 100644
index 000000000..403bc454a
--- /dev/null
+++ b/Reports/2019/#73-2019.07.01.md
@@ -0,0 +1,167 @@
+# 老司机 iOS 周报 #73 | 2019-07-01
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+### 🌟 [免费领取小专栏 -- WWDC2019 内参](https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51)
+
+WWDC2019 内参现已更新到 42 篇,以下是上周更新的文章,欢迎大家订阅学习~
+
+#### 必看
+
+* [如何在 iOS 13 上适配深色模式?](https://xiaozhuanlan.com/topic/1064789253)
+* [网络的发展](https://xiaozhuanlan.com/topic/3267194058)
+* [在 Xcode 中使用 Swift Package](https://xiaozhuanlan.com/topic/9635421780)
+* [优化 App 启动](https://xiaozhuanlan.com/topic/4690823715)
+
+#### SwiftUI
+
+* [Swift Combine 应用](https://xiaozhuanlan.com/topic/9683417052)
+
+#### 推荐
+
+* [Foundation 框架的新亮点](https://xiaozhuanlan.com/topic/5894162073)
+* [Modernizing Your UI for iOS13](https://xiaozhuanlan.com/topic/5671830492)
+* [UICollectionView 全新布局框架:UICollectionViewCompositionalLayout](https://xiaozhuanlan.com/topic/0735916284)
+
+可直接点击标题链接,或者复制 https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51 至浏览器打开领取。
+
+### [Design+Code 的 SwiftUI 教程限时优惠](https://h5.youzan.com/v2/goods/3eua57deaxury?dc_ps=2286991227876280320.200001&redirect_count=1)
+
+
+
+**扫码购买在五折基础上输入 iOSWeekly 优惠码再优惠 20 元,限时购买!!!**
+
+## 新闻
+
+### [2019 年 Swift 和 Objective-C 开发者调查报告(JetBrains版)](https://mp.weixin.qq.com/s/0YBb9RKtvhJKLi5E9-8Cng)
+
+[@xiaofei86](https://weibo.com/xuyafei86):最近知名 IDE 厂商 JetBrains 发布了 2019 年开发者调查报告。本文汇总了与
+Swift 和 Objective-C 相关的 11 项调查数据和结果。数据显示,仅使用 Swift 的开发者占比已经过半,仅使用 Objective-C 的开发占比已经仅剩 15%。
+
+## 文章
+
+### 🐕 [0.3s 完成渲染!UC 信息流正文“闪开”优化实践](https://www.infoq.cn/article/9UKos4Xh_6wL4Fh1FOGL)
+
+[@aaaron7](https://weibo.com/aaaron7):目前,App 通过集成 webview 的方式来将一部分信息展示的任务交给 h5 来实现已经成为行业相对通用与标准的做法。但这样的场景不可避免的会遇到打开速度的问题,相比直接 push 一个 native 的 view,打开一个基于 webview 的页面往往会重很多,比如 webview/jsengine 的初始化,h5 文件的解析与渲染,js 的执行,ajax 的数据拉取,冗长的流程造成的结果就是打开 webview 的页面往往很慢,而且用户会看到白屏。
+
+本篇文章的作者从整个链路的分析出发,提出了一整套优化的技术,比如离线宝、native 渲染、数据预请求等等,并且从截图上看实现了直出的效果。有相关类似优化场景需求的同学可以好好研究下。
+
+### 🐎 [揭秘苹果应用审核内幕](https://mp.weixin.qq.com/s/BCMyEWvMzuGcGhbkZao7uA)
+
+[@老峰](https://github.com/GesanTung):苹果应用审核过程一直以来是个黑盒,我们经常会遇到让人抓狂却无可奈何的被拒邮件,那么审核到底是怎样的过程呢?
+
+本文根据最近发表在 CNBC 的[一篇文章](https://www.cnbc.com/2019/06/21/how-apples-app-review-process-for-the-app-store-works.html)揭秘了 Apple 应用审核执行审核委员会组成结构及工作内容、应用审核过程、应用拒审处理细节等等,对审核过程好奇的读者可以看一下。
+
+参考链接:
+- [Inside Apple’s team that greenlights iPhone apps for the App Store](https://www.cnbc.com/2019/06/21/how-apples-app-review-process-for-the-app-store-works.html)
+
+
+### 🐎 [App Store 审核极限操作(2019.6 最新)](https://xiaozhuanlan.com/topic/3571480296?from=timeline)
+
+[@极速男孩007](https://github.com/ztlyyznf001):本篇文章主要介绍了苹果审核中遇到的一些问题,然后提供了一些针对性的解决方案。并且推荐了一些关于审核的文章做参考。
+
+参考链接:
+- [Inside Apple’s team that greenlights iPhone apps for the App Store](https://www.cnbc.com/2019/06/21/how-apples-app-review-process-for-the-app-store-works.html)
+
+### 🐕 [系列文章深度解读|SwiftUI 背后那些事儿 ](https://mp.weixin.qq.com/s/ciiauLB__o-cXXfKn7lL1Q)
+
+[@zvving](https://github.com/zvving):继上篇[新晋网红SwiftUI——淘宝带你初体验](https://mp.weixin.qq.com/s/x_jFcKeXSbtdK0CnfayFsw)后,淘宝技术团队又带来 SwiftUI 更详细的介绍。
+
+本文汇总阐述了 WWDC19 中大量关于 SwiftUI 的内容:从 DSL 所需要的新语法,到 API 设计指南,从 DataFlow 到布局算法,从混合布局到多设备适配……
+
+文章涉及技术细节点到为止,而又对 SwiftUI 知识轮廓面面俱到。如果你还没接触过 SwiftUI,想花二十分钟对其知识图谱有个整体认知,这篇文章会是最好的入门指南。
+
+
+### 🐕 [GMTC2019 演讲实录|闲鱼基于 Flutter 的架构演进与创新](https://mp.weixin.qq.com/s/-IN1D99TqpjKZRQTAbaOrQ)
+
+[@Parsifal](https://weibo.com/parsifalchang):GMTC2019 已于上周圆满结束。闲鱼作为国内率先大规模尝试 Flutter 的团队,也在这次 GMTC 上做了关于闲鱼是如何使用 Flutter 做混合式开发以及业务落地上的分享。Flutter 作为一个跨端解决方案,与原生混编的问题是其必然会遇到而且接受考验的。本次演讲,闲鱼团队围绕着以下两个问题,分享了闲鱼团队是如何演进和创新 Flutter 架构的。
+
+- 如果在一个已经存在的 App 中加入 Flutter,如何让 Native 与 Flutter 进行无缝的衔接,同时保证相互开发之间的隔离性
+- 如果在 Flutter 的容器中,使用已有的 Native UI 组件,在 Flutter 与 Native 渲染机制不同的情况下,怎么保证两者的无缝衔接以及高性能。
+
+### 🐎 [监控所有的 OC 方法耗时](https://juejin.im/post/5d146490f265da1bc37f2065?utm_source=gold_browser_extension)
+
+[含笑饮砒霜](https://weibo.com/chinafishnews/):App 卡顿,绝大部分都是因为主线程卡顿造成,所以可以通过监控主线程运行的 OC 方法来优化代码质量和性能问题。
+
+[@Damonwong](https://github.com/Damonvvong): 作者在学习完[《戴铭的iOS开发高手课》](https://time.geekbang.org/column/intro/161?code=0eTznNzpAbVisw%2FesJ9iM32u2ctcY8OqwgMuqSlv5OE%3D&utm_term=SPoster) 之后,了解到了如何 hook objc_msgSend 写了一个如何监控所有 OC 方法耗时的小工具。并详细说明了代码实现的原理,是一个值得学习的文章。
+
+然而,hook objc_msgSend 涉及到汇编的知识,如果对汇编不太熟悉的朋友,可以看一下作者的另外一篇文章 [arm64程序调用规则](https://wukaikai.tech/2019/05/19/arm64%E7%A8%8B%E5%BA%8F%E8%B0%83%E7%94%A8%E8%A7%84%E5%88%99/#%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C)
+
+### 🐎 [BlockHook with Private Data](http://yulingtianxia.com/blog/2019/06/19/BlockHook-with-Private-Data/)
+
+[@Parsifal](https://weibo.com/parsifalchang):Block 作为 Objective-C 上的闭包实现,为我们编写回调代码带来了极大的便利。享受这样的便利之余,我们也会有场景想 Hook 某些 Block 来做一下特定的业务,但事实上 Block 的 hook 并不像 Method Swizzling 那么简单。而杨萧玉的 [BlockHook](https://github.com/yulingtianxia/BlockHook) 就解决了这样的问题。
+
+本文从介绍 BlockHook 是如何解决带有“私货”而不能被正常 Hook 的 Block 的问题出发,揭秘了这些特殊 Block 是如何被实现的。由于此类文章资源很少,对于我们想深入了解 Block 同学十分值得细读。文章很短,但干货很足。
+
+### 🐎 [[译]我第一次体验Kotlin Native](https://juejin.im/post/5d1716556fb9a07ef5624af8?utm_source=gold_browser_extension)
+
+[@邦Ben](https://weibo.com/linwenbang):Kotlin 1.3 的发布,带来了跨平台的能力(仿佛不会跨平台的都不是好语言),Kotlin 可以生成多个平台的代码(iOS,MacOS,Android,Windows,Linux,WebAssembly),本文中经过编译器处理后会生成对应平台的代码,部分平台能力还需要手动进行桥接(跨平台迈不过的坎)。初看,Kotlin 跨平台能力还未完备,还需一段发力期,还是让我们拭目以待吧。
+
+### 🐕 [How I negotiated a $300,000 job offer in Silicon Valley](https://blog.usejournal.com/how-i-negotiated-a-software-engineer-offer-in-silicon-valley-f11590f5c656)
+
+[@老驴](https://www.weibo.com/6090610445/):这篇文章其实对国内的程序员参考价值不大。文章讲的是一个美国程序员在跳槽过程中如何利用自己有的多个不错 offer 来进行相互竞价的过程。因为国内的面试情况和北美的不太一样,所以也不能拿来套用,仅供参考吧。
+
+顺便,如果你对北美软件工程师面试相关信息感兴趣的话,也可以看看之前我写的一篇[文章](https://xiaozhuanlan.com/topic/4263189057)。
+
+### 🐢 [WWDC session videos recap](https://github.com/Blackjacx/WWDC)
+
+[@红纸](https://github.com/nianran):今年 WWDC 有超过 100+ 的视频总量,我们很难跟进每个视频的内容,但是本文作者为我们罗列了一个视频摘要清单。我们可以通过摘要,快速把握住此 Session 的重要内容。当然我们也可以通过摘要来辨别视频内容的价值,是否值得我们继续细化深入细节。
+
+### 🐕 [Dart | 什么是Mixin](https://juejin.im/post/5bb204d3e51d450e4f38e2f6)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Dart 是一门取众长的编程语言,语法简介明了,Mixin 更是其相当亮眼的设计,很多人把他理解为 Java 之于 interface ,Swift 之于 extension,小编觉得这么理解都可以,但是 Mixin 更强大,[本文](https://juejin.im/post/5bb204d3e51d450e4f38e2f6)详细的带你了解 Dart 的 Mixin 究竟为何物。
+
+## 代码
+
+### [About-SwiftUI](https://github.com/Juanpe/About-SwiftUI)
+[@水水]:自从苹果公司宣布了 SwiftUI 的主题演讲之后,大量的文档、示例、视频和教程就出现了。此存储库的目标是收集所有这些信息,让你方便的查找有关 SwiftUI 的信息。
+
+## 设计
+
+### [选一个好的背景让你的设计更出彩!](https://mp.weixin.qq.com/s/5Q3Xb_IG3O2Lus05aY7zSQ)
+
+[@邦Ben](https://weibo.com/linwenbang):如果你有兴趣或者正在做独立 App 的话,你一定会绕不开设计,因为不是所有人都那么幸运有一个专属的设计师搭档,该文章介绍了一些可以获取到好背景的一些资源网站,有兴趣的可以看下~
+
+
+## 内推
+
+### 字节跳动 2020 届提前批内推
+
+**字节跳动**面向 2020 届毕业生的【秋招提前批】限时开启,**iOS/Android 客户端、前端,后端、测试开发等**岗位均开放名额,直走**内推通道**,提前拿 offer。
+
+- 简历发送至:[zengming.0@bytedance.com](mailto:zengming.0@bytedance.com) (推荐标题:校招提前批-岗位-姓名-城市),如:校招提前批-iOS客户端-王富贵-北京
+- **不影响**后续秋招再次投递,欢迎转发~
+- 有效时间截止 2019.07.17
+
+PS:王富贵表示:这是个很好的机会哟,走过路过不要错过 (~o ̄3 ̄)~
+
+### 常规内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#74-2019.07.08.md b/Reports/2019/#74-2019.07.08.md
new file mode 100644
index 000000000..26529d747
--- /dev/null
+++ b/Reports/2019/#74-2019.07.08.md
@@ -0,0 +1,207 @@
+# 老司机 iOS 周报 #74 | 2019-07-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [iOS 三大组织联名T恤,限时销售](https://m.tb.cn/h.e62VJCJ?sm=6bb793)
+
+
+
+### [Design+Code 的 SwiftUI 教程限时优惠](https://h5.youzan.com/v2/goods/3eua57deaxury?dc_ps=2286991227876280320.200001&redirect_count=1)
+
+
+
+**扫码购买在五折基础上输入 iOSWeekly 优惠码再优惠 20 元,限时购买!!!**
+
+## 新手推荐
+
+### [Decode Row & Column](https://medium.com/@greg.perry/decode-row-column-8b88ad2d758c)
+
+[@邦Ben](https://weibo.com):如果你进行 Flutter 开发,那一定会接触到 Row 和 Column 这两个 Widget,这篇文章就非常详细的举例介绍了两个组件的里面的各个参数的使用。主要涉及的是 mainAxisAlignment,crossAxisAlignment 和 mainAxisSize。其中 mainAixsSize 为控制是不铺满剩余空间。
+
+## 文章
+
+### 🌟 🐕 [Revisit iOS Autorelease 之不经意间可能被影响的优化](https://satanwoo.github.io/2019/07/02/RevisitAutorelease/)
+
+[@AidenRao](https://weibo.com/AidenRao):非常硬核的一篇文章,编译器会判断方法的名是否以 alloc / new / copy / mutableCopy 开头,如果不是,则自动将返回的对象注册到 Autorelease Pool 中。且编译器会对 objc_autoreleaseReturnValue 和 objc_retainAutoreleasedReturnValue 进行基于 TLS(Thread Local Storage) 的判断优化,本质上并不会执行 autorelease。
+
+但这个优化逻辑很有可能被我们不知情下编写的代码所改变,产生奇怪的问题。作者构建了一个 demo,从汇编入手,逐步分析,一段不起眼的代码是如何使 autorelease 优化失效,导致 MemoryGraph 中存在大量被 @autoreleasepool content 持有的数据,产生内存不释放问题(并非是内存泄漏,Leaks 是查不出来的)。
+
+### 🌟 🐕 [全网最全 Flutter 与 React Native 深入对比分析](https://juejin.im/entry/5d0bad4c5188257152111ed8)
+
+[@tom510230](https://xiaozhuanlan.com/u/6682065345):本文作者从 环境搭建、实现原理、编程开发、插件开发、编译运行、性能稳定、发展未来 等七个方面,对当前的 React Native 和 Flutter 进行全面的分析对比。实际上本篇文章有一些地方没有考虑到,这里补充一下相关的细节
+
+1. 开发人员上手成本:毫无质疑,基于 JS 语法的 React Native 方案,开发者体验更好
+2. 与 Native 的混编能力:这方面两个框架是五十步笑百步,都不能做到100%完美。从头条、闲鱼、携程、腾讯等大厂的经验来看,只要有人力做基础设施,这都不是事
+3. 真·跨平台:去年 Airbnb 的文章让大家认识到,React Native 其实是个『假』跨平台方案,JS 部分需要各种判断容器的代码不说,很多时候还要纠结要不要使用原生插件(光看UI层)。Flutter 这方面相对来说,代码复用率会高很多。
+4. 小程序方向:基于 React Native 的小程序方案已经有了,并且不少大厂都已经开发上线,基于 Flutte r的小程序方案大家还在讨论中,暂时未确定 Flutter 在小程序框架上面会比 React Native 优秀多少
+
+### 🐕 [360 移动端性能监控实践 QDAS-APM](https://mp.weixin.qq.com/s/Vq0TDiLbexxBlqlf_lilnQ)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):App 的性能问题可能会严重影响用户体验,这些性能问题包括:崩溃、网络请求错误或超时、UI 响应速度慢、主线程卡顿、CPU 和内存使用高、耗电量大等等。通过对日常问题的归纳总结和学习业内相对完善的性能监控平台的实现原理,360 研发团队研发了一套移动端线上性能监控方案——QDAS-APM。文章按照功能详细介绍了实现细节和原理,目前已经实现了以下功能监控:
+
+- 页面渲染时长
+- 主线程卡顿
+- 网络错误
+- FPS
+- 大文件存储
+- CPU
+- 内存使用
+- Crash
+- 启动时长
+
+参考文献
+- [iOS性能监控方案](http://www.cocoachina.com/articles/19680)
+
+### 🐕 [iOS 开发:『Blocks』详尽总结 (二)底层原理](https://juejin.im/post/5d14630ff265da1b725c1433)
+
+[@老峰](https://github.com/GesanTung):本文是作者 Blocks 系列文章的第二篇,比较详细的的介绍了 Blocks 相关的以下内容:
+
+- Blocks 的实质
+- Block 截获局部变量和特殊区域变量
+- Block 的存储区域
+- Block 的循环引用
+
+近些年 iOS 社区介绍 Blocks 底层原理的文章并不少,不了解相关知识的同学们可以看看。
+推荐阅读
+- 书籍:『Objective-C 高级编程 iOS 与OS X 多线程和内存管理』
+
+### 🐕 [Using Sky Segmentation to create stunning background animations in iOS](https://medium.com/flawless-app-stories/using-sky-segmentation-to-create-stunning-background-animations-in-ios-4b4b2548061)
+
+[@kyo](https://github.com/KyoLi):如果有玩过摄影的同学可能会有过因为沉闷或者灰蒙蒙天空导致拍出来的照片不够理想,如果要拯救这张照片,换一下天空也是一种方式。于是,你可能点开 PhotoShop ,使用快速选择工具选中天空然后进行替换。之所以可以在 PS 中快速选择天空,是因为天空的颜色是均匀相似的,但有时候可能也需要多调整几下。想象一下,如果通过一款工具自动识别天空并进行替换,会不会是一件很有趣的事情?而这一款工具如今提供给了我们 iOS 开发者,它就是 Fritz 。它通过机器学习实现了天空分割这样一个计算机视觉任务,让我们开发者可以通过它去实现一些有趣的 idea 。笔者就很想用它来做一个小工具 app 以拯救笔者众多因天色不好而又懒得去一张张用 PS 替换的废片,有兴趣或者有更好想法的同学不妨用它来试试。[Fritz 项目地址](https://github.com/fritzlabs/fritz-ios-tutorials/tree/master/FritzSkyReplacementDemo)
+
+
+### 🐕 [Rendering SwiftUI views to HTML](https://worthdoingbadly.com/swiftui-html/)
+
+[@J_Knight_](https://github.com/knightsj):本文作者开发了一个从 SwiftUI 到 HTML 的工具,目前该工具并没有支持所有的 SwiftUI 元素,作者只是将 SwiftUI tutorial 的 demo 的第一页渲染到了 HTML。
+
+作者分享了在开发这个工具的过程中遇到的问题和解决办法以及一些收获,还同时在渲染方式上对比了 React 和 Flutter, 在语言层面上对比了 C++ 和 Java,而且对 Go 也做了一定的对比和分析。
+
+推荐阅读:
+
+- [SwiftRocks’s article on SwiftUI’s tricks](https://swiftrocks.com/inside-swiftui-compiler-magic.html)
+- [kateinoigakukun’s article on how SwiftUI uses ABI stability for its magic](https://kateinoigakukun.hatenablog.com/entry/2019/06/09/081831)
+
+### 🐕 [Uber 使用 QUIC 协议优化 App 网络性能](https://eng.uber.com/employing-quic-protocol/)
+
+[@四娘](https://kemchenj.github.io):Uber 由于使用场景的特殊性,所以对于网络延迟有比较严格的要求,延迟过久的情况经常被定位到系统的 TCP 实现上,所以他们最后决定改为使用 QUIC 协议。
+QUIC 作为新一代 HTTP3 的底层协议,它在连接建立,拥堵控制等方面都比 TCP 更加先进,在这篇文章里他们详细介绍了两种方案的区别,QUIC 接入的过程以及接入后的网络延迟数据。
+
+### 🐕 [Mocking a remote API in iOS](https://medium.com/swlh/mocking-a-remote-api-in-ios-4376b0cab962)
+
+[@xiaofei86](https://weibo.com/xuyafei86):本文作者使用简单的代码演示如何通过面向协议的方式 Mock 网络层数据,并说明 Mock 数据的重要性和好处(模拟网络延迟、网络错误,跳过登录等)。我们在实现自己的网络层时可以借鉴。
+
+### 🌟 🐕 [知乎 iOS 客户端工程化工具 Venom](https://www.jianshu.com/p/b65d7bb7fa32)
+
+[@红纸](https://github.com/nianran):Venom 取名于《毒液》,是知乎客户端组解决组件化集成协作于一体的组件化管理体系,完整的 Venom 包含三个部分:
+
+1. Venom macOS App:可视化管理组件的集成 GUI 工具
+2. Venom 内核:基于 Cocoapods 的 DSL 扩展,在包装之上还有指定的扩展元素,最终还是会转化为 pod 相关的配置进行操作
+3. Venom Server:远端 Server 管理配置等
+
+其主要解决了以下几个组件化核心问题:
+
+1. 工程构建:锁定了依赖 Gem 工具集版本和 Cocoapods 版本,保证里项目构建环境的统一,开发人员无需莞城工程配置问题
+2. 二进制构建:Venom 可以看做为 pod 的超集,提供了,源码于静态库切换管理的相关功能,切换方案参考[知乎 iOS 基于 CocoaPods 实现的二进制化方案](https://links.jianshu.com/go?to=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F44280283)。
+3. 组件管理:定制化的本地组件开发(类比于 Cocoapods 中的 :path 情况下开发),其他仓库可以指定任意 tag/commit/branch(类比于 Cocoapods 中的 :git 情况下开发)
+4. 调试工具:据文中描述,Venom 可以做到源码与静态库“共存”。这样的全局搜索就会包含全部源码不会含有遗漏的地方,另外打包使用 GCC 的 **fdebug-prefix-map=oldPath=newPath** 参数改写 Debug 模式下的源代码路径,达到静态库到源码的快速切换,达到编译调试源码的效果
+5. 其他:此外还提供了一些其他的项目定制化功能,类似于“蜂鸟”的图片扫描工具,项目证书管理等
+
+> 扩展阅读:[滴滴的 OneTool](https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247488098&idx=1&sn=9cdf45a7b5ccf94eb6279856ec0dd4c5&chksm=f951a721ce262e3737f8aa99663c3b34f86420f11fb70ce6208eb96bcf6e10c6fbd00e4fb234&scene=27#wechat_redirect) 与 [京东的 iBiu](https://www.infoq.cn/article/jd-ios-component-management/)
+
+### [做有温度又有生命的产品,专访色采团队](https://mp.weixin.qq.com/s/GvECV6nKYpfNJJ86EJ3dIg)
+
+[JimQ](https://github.com/waz0820) 这是「Price Tag」对色采 APP 主创的一篇专访,谈了产品的整体概况、发展历程、产品初衷、产品特色、曾遇到的挑战、团队成员的协作方式,尤其 APP 属于三位全职工作者的业务爱好产出,谈到他们对「独立开发者」的理解,对独立开发感兴趣的小伙伴推荐阅读。
+
+## 工具
+
+### [Flutter Studio, Version 2](https://medium.com/@pmutisya/flutter-studio-version-2-41cce10fcf3d)
+
+[@张嘉夫](https://github.com/josephchang10):Flutter Studio web 应用的更新目标是更灵活、更完整、响应速度更快并且具有更高的精度。app 现在可以更好地适应不同尺寸的屏幕,在各类设备的各种方向上都精确显示,让你更一致、更专注地工作。此外 Flutter Studio 2 现在还可以生成完整的、可运行的代码和构建文件,并且具有更完整的 widget 集,甚至有一些从未在 flutter.io 的 widget 目录里出现过。
+
+## 代码
+
+### 🌟 [SwiftWebUI](https://github.com/swiftwebui/SwiftWebUI)
+
+[@Damonwong](https://github.com/Damonvvong):目前 SwiftUI 无疑已经成为 iOS 开发者必须要关注的技术了。但是 Apple Only 的跨平台理念还是让不少人有一些许失望。
+
+但是,上周一个曾在 Apple 工作的开发者 [Helge Heß](https://github.com/helje5) 就打破了 Apple Only 的跨平台格局,在 SwiftUI 的基础之上,开发了一个 SwiftWebUI 框架,可以使用 Swift 直接写 Web 页面。
+
+虽然,目前还处于 Demo 阶段,但是我觉得这是一个特别值得期待的技术。关于如何使用,这里有一篇介绍,感兴趣的可以阅读以下。[The missing ☑️: SwiftWebUI](http://www.alwaysrightinstitute.com/swiftwebui/?from=singlemessage&isappinstalled=0)
+
+### [ValidatedPropertyKit](https://github.com/SvenTiigi/ValidatedPropertyKit)
+
+[@JimQ](https://github.com/waz0820):我们日常开发中,经常需要对定义的属性值加上约束条件,于是就需要重写这个属性的 `set`/`get` 方法,并加上各种约束逻辑。约束逻辑可能很简单(eg. 如果一个 string 属性 `isEmpty`(即长度为 0)则自动转换为 nil),但又很通用,或者对我们的业务来说很常用。这样的逻辑多了,我们的属性定义就变得冗长且重复。主说要有封装,于是就有了 `ValidatedPropertyKit`。它主要包含以下特性:
+
+- 基于 @propertyWrapper 语法糖,让验证属性变得轻松而简洁。
+- 内置了很多通用的验证,方便开箱即用。支持检测当前的值是否符合指定的验证,如果不符合可以回退到最后一次符合验证时的值,且支持给属性指定 keyPath 加验证。
+- 支持使用逻辑运算符(即与或非)来组合验证。
+- 可以根据自己的需求灵活地定制和配置,方便针对自己业务的常用逻辑进行统一封装。
+
+相信受此启发,会有更多基于 @propertyWrapper 的库出现(比如与 diff 的结合),让我们的属性实现变得更加优雅、美好。
+
+### [Burritos](https://github.com/guillermomuntaner/Burritos)
+
+[@Parsifal](https://weibo.com/parsifalchang):`@propertyWrapper` 作为 SwiftUI 广泛使用的特性(`@State`, `@Binding`, `@ObjectBinding`, `@EnvironmentObject`, 和 `@Environment` 等),已经在 WWDC19 中被大家所熟知。Burritos 则是利用这个特性,扩展了更多的 Property Wrapper 便于使用,如常见的 `@DynamicUIColor`、`@UserDefault` 和 `@DefaultValue` 等都能有效地减少我们的编码量。
+
+> 扩展阅读:
+> [Property Wrappers Proposal](https://github.com/DougGregor/swift-evolution/blob/property-wrappers/proposals/0258-property-wrappers.md)
+> [SwiftUI 和 Swift 5.1 新特性(2) 属性代理Property Delegates](https://juejin.im/post/5cfcf51151882518e845c17c)
+>
+
+### [TGIF-iMatrix/MXFlutter: 基于JS的高性能Flutter动态化框架](https://github.com/TGIF-iMatrix/MXFlutter)
+
+[@tom510230](https://xiaozhuanlan.com/u/6682065345):来自于手机 QQ 团队的开源代码,主要是解决 Flutter 开发中的痛点:不能动态化。原理大致就是:在上层用自己喜欢的开发语言进行 UI 控件的声明(通常也是脚本语言),然后丢给 Flutter 的渲染引擎进行渲染,从而达到了动态化开发的目的。
+
+整体架构如下:
+
+
+> 扩展阅读:
+> [基于JS的高性能Flutter动态化框架MXFlutter](https://user-gold-cdn.xitu.io/2019/6/25/16b8cec2d34ded87)
+
+## 书
+
+### [Using Combine](https://heckj.github.io/swiftui-notes/)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): WWDC19 上大放异彩的 SwiftUI 相信大家都不陌生了,刚开始那几天,你几乎可以从各类开发者社区新闻中看到关于它的文章和评论之类,但是在其背后还有一个重要的彩蛋被忽视了,那就是 Combine 。Combine 是随着 SwiftUI 一起发布的一款函数响应式编程框架,如果你之前有接触过 RxSwift/ReactiveCocoa ,你就能明白 Combine 是个什么东东,他们有相似点,但 Combine 也有自己的独到之处,关键是由官方发布。[Using Combine](https://heckj.github.io/swiftui-notes/) 这本书可谓是手摸手教你使用 Combine, 更棒的是,书中很多例子是从 [swiftui-notes](https://github.com/heckj/swiftui-notes) 直接摘过来的,搭配食用效果更佳哟😄,本书开源的哟...
+
+## 内推
+
+### 字节跳动 2020 届提前批内推
+
+**字节跳动**面向 2020 届毕业生的【秋招提前批】限时开启,**iOS/Android 客户端、前端,后端、测试开发等**岗位均开放名额,直走**内推通道**,提前拿 offer。
+
+- 简历发送至:[zengming.0@bytedance.com](mailto:zengming.0@bytedance.com) (推荐标题:校招提前批-岗位-姓名-城市),如:校招提前批-iOS客户端-王富贵-北京
+- **不影响**后续秋招再次投递,欢迎转发~
+- 有效时间截止 2019.07.17
+
+PS:王富贵表示:这是个很好的机会哟,走过路过不要错过 (~o ̄3 ̄)~
+
+### 常规内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
diff --git a/Reports/2019/#75-2019.07.15.md b/Reports/2019/#75-2019.07.15.md
new file mode 100644
index 000000000..d8d01d918
--- /dev/null
+++ b/Reports/2019/#75-2019.07.15.md
@@ -0,0 +1,127 @@
+# 老司机 iOS 周报 #75 | 2019-07-15
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## 文章
+
+### 🐎 [为什么Flutter是跨平台开发的终极之选](https://mp.weixin.qq.com/s/R0sk9CGPbBksSnWV9xtGSg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):跨平台开发是当下最受欢迎、应用最广泛的框架之一。能实现跨平台开发的框架也五花八门,让人眼花缭乱。但目前最耀眼的非 Flutter 莫属。本文对 Flutter 进行了多个方面的分析,来阐述为何 Flutter 是目前跨平台开发的终极之选。
+
+- 什么是 Flutter
+- Flutter 特性
+- Flutter 构建工具
+- 使用了 Flutter 的热门 app
+
+
+### 🌟 🐎 [基于小程序技术栈的微信客户端跨平台实践](https://mp.weixin.qq.com/s/V-H3pF9ytfXRhZG0PGIKsw)
+
+[@莲叔](https://weibo.com/aaaron7):跨平台是今年热点,本文简单讲述了微信使用小程序技术栈的跨平台框架演进之路,并且先后通过 lvcpp 以及 flutter 改造渲染底层来提升整体表现的性能。今年使用 flutter 渲染层+自定义上层 DSL 的尝试越来越多,不得不说是比较创新的一个思路,毕竟渲染层跨平台才是真正意义的跨平台。
+
+### 🐕 [Web 和移动端需要掌握的布局方式 - Flexbox](https://mp.weixin.qq.com/s/WVqnmIbIkxsvBMhHydwHAg)
+
+[@享耳先森](https://github.com/iblacksun):布局一直是用户端开发的重点,`Flexbox` 布局解决了原来 CSS 盒子模型的一些不便之处。 `Flexbox` 已不止用于 CSS:如 Android 的 `FlexboxLayout`、ReactNative 所使用的 `yoga`,都支持 `Flexbox`。本文浅显的介绍了 `Flexbox` 的基本用法,建议阅读。
+
+### 🌟 🐕 [关于iOS离屏渲染的深入研究](https://zhuanlan.zhihu.com/p/72653360)
+
+[@老峰](https://github.com/GesanTung):在平时的 iOS 面试中,我们经常会考察有关离屏渲染(Offscreen rendering)的知识点。一般来说,绝大多数人都能答出“圆角、mask、阴影会触发离屏渲染”,但是也仅止于此。
+
+本文来自即刻技术团队,从 iOS 渲染架构开始深入的介绍了离屏渲染定义、常见离屏渲染场景、离屏渲染的性能影响,以及即刻团队对如何正确使用离屏渲染的思考、渲染性能的优化实践心得。
+
+推荐阅读:
+- [Mastering Offscreen Render](https://github.com/seedante/iOS-Note/wiki/Mastering-Offscreen-Render)
+- [Getting Pixels onto the Screen](https://www.objc.io/issues/3-views/moving-pixels-onto-the-screen/)
+- [Andy Matuschak关于离屏渲染的解释](https://lobste.rs/s/ckm4uw/performance_minded_take_on_ios_design#c_itdkfh)
+
+### 🐕 [Swift vs Flutter - A side by side comparison for iOS development [Infographic]](https://blog.codemagic.io/flutter-vs-swift/)
+
+[@张嘉夫](https://github.com/josephchang10):在这篇文章里,作者逐一对比了 Flutter 和原生 iOS App(Swift)之间的差异。为了比较,作者构建了两个完全相同的 app,帮助你选择更符合你的需求的平台。具体来说,作者比较了两个平台的创建流程、构建时间、重新加载、Profiling、辅助功能、持续集成、App 尺寸等方面。如果觉得文章太长,也可以直接看文末的对比图。
+
+### 🌟 🐕 [iOS 自动化测试标签生成工具接入指南](http://yulingtianxia.com/blog/2018/08/13/TBUIAutoTest-Usage/)
+[@水水](https://www.xuyanlan.com/):[TBUIAutoTest](https://github.com/yulingtianxia/TBUIAutoTest) 可以帮开发人员生成UI 控件的标签,便于自动化测试。只需一行代码或一个配置,几乎所有的 iOS Native UI 都会在运行时生成一个页面内唯一且不变的标签。不仅节省了开发人员手动为每个 UI 控件加标签的时间,也节省了测试人员与开发人员的沟通成本。目前已经有几十款 App 接入,其中包含 QQ、今日头条、兴趣部落、NOW直播等,有兴趣的读者可以尝试接入或学习实现哦~
+
+### 🐢 [给 React Native 开发者的 Flutter 指南](https://mp.weixin.qq.com/s/MyFjQJqojviYJuQKf5MsGA)
+
+[@looping](https://github.com/looping):本长文分为上下两篇,从基本语法到布局动画,通过跟 React Native 作对比来帮助更多 RN 开发者快速入门 Flutter 开发。同时本文所列的一些基本概念和问题可以满足平时开发的大部分需求,可作日常开发参考,建议收藏。
+
+### 🐕 [Swift Property Wrappers](https://nshipster.com/propertywrapper/)
+
+[@Damonwong](https://github.com/Damonvvong):要说 Swift 5.1 最期待的特性,那就非 **Swift Property Wrappers** 莫属了,把原先兼容 Objective-C 的 **@** 终于解放出来了,赋予了更多能力。NSHipster 的这篇文章就很好的解释了 **Swift Property Wrappers** 是什么以及可以怎么用。大概列举了一下几个用处:
+
+- 约束变量值
+- 修正输入的值。比如过滤输入值中的空格。
+- 修正比较逻辑。比如忽略字符大小写进行比较。
+- 记录值的变化
+
+当然还有一些限制,比如无法参与错误处理、不能被别名、多个 **Property Wrappers** 难以组合、第一类型不能直接依赖 **Property Wrappers**、文档写起来很难、使 Swift 更加的复杂等等。
+
+### 🐕 [UIStackView](https://nshipster.com/uistackview/)
+
+[@zvving](https://github.com/zvving):早在 iOS9 苹果就引入 UIStackView 来支持类似 Flexbox 的容器布局概念,最新发布的 SwfitUI 中也有对应 HStack、VStack、ZStack 的定义。如果你还没使用过这一简单而又灵活的布局方式,强烈推荐 NShipster 刚发布的这篇入门文章。
+
+
+## 工具
+
+### [UIKit equivalent in SwiftUI](https://goshdarnswiftui.com/)
+
+[@Parsifal](https://weibo.com/parsifalchang):SwiftUI 吸引了众多开发者尝试,这个网站整理了关于新手入门 SwiftUI 需要了解的一系列东西。包含:
+
+- SwiftUI 的高频 FAQ
+- UIKit 与 SwiftUI 的组件对照表
+- SwiftUI 视图和控件简单介绍和使用
+- SwiftUI 复杂布局介绍和使用
+- 如何在 SwiftUI 中集成 UIKit 组件
+- 如何在 UIKit 中集成 SwiftUI 组件
+- 优质学习资源链接
+
+如果你刚接触 SwiftUI,这个网站可以帮你更快速地掌握基于 SwiftUI 的 App 开发,也可以作为平常开发中的速查表使用。
+
+> 由喜欢瞎倒腾的 [Liaoworking](https://github.com/Liaoworking) 推荐
+
+### [Visual-Regular-Expression](https://github.com/White-White/Visual-Regular-Expression)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):`Visual-Regular-Expression` 是使用 Swift 实现的正则解析引擎,将解析结果转换成 NFA,并动态展示每一步的匹配过程。它可以帮助你更好的理解正则和 NFA 的运行原理。
+
+### [CocoaPods 历险 - Resolver 仲裁入口解析](https://mp.weixin.qq.com/s/o-v41MlTAX2Oeg_BeSLKEw)
+
+[@xiaofei86](https://weibo.com/xuyafei86):在系列文章 [CocoaPods 历险 - 总览](https://www.desgard.com/cocoapods-1) 中我们得知了 CocoaPods 组件的构成和职责,以及 pod install 命令执行后 prepare、resolve_dependencies、download_dependencies、validate_targets、generate_pods_project 过程的总览。其中,resolve_dependencies 过程中包含了 Resolver 的入口过程以及 Molinillo 仲裁算法,本篇文章则以 入口过程的解析为主题展开。后续会具体深入到 Molinillo 图算法中去认识仲裁流程。
+
+## 代码
+
+### [Swift-30-Projects/Project 04 - TodoTDD](https://github.com/soapyigu/Swift-30-Projects/tree/master/Project%2004%20-%20TodoTDD)
+
+[@Parsifal](https://weibo.com/parsifalchang):iOS 专家[故胤道长](https://weibo.com/soapyigu) 在读完 [Test-Driven iOS Development with Swift 4](https://www.amazon.com/Test-Driven-iOS-Development-Swift-maintainable/dp/1788475704) 一书后尝试写了个 ToDoList 的 Demo App 来应用这门技术。这个简单的例子包含了如何写单元测试、UI 测试、网络层测试和数据层测试等等。整个 App 的测试覆盖率达到了 91.9%。
+
+> [Swift-30-Projects](https://github.com/soapyigu/Swift-30-Projects) 是[故胤道长](https://weibo.com/soapyigu) 在维护的一个基于 Swift 的开源仓库,内容包含如何使用 Swift 开发常规 iOS App、各类开源框架、设计模式以及 TDD 等。如果你正在入门学习 Swift,这个仓库可以帮你更快了解到 Swift 老手们是如何使用 Swift 开发 App 的。
+
+> 关于 TDD 的入门,可以参考周报 [26 期](https://github.com/SwiftOldDriver/iOS-Weekly/blob/59bfdf3859a67d5667319000e4ee70f8f9cd6f76/Reports/%2326-2018.07.09.md)推荐过的 [Test Driven Development Tutorial for iOS: Getting Started](https://www.raywenderlich.com/185640/test-driven-development-tutorial)。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#76-2019.07.22.md b/Reports/2019/#76-2019.07.22.md
new file mode 100644
index 000000000..718621757
--- /dev/null
+++ b/Reports/2019/#76-2019.07.22.md
@@ -0,0 +1,115 @@
+# 老司机 iOS 周报 #76 | 2019-07-22
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 🐢 [Facebook 发布全新 JS 引擎!专注提高 React Native 应用的性能](https://mp.weixin.qq.com/s/0KxLQjI0jWxSt7sLqkS6Hw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):React Native 作为老牌的跨端开发解决方案,在跨端开发技术栈中的地位一直稳如泰山,最近 Facebook 发布了全新的 JavaScript 引擎 - Hermes,其专注于提高 React Native 应用的性能,之前一直诟病 React Native 性能问题的同学们可以试试了,小编友情提示:本次发布的 React Native 0.60 版本还有其他惊喜。
+
+## 文章
+
+### 🌟 🐢 [SwiftUI:苹果的一次天才尝试](https://mp.weixin.qq.com/s/xcPBHcpPhgwoR2U7WpWoPA)
+
+[@Parsifal](https://weibo.com/parsifalchang):作者使用 SwiftUI 构建网易严选的 iPad 版本后,回过头来假设自己是 SwiftUI 设计者,来循序渐进分析 SwiftUI 是如何博众家之长以现在的样子亮相 WWDC19。SwiftUI 有两个最突出的特点:基于 Swift 的 DSL 以及基于数据流驱动的编程范式,文中则也是从这两个点出发,分析了现阶段流行的各类语言采取的方案,且猜测了苹果是如何从这些方案中找到最适合 SwiftUI 的解决思路。SwiftUI 得益于 Swift 对其的全力支持,使得更容易设计出对开发者十分友好的开发体验。
+
+最后,作者还在对 SwiftUI 的评价中提出了一个比较有意思的观点 - “Combine 所提倡的响应式编程不适合处理 UI、交互逻辑”。响应式编程是使用异步数据流进行编程,它把从用户触发交互到逻辑处理再到交互反馈用户,当做信号源触发的逻辑链路上的数据变化进行处理,而 Combine 正是苹果借鉴了目前社区内的多种实现方案完成的为 SwiftUI 配套定制的数据管理方式。那么苹果最终所选择的这种编程范式,是否真的适合 SwiftUI 呢?又或者说如果不用 Combine 我们有没有其他更合适的选择?作者抛出了一个很值得大家继续讨论的观点。
+
+> 关于响应式编程,周报编辑 [JasonYu](https://weibo.com/jasonyuh) 曾写过 - [为什么需要 Reactive Programming?](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/Reports/2019/%2366-2019.05.06.md) 一文,也很值得大家品味。
+
+### 🐕 [[译] 使用 Swift 5 构建 iOS 移动端群聊 App](https://juejin.im/post/5d2c6e846fb9a07ebb0564ae)
+
+[@老峰](https://github.com/GesanTung):本文介绍了以 PubNub SDK 基于类 MQTT 的消息订阅发布即时通信协议构建匿名聊天应用的实现过程,采用 Swift 5 简易实现了消息实时发送接收,存储历史消息功能,感兴趣的读者可以点这里[查看源码](https://github.com/SambaDialloB/PubNubChat)。
+
+> [🚧 PubNub](https://www.pubnub.com/docs/swift/pubnub-swift-sdk):为移动终端和网络应用开发提供实时信息通讯服务,现已有 70 多个 SDK,可以支持各种 App 和服务集成进自己的网络,提供每个月一百万条免费的消息。
+
+### 🐕 [Building a Trello-like iOS App with Drag & Drop API](https://www.appcoda.com/drag-and-drop-api/)
+
+[@张嘉夫](https://github.com/josephchang10):AppCoda 的教程,教你如何用 Drag & Drop API 来构建一个类似 Trello 的 iOS App。如果我们想让用户能够在屏幕上来回移动数据,那拖拽就是最自然的交互方式,Trello、Jira 等 app 大量采用了拖拽的交互方式。在 iOS 11 SDK 发布之前,iOS app 的拖拽功能实现非常复杂,也很难让体验足够流畅。但从 iOS 11 开始,Apple 终于在 Cocoa Touch SDK 中提供了方便使用的 Drag & Drop API。
+
+
+### 🌟 🐎 [KVO在不同的二进制中多个符号并存的Crash问题 | SatanWoo](https://satanwoo.github.io/2017/09/11/KVO-CRASH/?nsukey=CGyordgRh0EV35bjBYi99dHiMuqF1xt%2BtRsP%2FuGBF7IlcF2xAPOWpoImKYOT%2FxRuycrPVoVq%2FAxxvVxVwandzgpmXxbcdacSBLOG2moVviVdV3iK1Wr6sfqIHRWSsJZHtiX5uyyn8g5bNuRNQVJ2ow7eT%2FLYHcfZOXOdcX8m0R5lQwwNwX7PanbfrnV1dPAmU2CwRfiaiYpGGCZYQCxmxg%3D%3D)
+
+[@莲叔](https://weibo.com/aaaron7):熟悉 iOS 动态库的同学都知道,由于iOS 的机制设计,在主文件和动态库中是允许存在同名类的,但这个机制也有潜在的坑,既和 KVO 的机制存在冲突,导致 crash。本文作者详细分析了这个坑的来龙去脉,并附带介绍了很多 iOS 的 runtime 相关知识,信息量很大,推荐阅读。
+
+### 🐢 [Swift5.0 的 Runtime 机制浅析](https://juejin.im/post/5d29fb63e51d4510aa01159d)
+
+[@AidenRao](https://weibo.com/AidenRao):Objective-C 的 Runtime 机制大家了解的比较多,而 Swift 底层原理研究文章比较少。作者通过与 OC 的对比,以及将程序运行时的汇编代码,翻译成 C 语言伪代码,向你解析 Swift 中内部对象是如何创建的,方法以及函数调用又是如何实现,成员变量的访问以及对象内存如何布局。
+
+### 🐎 [Better Storyboards with Xcode 11](https://useyourloaf.com/blog/better-storyboards-with-xcode-11/)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了苹果在 Xcode 11 中,关于 Storyboard 的两个改进。第一个改进是 Segue Action。在 Storyboard 跳转之前,我们可以使用 Segue Action 来手动初始化目标控制器。第二个改进是 instantiateViewController 方法。在 iOS 13 以后,我们可以使用这个方法提供的构造 block 来实现我们的自定义控制器的构造函数。
+
+### 🐎 [如何写出让同事无法维护的代码?](https://mp.weixin.qq.com/s/dHu36KMryF3HFPcMUXLnqA)
+
+[@tom510230](https://xiaozhuanlan.com/u/6682065345):本文举出了大量的例子,来阐述糟糕的代码长得什么样,有以下六个部分
+
+1. 程序命名:糟糕的命名带来糟糕的阅读心情
+2. 伪装欺诈:表面和行为不一致会让代码维护性下降很多
+3. 文档和注释:文档和注释跟代码一样需要维护
+4. 程序设计:多看看最佳实践会让代码写起来更优雅
+5. 测试:测试先行对于代码质量有很大的帮助
+6. 其他
+
+总体而言,如果以上的例子全部都避免了,那代码的可读性就非常强了,读者不妨看看自己的代码,有哪些地方命中了文中的 bad case ,并做出相应的修改。
+
+## 工具
+
+### [2019年最优秀的JIRA项目管理工具替代方案](https://mp.weixin.qq.com/s/zYfBXRfjI4eLNK6BX6vY-Q)
+
+[@anotheren](https://github.com/anotheren):项目管理是大家到一定阶段后所必须面对的。本文列举了 12 种可以替代 JIRA 的项目管理工具。如果你还没有用过任何一种,是时候尝试一下了。
+
+### [SwiftUI-Cheat-Sheet](https://github.com/SimpleBoilerplates/SwiftUI-Cheat-Sheet)
+
+[@水水](https://www.xuyanlan.com/):一个 SwiftUI 相关的一些 API 使用示例,当你使用 SwiftUI 时,可以快速获取到相关代码用于参考。
+
+### [XCAssetsKit](https://github.com/natmark/XCAssetsKit)
+
+[@JimQ](https://github.com/waz0820):.xcassets 解析器,Swift 实现。.xcassets 的功能越来越强大,系统也提供了很多工厂方法去使用其中的资源,比如 `UIImage(named:)`。但新增的 API 无法用于旧版系统,比如 `UIColor(named:)`,iOS 11 以下就无法使用。这个时候 XCAssetsKit 就派上用场了,它可以精准读取 .xcassets 中的资源,用于各种自定义需求。目前已支持几种常用的资源解析,仍在不断完善。
+
+## 代码
+
+### [NSAttributedStringBuilder](https://github.com/ethanhuang13/NSAttributedStringBuilder)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):这是使用 SwiftUI 样式语法实现的 NSAttributedString 功能,和传统上使用 NSAttributedString 不同,现在使用 NSAttributedStringBuilder,可以使用类似 SwiftUI 的语法来声明 NSAttributedString。除了更清晰的 NSAttributedString 语法之外,由于 NSAttributedStringBuilder 使用了函数构造器,它还允许 API 在 UIViewRepresentable 中构建组件。
+
+### [Runtime](https://github.com/wickwirew/Runtime)
+
+[@四娘](https://kemchenj.github.io):一个基于 Metadata 的 Swift 运行时库,可以很方便地查看类型信息,并且动态地调用属性 getter 和 setter:
+
+```swift
+let info = try typeInfo(of: User.self)
+let property = try info.property(named: "username")
+let username = try property.get(from: user)
+try property.set(value: "newUsername", on: &user)
+```
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#77-2019.07.29.md b/Reports/2019/#77-2019.07.29.md
new file mode 100644
index 000000000..de8f58855
--- /dev/null
+++ b/Reports/2019/#77-2019.07.29.md
@@ -0,0 +1,157 @@
+# 老司机 iOS 周报 #77 | 2019-07-29
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🌟 [Flutter-Notebook](https://github.com/OpenFlutter/Flutter-Notebook/blob/master/README.md)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter-Notebook 由 OpenFlutter 小组产出,包含了很多常规移动端开发的组件/效果实现, 在目录的最后还附上了一本 [Flutter in Action](https://github.com/flutterchina/flutter-in-action), 着实为一份 Flutter 入门学习不可多得的资料:
+
+- 官方控件效果实现
+ - 视图
+ - 功能
+ - 动画
+- 优秀三方库
+- 状态管理
+- 其他
+
+## 文章
+
+### 🐕 [What’s New in Natural Language APIs in iOS 13](https://www.appcoda.com/natural-language-apis-ios-13/)
+
+[@AidenRao](https://weibo.com/AidenRao):去年,Apple 推出了 [NaturalLanguage](https://www.appcoda.com/natural-language-processing-swift/) 框架,用于分析自然语言文本并推导其特定于语言的元数据。你可以将此框架与 Create ML 配合使用来训练和部署自定义 NLP 模型。
+
+iOS 13 上此框架更新了新功能
+- 内置情感分析,对文本进行 -1.0 到 1.0 的打分,确定一组文本是积极还是负面。
+- 单词标记,单词应用标记系统,可用于模糊搜索,相似物品推荐系统。
+- 自定义单词嵌入,用于自定义单词标记模型,控制推荐算法。
+- 文本目录,用于将同类型词汇按组标记,建立简单的单词标记模型。
+
+### 🐕 [Generalizing Swift code](https://www.swiftbysundell.com/posts/generalizing-swift-code)
+
+[@张嘉夫](https://github.com/josephchang10):判断某一块代码是否需要重构往往是件很棘手的事。虽然采用可复用的函数或类型可以大大减少代码冗余,但过于抽象的代码会导致难以阅读和维护。在这篇文章里,作者通过几个关键因素来帮助我们最大程度地重用代码,同时又能够避免让代码过于复杂或难以理解,从而取得良好的平衡。
+
+### 🚧 🐕 [Flutter: the good, the bad and the ugly](https://medium.com/asos-techblog/flutter-vs-react-native-for-ios-android-app-development-c41b4e038db9)
+
+[@looping](https://github.com/looping):作者在用 Flutter 开发了一款应用后,总结了 Flutter 的一些特性和自己使用后的心得体会,整体感觉是 —— “Not bad” —— 还不错。本文虽然是大半年前写的,但还是可以当作技术选型的避坑指南来参考。
+Flutter 的好处就不用多说了,列下作者比较在意的几个点:
+
+- Flutter 社区还比较小众,贡献者不算多,最佳实践偏少,组件不够丰富,出错调试也比较费神(社区是在逐步扩大的,但选型时还得看团队能力和工作饱和度,能不能自己消化一些问题)。
+- UI 层自己绘制,样式跟系统有脱离,在系统控件设计发生改变的时候,还得依赖社区升级相关组件(国内大部分应用界面的控件都是定制化的,即使原生开发也会面临这样的问题,不过 Flutter 会暴露的更加明显)。
+- 跟原生混编以及平台差异化设计(某功能只在某端有,或者界面表现不一样等)会使整体结构变得复杂,在投入使用时就要考虑好后期的维护性(这个是跨平台框架的通病,要避免在过于复杂的业务场景上使用)。
+
+### 🐎 [域名背后那些事](https://leancloudblog.com/Domain-Name-Story-confirm/)
+
+[@莲叔](https://weibo.com/aaaron7):很多没有建站经验的童鞋对于域名唯一的了解就是它作为 IP 别名的作用,其实域名背后的学问有很多。正确的了解域名解析的知识可以让我们在设计底层网络模块的时候更有信心,并实现更优雅的网络层解决方案,比如近期在移动端非常流行的 HTTPDNS 技术,就是从域名解析的原理出发,巧妙的解决了劫持问题。leancloud 这篇文章较为体系的介绍了域名的组成结构以及 DNS 服务器进行域名解析的基本流程,还扫盲了常见的域名记录类型以及作用,非常适合不熟悉域名的童鞋们阅读。
+
+### 🐕 [CAEmitterLayer](https://nshipster.com/caemitterlayer/)
+
+[@J_Knight_](https://github.com/knightsj):本文作者 Mattt 介绍了 CAEmitterLayer 的使用方法,并结合代码展示了如何使用 CAEmitterLayer 和 CAEmitterCell 来实现一个从上方自然落下的纸屑效果。在文章末尾,作者还给出了实现同一效果的7种不同的方案:
+
+ - SpriteKit Particle System
+ - SceneKit Particle System
+ - UIKit Dynamics
+ - HEVC Video with Alpha Channel
+ - Animated PNGs
+ - WebGL
+
+对粒子发射器效果有兴趣的读者可以看一下这篇文章。
+
+### 🌟 🚧 🐕 [Reducing Memory Footprint and OOM Terminations in iOS](https://medium.com/flawless-app-stories/techniques-to-reduce-memory-footprint-and-oom-terminations-in-ios-a0f6bef38217)
+
+[@红纸](https://github.com/nianran):当应用程序消耗太多内存,就会被系统杀掉。占用过多的内存空间会增大被查杀的概率。在本文中,作者介绍了多种图片处理技巧,让我们更好的减少内存的占用,总结如下:
+
+1. 更换色彩空间 sRGB(8位) 代替 DisplayP3(16位)。
+2. 利用 UIGraphicsRenderer 同时绘制同一矩阵内图像(🌰:聊天头像),使用 UIGraphicsRenderer 也可以复合图像,其只需要占用一帧大小即可。
+3. UIGraphicsRenderer 会自动识别使用 DisplayP3,而 UIGraphicsBeginImageContextWithOptions 最多使用 sRGB。
+4. 在瀑布流这种滚动展示图片列表中,可以使用计时器统计活动中的图片,为活动中的图片加载剩余的部分。
+5. 使用更小的图片,很多图片服务商可以对图片进行预处理下发(参考:[七牛云图片预处理](https://developer.qiniu.com/dora/manual/1270/the-advanced-treatment-of-images-imagemogr2))
+6. 更好的管理缓存,在进入后台的时候都可以进行清理(例如,URL 缓存、已存入磁盘的图片内存缓存)。
+7. 在出现内存警告,对于不可见的页面,可以进行清除操作。
+8. 检查代码的内存泄露。
+9. 不用清除基于 NSDictionary 的缓存,应使用 NSCache([原因](https://developer.apple.com/videos/play/wwdc2018/416/))。
+
+### 🌟 🐎 [Managing background tasks with the new Task Scheduler in iOS 13](https://medium.com/snowdog-labs/managing-background-tasks-with-new-task-scheduler-in-ios-13-aaabdac0d95b)
+
+[@zvving](https://github.com/zvving):iOS 13 中苹果引入 `BackgroundTasks framework`,力求在提供流畅用户体验与延长电池使用时间之间找到平衡。本文可以快速了解后台任务的新变化:
+
+- `Background fetch mode`:规则与之前一样是 30s 执行时间,介绍如何使用新框架的 BGAppRefreshTask 实现
+- `Background processing mode`:新增的后台模式,可以持续几分钟高 CPU 占用运行(指定充电期间运行,可以避免因 CPU 占用过高被『杀死』)
+- 如何调试后台任务
+
+如果你希望了解更多,移步[全新后台任务框架及最佳实践](https://xiaozhuanlan.com/topic/1806594273)有更详细的介绍。
+
+### 🐕 [Unused images and resources clean up in Xcode](https://www.avanderlee.com/optimization/unused-images-clean-up/)
+
+[@老峰](https://github.com/GesanTung):本文作者总结分享了以下三个清理项目无用资源文件,清理 Xcode 无用缓存文件的开源工具:
+
+- [FengNiao](https://github.com/onevcat/FengNiao/blob/master/README.md):作者是 @王巍(onevcat) , 是一款简单的命令行工具可删除项目无用的资源文件。
+- [LSUnusedResources](https://github.com/tinymind/LSUnusedResources):作者是 @tinymind,是一款图形界面的 Mac 应用也是用来删除项目无用的资源文件。
+- [DevCleaner](https://github.com/vashpan/xcode-dev-cleaner):作者 @vashpan ,是一款图形界面的 Mac 应用,可清理 Device Support、Archives、Derived Data下无用的缓存文件,磁盘紧张的同学可以试试。
+
+> Tips:[FengNiao](https://github.com/onevcat/FengNiao/blob/master/README.md) 和 [LSUnusedResources](https://github.com/onevcat/FengNiao/blob/master/README.md) 实现原理相似,都是遍历资源目录下后缀 ["imageset", "jpg", "png"...] 的文件,然后在源文件 ["m", "swift", "xib", "storyboard"...] 中字符串匹配,无匹配则是无用的资源文件。
+
+### 🐕 [Generate & Host your iOS Documentation](https://medium.com/@jonathan2457/generate-host-your-ios-documentation-39e21b382ce8)
+
+[@kyo](https://github.com/KyoLi):对于我们平时写的一些项目工程代码,常常需要写一些文档,否则不要说交接给别人,就是过几个月,如果没有文档,可能我们自己都不一定能完全理解。但是,随着工程的迭代,文档也常常需要更新,这需要我们花费很多时间在里面。而今天推荐的这款工具,可以帮我们自动的生成 iOS 文档,在文章中作者也简单示范了下,还是很容易上手的,推荐经常需要写文档的同学试一试。
+
+### 🐕 [Formatter - NSHisper](https://nshipster.com/formatter/)
+
+[@四娘](kemchenj.github.io):将数据转化为人类可读的文本格式是一个重要且复杂的任务,需要根据用户的国家,语言,时区和货币等因素进行格式化,仅仅使用对象的 `description` 是远远不够的,实际工作中我会用到一个存在于 Foundation 核心部分的类型 —— `Formatter`。
+
+本周 NSHisper 为我们介绍的就是 `Formatter` 这个重要的工具,文章里为我们列举介绍了 Apple 平台上 `DateFormatter` / `NumberFormatter` 等等各种不同的 `Formatter` 以及它们对应的用途,对于这些格式化工具不熟悉的同学都可以看一下。
+
+## 工具
+
+### 🌟 [免费又好用的 iOS UI 调试软件,Lookin 正式发布](https://mp.weixin.qq.com/s/FlGfb02ZOv9YLwCfEwIsjA)
+
+[@Parsifal](https://weibo.com/parsifalchang):Lookin 是微信读书团队出品的一款免费的 UI 调试工具,功能像 Xcode 自带的 UI Inspector 或者简版的 Reveal。除支持查看 UI 层级和视图信息外,还提供了方法监听功能,算比较实用的一个特性。目前虽然不能与强大的 Reveal 比较,但作为一款免费的功能软件,还是也比较推荐有相关需求的同学使用。
+
+
+## 代码
+
+### [DiffableDataSources](https://ra1028.github.io/DiffableDataSources/)
+
+[@享耳先森](https://github.com/iblacksun):Apple 在 WWDC 2019 新增了 `UITableView/UICollectionViewDiffableDataSource`,不过新 API 仅限 iOS 13,如需支持之前系统的话就用不了了,`DiffableDataSources ` 基于 [DifferenceKit](https://github.com/ra1028/DifferenceKit) 实现,提供了与官方近似的 API。
+
+### [M80TableViewComponent](https://github.com/xiangwangfeng/M80TableViewComponent)
+
+[@anotheren](https://github.com/anotheren):来自网易的 `UITableView` 的组件化解决方案,
+
+- 不用再和 IndexPath 及数组越界打交道
+- 权责分离,和冗长的 UITableView Adapter 说再见
+- UITableViewCell 自动重用
+- 数据驱动的构建方式
+- 安全的模型视图映射关系
+- 单向绑定
+- 灵活组装
+- 自动高度缓存和简单的高度预计算支持
+- 支持 ListDiff
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#78-2019.08.05.md b/Reports/2019/#78-2019.08.05.md
new file mode 100644
index 000000000..2b626ee99
--- /dev/null
+++ b/Reports/2019/#78-2019.08.05.md
@@ -0,0 +1,144 @@
+# 老司机 iOS 周报 #78 | 2019.08.05
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🌟 🐕 [swift-best-practices](https://github.com/Lickability/swift-best-practices)
+
+随着 Swift 的稳定,越来越多的项目开始尝试 Swift 这门「新」的语言,当然会有一部分新手不太清楚如何正确的在项目中使用 Swift。[swift-best-practices](https://github.com/Lickability/swift-best-practices) 就告诉了你答案。内容包括但不局限于这几点:基础 MVVM 结构、通用控制器类型、文档的编写等。
+
+### 🐕 [iOS 开发舆图](https://ming1016.github.io/2019/07/29/ios-map/)
+
+[@老峰](https://github.com/GesanTung):本文是来自戴铭的 iOS 开发全景图以及一些相关资料整理,成体系地罗列了 iOS 开发的知识点与技能栈,方便我们在日常开发中查漏补缺,主要包括以下内容:
+
+- iOS 基础:列表、布局、图标、图形、多媒体、AppServices、动画
+- iOS 系统:XNU、dyld、Mach-O
+- 编程语言
+- 开发工具
+- 计算机基础
+- 通用知识
+- 视野
+
+## 文章
+
+### 🌟 🐕 [Deriving Reactive from Imperative: An Introduction to Duals](https://jasdev.me/duals)
+
+[@莲叔](https://weibo.com/aaaron7):Swift 的函数式编程从 Swift 语言发布之初、宣布支持 First Class Function 开始,就一直备受关注,开源社区陆续贡献了 RAC4,RxSwift 等基于 Swift 函数式特性实现的、方便用户更轻松的在日常的业务开发中应用函数式特性的开发框架。最近 Apple 官方推出了 Combine 框架,给社区增加了更多的信心。
+
+虽然如此,但很多同学对函数式编程仍然觉得云里雾里,本篇文章开辟了一个新的视角,对比了命令式编程与函数式编程的其中一个分支:响应式编程, 并从函数式编程的角度,论证了一定程度上,响应式编程和命令式编程是对偶关系。作者首先从范畴轮的角度解释了什么叫对偶,并基于命令式编程中的 IteratorProtol 以及 Sequence,来对比响应式编程中的 Subscriber 和 Publisher,并用之前对于对偶的定义来论证了他们存在的对偶关系。
+
+整篇文章视角新颖,能够带给人很多思考,读起来不算轻松,建议花时间消化消化。
+
+### 🐕 [分析一个 App 需要的技术手段](https://mp.weixin.qq.com/s/ZmDd3tOkHwSqCCsG7kfokQ)
+
+[含笑饮砒霜](https://weibo.com/chinafishnews/):有时候看见喜欢的 App 可能会想要对它的实现一探究竟,本文作者以微信为例,站在逆向的角度,列举了分析一个 App 所需要的技术手段,包括:
+
+- 砸壳 - ipa 获取
+- 手机越狱
+- CaptainHook Hook 代码
+- Logos 语法
+- 查找可执行文件技巧
+- class-dump 使用
+- Cycript 调试程序
+- MachOView
+- 在 Cycript 和 LLDB 中使用私有的方法调试
+- 使用 NSInvocation 调用方法
+- 查看 App 中的字符串
+- UIDebug 工具
+
+使用上述技术手段,可以获取到 App 的相关信息,包括:
+
+- 头文件
+- 第三方库
+- UI 查看
+- 继承层级
+- 数据库设计
+- 沙盒目录
+- Pod 集成
+- 查看网络请求数据
+- 查看动态库
+
+推荐阅读
+- [WeChatRedEnvelop 抢红包](https://github.com/buginux/WeChatRedEnvelop)
+- [深入iOS系统底层之汇编语言](https://www.jianshu.com/p/365ed6c385e5)
+
+### 🐢 [iOS Memory 内存详解](https://juejin.im/post/5d3ee77ef265da039f1290b2#heading-2)
+
+[@J_Knight_](https://github.com/knightsj):本文以 iOS 内存作为主题,以一般的操作系统的内存机制、iOS 系统内存、iOS APP 内存管理等三个层面进行了介绍。在文章后面还提供了一些内存分析的方法以及参考资料。想比较全面了解 iOS 内存相关知识的读者可以看一下这篇文章。
+
+### 🐢 [Rule-based logic in Swift](https://www.swiftbysundell.com/posts/rule-based-logic-in-swift)
+
+[@享耳先森](https://github.com/iblacksun):对于系统设计而言,只考虑技术架构的话其实相对简单(比如使用 MVVM 还是其他架构模式),虽然架构模式非常重要,但我们还是可以通过对一些次要代码或结构进行改进来提升代码质量,所谓见微知著。本文通过 URL 匹配这一点入手,介绍如何将原来难以维护的代码抽象出一些规则来进行重构。
+
+### 🐎 [Swift 5 之后 "Method Swizzling"?](https://mp.weixin.qq.com/s/8z7A_-d0ZvvAJ3155DogvA)
+
+[@四娘](kemchenj.github.io):Swift 5.1 里新增了一个私有功能叫做 Dynamic Method Replacement,可以简单地理解为一个类型安全的 Method Swizzle。
+
+瓜神在这篇文章里给我们介绍了这个功能的使用方法以及内部的实现,并且通过阅读源码解决了连环 Hook 失效的问题。
+
+## 工具
+
+### 🚧 [iOS Continuous Integration with GitLab CI, Fastlane & OTA Installation](https://medium.com/flawless-app-stories/ios-continuous-integration-with-gitlab-ci-fastlane-and-ota-installation-from-gitlab-pages-f312e07ab06e)
+
+[@水水](https://www.xuyanlan.com/): 本文介绍了基于 GitLab 的持续集成、Fastlane、无线下载安装。在本文中,我们将讨论的点有:
+
+- 为什么选择 Gitlab?
+- Gitlab CI 和 Runner
+- Gitlab Runner 安装
+- Fastlane 简介
+- CocoaPods,Bundler 和 Ruby gems 权限
+- 配置 Fastlane
+- 为我们的 TestProject 配置Gitlab CI
+- 来自 Gitlab 的无线 IPA 安装
+
+值得一提的是,[Gitlab.com](https://about.gitlab.com/) 为我们提供了免费的 CI。希望本文介绍的工具对正在做持续集成的团队或个人有所助益。
+
+### [Swift 5 for Android is here](https://www.scade.io/download/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web)
+
+一份代码,多端运行一直是我们移动端非常关注的点,业界也有很多不同的方案,如 Flutter、Qt、React Native、Weex 等等,而这些大多是采用 C++ 或者 JS 作为开发语言。Swfit 作为苹果力推的开发语言,社区成员从一开始就希望它可以移植到更多的平台,像之前 Github 上就有用 Swfit 来开发 web 的 demo。如今,SCADE 为我们带来了 Swift for Android,它使用 iOS 和 Android 各自的 Native 控件,保持了平台 UI 的差异性,然后通过统一的 Swfit API 进行调用。同时,它的图形引擎支持很多动画效果,并且在屏幕适配上也很简单,这可以让我们开发更加复杂的应用。
+
+## 代码
+
+### [SwiftUIX: An extension to the standard SwiftUI library.](https://github.com/SwiftUIX/SwiftUIX)
+
+[@张嘉夫](https://github.com/josephchang10):SwiftUI 标准库的扩展,力求完善尚未成熟的 SwiftUI,提供了大量组件、扩展和工具。
+
+### [apple_bleee](https://github.com/hexway/apple_bleee)
+
+[@anotheren](https://github.com/anotheren):这是一份通过蓝牙/Wi-Fi获取 iPhone 用户信息代码示例,攻击者可以在特定条件下,获取到受害者的部分设备信息甚至手机号码。严格的来说这不是一种系统漏洞,这是 Apple 生态的一部分,这种东西一方面能够使人享受整个 Apple 生态圈的便利,但是另一方面也会造成少数窃取个人隐私的可能。具体也可以看看少数派的[这篇文章](https://sspai.com/post/55920)。
+
+## 音视频
+
+### 🌟 [用 Flutter 开发 iOS 应用](https://www.bilibili.com/video/av61563879/?redirectFrom=h5)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Google 官方为了能让 iOS 开发出身的同学用上 Flutter 真的是操碎了心,用尽了办法。这次 Google 官方在 B 站发布了一个视频,内容是讲解如何用 Flutter 开发 iOS 应用,由官方的两名工程师讲解,不仅仅讲解技术,更带有不少平台设计美学讲解。喜欢视频学习的同学不要错过,弹幕和评论也很精彩哟😄
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#79-2019.08.12.md b/Reports/2019/#79-2019.08.12.md
new file mode 100644
index 000000000..58c99b78a
--- /dev/null
+++ b/Reports/2019/#79-2019.08.12.md
@@ -0,0 +1,180 @@
+# 老司机 iOS 周报 #79 | 2019-08-12
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐢 [抖音研发实践:基于二进制文件重排的解决方案 App 启动速度提升超 15%](https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q)
+
+[含笑饮砒霜](https://weibo.com/chinafishnews/):App 的启动速度通常是 App 给用户的第一印象,重要性不言而喻。除了传统的通过修改业务代码的方式,抖音 iOS 客户端团队,开拓性的发现通过修改代码在二进制文件的布局可以提高启动性能。
+
+本文从原理出发,介绍了抖音 iOS 客户端团队是如何通过静态扫描和运行时 trace 找到启动时调用的函数,然后修改编译参数完成二进制文件的重新排布。相信在未来,二进制文件重排也会有更多应用场景。
+
+> 最近 Facebook 也在一个技术大会上分享了类似的内容,强烈推荐: [视频](https://www.facebook.com/atscaleevents/videos/664302790740440/)
+
+### 🌟 🐎 [swift-corelibs-foundation Release Notes for Swift 5.x](https://github.com/apple/swift-corelibs-foundation/blob/master/Docs/ReleaseNotes_Swift5.md)
+
+[@享耳先森](https://github.com/iblacksun),[@老驴](https://github.com/olddonkey):
+
+Swift 开源版的 Foundation 在 Swift 5.x 有了不小的改动:
+
+1. 依赖:
+
+ Swift 开源版的 Foundation 初版实现大量地使用了开源库,这次在新版本中整理了一下开源库的依赖,并且把之前的 Foundation 拆分成了三个库:
+
+ * Foundation
+ * FoundationXML:考虑到大部分人不会使用 XML 相关的功能,所以通过 FoundationXML 将 libxml2 的依赖从 Foundation 里拆了出来。
+ * FoundationNetwork:将 URLSession 相关的网络请求 API 拆了出来。
+
+ FoundationNetwork 的情况比较复杂一点,之前论坛里的草案 Pitch: Move URLSession to new FoundationNetworking module 比较详尽地介绍这一次的改动。
+
+ Foundation 网络库使用的 [libcurl](https://forums.swift.org/t/pitch-move-urlsession-to-new-foundationnetworking-module/14002) 带来了太多子依赖,一部分甚至和 SwiftNIO 的依赖产生了冲突,并且开发组希望使用 SwiftNIO 作为 URLSession 的底层实现,这一次改动之后依赖链就变成了 FoundationNetwork -> SwiftNIO -> Foundation。
+
+2. Objective-C Runtime 仿真:
+
+ Foundation 为 Swift for Linux 提供了模拟仿真部分 Objective-C 方法。现在,Swift 5.1 中也可以用这样的方法了:
+
+ ``` swift
+ let someClass = NSClassFromString("NSTask")
+ assert(someClass == Process.self)
+ let someName = NSStringFromClass(someClass)
+ assert(someName == "NSTask")
+ ```
+
+3. NSCoder 的改进:
+
+ 这个版本的 Swift Foundation 中改进了 `NSCoder` 的具体实现,让它能更接近 Darwin 中对应的部分。
+
+4. NSSortDescriptor 的改动:
+
+ 现在,在 Swift Foundation 中包含了 `NSSortDescriptor` 的实现,同时它与 Objective-C 中对应部分兼容。因为有部分的 API 改动,所以推荐有用到 `NSSortDescriptor` 的开发者看一下对应的文档。
+
+5. 其他改动:
+ Scanner API 改进,现在不再需要做 Casting 了,更加符合 Swift 的语法习惯。FileHandle API 改进,主要是针对 NSError 变化上的变动,能够抛出 Error 而非直接 Crash 了。
+
+### 🐢 [7000 个未解决 issue,Flutter 看起来很好,用起来挺疼](https://mp.weixin.qq.com/s/EAgzYQX5-4pu7HWaGwK7Ag)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 自发布以后,国内外都掀起了 Flutter 的学习热潮,其中褒贬不一,本文作者分享了一些自己在学习过程中的一些心得和体会(吐槽😂),好了先开始吐槽:
+
+- 安装过程很漫长
+- 一团糟的 Material Design
+- 其他烦心事 (这里面包括了一些组建的 Bug)
+
+目前 Flutter 在 GitHub 上有超过 7000 个 issues 未解决,这个数字真的很吓人。小编本人之前也用 Flutter 开发过 App ,我也趁着这波吐槽一下😂,因为问题远不止 Bernardo Ferrari 说的那些:
+
+- 跟现有项目混和开发体验极差
+- PlatformView 的表现相当差强人意,特别是在 iOS 上
+- 生态发展欠缺的还是比较多的
+
+略微做个总结,整体来看问题真的很多,但是 Flutter 自发布 1.0.0 以来还不到一年,发展速度已经是很快了,有不足之处,但也有不少惊艳之光,不然国内的大厂也不会纷纷都在布局 Flutter 技术的落地,其中走在最前面的咸鱼,想必大家都是知道的。所以,小编觉得,不管从哪个角度来看,都是一个值得尝试和学习的技术栈,毕竟技多不压身不是?
+
+> 补充下原文链接:[Flutter looks good, but is painful. Here are my frustrations with it.](https://medium.com/@bernaferrari/from-android-dev-flutter-looks-good-but-is-painful-here-are-my-frustrations-with-it-81b4bbe739f8)。
+
+### 🐎 [SwiftPreview](https://forums.swift.org/t/pitch-standard-library-preview-package/27202)
+
+核心开发组发了一份草案,内容是新增一个开源库 SwiftPreview ,用来预发布一些 non-breaking 的 API 改动。
+
+以往所有提案都必须赶上半年一趟车的 release 才能发布出来,但这对于相当一部分提案都是非必要的,如果发布后需要调整或者修改那就又是半年,例如 [SE-199 Bool 引入 Toggle 方法](https://github.com/apple/swift-evolution/blob/master/proposals/0199-bool-toggle.md),在审核通过之后六个月才在 Swift 5 发布了出来。
+
+所以这一次提案是想要加快 Swift 的 API 迭代速度,对于一些不需要编译器支持,非破坏性的功能都会考虑提前在 SwiftPreview 里发布以供大家提前使用,尽早提供反馈。
+
+### 🐎 [SE-0261 Identifiable Protocol](https://github.com/apple/swift-evolution/blob/master/proposals/0261-identifiable.md)
+
+[@Damonwong](https://github.com/Damonvvong):在 SwiftUI 中引入了 Diff 的概念。意思就是在一个列表刷新的时候,会根据一个唯一标识符来判断是否需要重新渲染,如果通过 Diff 算法算得某个唯一标识符并没有变化,那么这块区域就不会重新渲染。而在这个事情中最重要的就是「唯一标识符」这个东西了,在 SwiftUI 中通过 Identifiable 来约束类型满足唯一标识符这个概念。当然,唯一标识符不仅仅可以使用在 Diff 算法中,还可以用在很多其他的地方,比如通讯录联系人的唯一标识符。因此在[Swift 社区讨论](https://forums.swift.org/t/move-swiftuis-identifiable-protocol-and-related-types-into-the-standard-library/25713)之后,决定把 Identifiable 这个协议加入到标准库中,并在 Swift 5.1 发布。
+
+### 🐎 [CocoaPods 1.8 Beta is Here!](http://blog.cocoapods.org/CocoaPods-1.8.0-beta/)
+
+[@红纸](https://github.com/nianran):Cocoapods 1.8.0 Beta 版来了!本次更新为我们带来了如下内容:
+
+1. Master Specs Repo 默认改为 CDN,有效的加快初始设置和依赖分析速度
+2. info_plist Podspec DSL:在使用 use_frameworks! 的动态框架中,pod 现在可以自动生成 Info.plist 文件,并且你可以在 podspec 中使用键值对来修改 plist 文件中内容
+3. project_name Podfile DSL:在 1.7 版本,pod 可以生成多 Project 的 Pod 功能,在 1.8 中对其进行了扩展,自定义多个 pod 可合并成一个 Project
+4. UI Test Bundle Support:支持 UI 测试项目的生成,你可以在 podspec 中选择 :unit/:ui 来配置,其测试的工程可以通过 app_host_name 来进行设置
+
+## 工具
+
+### 🌟 [Auto Layout: WTF to FTW](https://www.rightpoint.com/rplabs/2019/06/wtf-auto-layout-for-ios-in-swift/)
+
+[@looping](https://github.com/looping):[WTF Auto Layout?](https://www.wtfautolayout.com/) 是一个可以用来辅助调试 Auto Layout 问题的网站,它能够对我们调试应用时出现的约束歧义信息进行解析并可视化显示。但是我们都知道在调试的时候出现 Auto Layout 约束歧义是不影响应用正常运行的,这样当打印的日志偏多的时候,就很难及时发现这类提示。即使发现了,还要手动复制提示文本到网站的输入框里,比较麻烦。所以本文就介绍了通过在 Xcode 里设置 Symbolic Breakpoint,当调试应用时有触发 `UIViewAlertForUnsatisfiableConstraints` 就执行自定义的 Python 脚本,自动获取和解析断点调试的入参信息并打开 [WTF Auto Layout?](https://www.wtfautolayout.com/) 这个网站。想时刻监控 Auto Layout 问题的同学可以尝试体验下这个工具流程,当然也可以优化下并不是每次都打开网站,而是先记录到文本,再找个时间进行集中分析处理。同时文章也涉及了一些调试技巧,可以学习下。
+
+### [Swift API-Digester](https://github.com/apple/swift-nio/commit/07e7e01c76be20640ddc3770d7b16e87eedf20de)
+
+[@享耳先森](https://github.com/iblacksun):Swift 5.1 里新增了一个 `api-digester` 功能,用来打印和比较编译产物的 API,Swift-NIO 在此基础上搭建了一个 API Diff 功能,可以预见未来开源框架都会使用这个功能来生成 API Diff,帮助检验 Pull Request 对于 API 的影响,ChangeLog 的生成等等。
+
+用类似这样的命令:`swift api-digester -diagnose-sdk --input-paths "dir1" -input-paths "dir2"` 就能比较两个编译产物的 API 区别,生成类似下面的结果:
+
+> Removed Decls
+> Constructor WebSocketFrameDecoder.init(maxFrameSize:automaticErrorHandling:) has been removed
+> EnumElement WebSocketOpcode.unknownControl has been removed
+> EnumElement WebSocketOpcode.unknownNonControl has been removed
+
+> Renamed Decls
+> Func WebSocketFrameDecoder.decode(ctx:buffer:) has been renamed to Func WebSocketFrameDecoder.decode(context:buffer:)
+> Func WebSocketFrameDecoder.decodeLast(ctx:buffer:) has been renamed to Func WebSocketFrameDecoder.decodeLast(context:buffer:seenEOF:)
+> Func WebSocketFrameEncoder.write(ctx:data:promise:) has been renamed to Func WebSocketFrameEncoder.write(context:data:promise:)
+> Func WebSocketProtocolErrorHandler.errorCaught(ctx:error:) has been renamed to Func WebSocketProtocolErrorHandler.errorCaught(context:error:)
+
+> Type Changes
+> Constructor UInt8.init(webSocketOpcode:) has return type change from UInt8? to UInt8
+
+### [Matrix-iOS 耗电监控](https://mp.weixin.qq.com/s/HS4DJDpCS6uppQ9WmVR_Tg)
+
+[JimQ](https://github.com/waz0820):Matrix 是一款微信团队研发并日常使用的性能探针工具,4 月份开源,当时的监控范围包括崩溃、卡顿和爆内存,现在新增了耗电监控功能。
+实现原理是,在应用启动后开启一个检测子线程,检测线程不断去识别出当前应用哪个线程的 CPU 占用过高(通过 `thread_basic_info` 获得),将耗 CPU 多的线程的堆栈(使用 `backtrace()` 函数获取)收集起来。当应用 CPU 占用达到阈值时,耗电监控将收集到的堆栈组合(接合成调用树,并标记每个函数被收集的次数)形成耗电堆栈(函数次数越大,所占用 CPU 越多)。
+
+## 代码
+
+### 🌟 [Swift-MemoryLayout](https://github.com/TannerJin/Swift-MemoryLayout)
+
+[@四娘](https://kemchenj.github.io):作者在学习 Swift 内存布局的过程中,写了一个简单的 Demo 演示如何使用指针去读取 Array / Dictionary 内部的变量,进一步验证各种类型的内存布局。
+
+这个项目很好地演示了 Swift 里的指针操作,非常值得一看!!!
+
+### 🐕 [CombineCocoa](https://github.com/freak4pc/CombineCocoa)
+
+[@老峰](https://github.com/GesanTung):CombineCocoa 是基于 [Combine](https://developer.apple.com/videos/play/wwdc2019/722/) 对 UIKit Controls 的封装,类似 RXcocoa 实现了许多组件的绑定功能,可以直接把值和控件互相绑定,避免通知、监听、delegate 等,极大的简化了 UI 相关逻辑处理,示例如下:
+
+- textField.textPublisher
+- segmented.selectedSegmentIndexPublisher
+- slider.valuePublisher
+- button.tapPublisher
+- swtch.isOnPublisher
+- datePicker.datePublisher
+- ...
+
+### [CombineRxSwiftPerformance](https://github.com/quickbirdstudios/CombineRxSwiftPerformance)
+
+[@邦Ben](https://weibo.com/linwenbang):这个 Repo 对比了 Combine 和 RxSwift 目前常用方法的性能表现,作为选型资料可以看下。
+
+最后结论,Combine 速度更快,平均性能比 RxSwift 高出41%。
+
+
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#80-2019.08.19.md b/Reports/2019/#80-2019.08.19.md
new file mode 100644
index 000000000..4cdd9477c
--- /dev/null
+++ b/Reports/2019/#80-2019.08.19.md
@@ -0,0 +1,190 @@
+# 老司机 iOS 周报 #80 | 2019-08-19
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🐕 [深入理解 iOS 事件机制](https://juejin.im/post/5d396ef7518825453b605afa#heading-24)
+
+[@老峰](https://github.com/GesanTung):文章通过实例详细介绍 iOS 事件机制,主要包括以下内容:
+
+- 事件的生命周期:系统响应阶段、APP 响应阶段
+- 探测链与响应链:Hit-Testing、Responder Chain
+- 手势识别器与原生触摸事件:UIGestureRecognizer Methods、UIEvent 与 UIGestureEnvironment、UIGestureRecognizer Properties
+
+## 文章
+
+### 🌟 🐕 [Combine vs. RxSwift: Should you switch to Combine?](https://quickbirdstudios.com/blog/combine-vs-rxswift/)
+
+[@莲叔](https://weibo.com/aaaron7):Apple 官宣了 Combine,让 Reactive 社区感觉异常振奋,各种分析文章层出不穷。Combine 的推出势必会加速响应式编程的流行,会的程序员越多那我们在工作中实际使用的机会也就越多。但另一方面,很多同学心中也会有这样一个问题,Combine 会取代 RxSwift 的吗?我该学哪个?
+
+这篇文章解释了这个疑问,文章首先简单介绍了 Combine,并且命名规范,错误类型和异常处理、性能、兼容性、UI 兼容性等多个方面较全面的比较了两个框架,两者有非常多相似的地方,但 RxSwift 毕竟已经发展了几年,细节更完善。而且最要命的就是 Combine 并不支持对老的 iOS。简单的说,你现在应该开始学 Combine,不过如果要选型生产环境的话,还是优先考虑 RxSwift.
+
+### 🌟 🐎 [由「抖音二进制文件重排」想到的](https://mp.weixin.qq.com/s/_IZOXjwaeSmRJ2tcpdd8kg)
+
+[@zvving](https://github.com/zvving):
+上周热文 [抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%](https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q) 发布后,作者有感而发,写出此文:
+
+- [支付宝 Android 团队之前做过的二进制重排实践](https://mp.weixin.qq.com/s/79tAFx6zi3JRG-ewoapIVQ)
+- 介绍苹果官方 Profile-Guided Optimization 相关二进制文件重排方案
+- 简评抖音落地方案,中肯指出只适用于 oc 代码的局限性
+- 提到 Android 官方也有对应 PGO 的介绍
+
+好的文章常能引发好的讨论。建议感兴趣的同学可以根据文章的指引,尝试落地 PGO 方案,为社区带来更好的优化启动实践。
+
+### 🌟 🐎 [RxSwift 兼容 Combine 的讨论](https://github.com/ReactiveX/RxSwift/issues/1999)
+
+[@没故事的卓同学](https://weibo.com/u/1926303682):SwiftUI 框架设计的时候 data flow 就是以 Combine 作为实践方案。因此如果用 SwiftUI 不用 Combine 你得到的是一个没有灵魂的 SwiftUI。但是当前 Combine 离工业水准还有不少距离,可行的方案可能是外围的数据还是用 RxSwift 处理,要使用的时候把 Observal 桥接成 Publisher。
+RxSwift 社区也意识到如果 apple 生态里最后只有一个响应式框架,必然是亲儿子 Combine。当前 Combine 的先天劣势是从 iOS 13 开始,RxSwift 则是从 8.0 开始兼容。RxSwift 社区也会顺应潮流,在未来某个成熟时刻 RxSwift 内部实现会改成使用 Combine。如果这一步做的好,未来从 RxSwift 转到 Combine 会比较顺滑。
+
+
+### 🐎 [谁是 App 版本帝](https://mp.weixin.qq.com/s/0qObc38K6idYXyTJRr6Bpw?scene=25#wechat_redirect)
+
+[@红纸](https://github.com/nianran):每个应用的发版周期都是不同的,本文提供了获取任意 APP **发版间隔/紧急发布次数**的解决方案。并提供了排序脚本,美化爬虫数据,结论更加直观。从数据结论上看,过去 6 个月很多热门 APP 都是保持在 7/8 天的发版周期。
+
+### 🐎 [The (not so) hidden cost of sharing code between iOS and Android](https://blogs.dropbox.com/tech/2019/08/the-not-so-hidden-cost-of-sharing-code-between-ios-and-android/)
+
+[@老驴](https://github.com/olddonkey):这是一篇前两天在微博上引起热议的文章。文章是 DropBox 的工程团队写的,主要讲述了在他们的实际开发过程中,他们所遇到的跨平台方案中的问题及他们的考量。文章不长,但是其中有几个点还是挺有意思的。
+
+文章中提到了一个之前鲜有提到的问题:开发团队的接受程度。这里指的是自己的团队对跨平台开发有没有兴趣,能不能让大家能做自己愿意做的事情。简单来说,就是以人为本的思想。这一点在国内的互联网环境下应该相对来说是比较少见到的,而国外的互联网企业对这方面有一定的重视。所以在技术选型上,国外公司考虑的东西可能会更多一点。
+
+周报之前也有类似的文章,可以通过[这里](https://github.com/SwiftOldDriver/iOS-Weekly/blob/68c47cc64f6334cdba2828b0fba9204a1f231485/Reports/2019/%2367-2019.05.13.md#-sharing-code-between-ios-and-android-using-j2objc)进行查阅。
+
+### 🐕 🚧 [Create, Push, and Present Any View Controller in 1 LOC using Metaprogramming](https://medium.com/@ivangoremykin/create-push-and-present-any-view-controller-in-1-loc-using-metaprogramming-33f673284d92)
+
+[@xiaofei86](https://weibo.com/xuyafei86):使用 Storyboard 设计界面非常方便,但当我们想要使用代码实例化 Controller 并做跳转,甚至实现动态跳转,就会变得十分麻烦。我们需要编写大量的样板代码来实例化 Controller 并设置参数。本文提出了使用元编程的理念解决此问题的思路。通过 [Sourcery](https://github.com/krzysztofzablocki/Sourcery) 自动生成创建代码,通过 Extension 简化调用并隔离命名空间,最终将创建过程简化为 1 行。
+
+### 🐕 [ iOS LLDB 中基于内存单指令 patch 实现反反调试](http://iosre.com/t/ios-lldb-patch/15332)
+
+[@J_Knight_](https://github.com/knightsj):本文作者介绍了一种基于内存单指令 patch 的方式进行反反调试的方案,方案的大致流程如下:
+
+1. 使用 mmap 新建一块内存,把这块内存叫做 new
+2. 使用 vm_copy 把想要篡改的处于 __text 段内的内存(把这块内存叫 target )拷贝到 new 里
+3. 向 new 里写入想执行的代码
+4. 调用 mprotect 把 new 改为 rx 。因为 mmap 出来的内存的 max_protection 是 rwx ,所以这里 mprotect 改权限没问题
+5. 调用 mach_vm_remap 把 new 的内容反映回 target 里
+
+在文章结尾,作者举了实际例子来验证了这个反反调试的方法。
+
+### 🐎 [技术人如何通过了解业务,获取晋升机会?](https://mp.weixin.qq.com/s/o4CfgIcPibG_QxrsZ4x7sA)
+
+[@水水](https://www.xuyanlan.com):本文作者伐薪是阿里巴巴高级技术专家,14年初入阿里时,没有过多地思考业务痛点和了解业务策略。后来,经历过晋升,当晋升评委,主动学习业务,最后,完成了从技术专家向综合性 TL 转变。作者总结了不少经验,分享给你们,希望能给读者带来少许启发。
+
+- 业务先赢是技术第一要务
+- 如何理解业务
+- 在业务理解上的收获
+
+### 🐕 [Phantom types in Swift](https://www.swiftbysundell.com/posts/phantom-types-in-swift)
+
+[@四娘](https://kemchenj.github.io):这周 Swift by Sundell 为我们介绍的是一种叫做 Phantom Types 的技巧,在 Swift 里处理一些有限集合的时候,我们通常会将它声明为 enum,但经常会有一些特殊情况需要照顾:
+
+```swift
+func openEditor(for document: Document) {
+ switch document.format {
+ case .text: openTextEditor(for: document)
+ case .html: openHTMLEditor(for: document)
+ case .pdf: assertionFailure("Cannot edit PDF documents")
+ }
+}
+```
+
+这样的代码无法通过类型系统去限制错误的调用,作者尝试从 Swift 的标准库里寻找解决方案,发现标准库里 `Unicode` 将 `UTF8` 等格式作为一个类型声明出来,而不是直接使用 enum case,使用这种思路我们就可以把代码改造成这样:
+
+```swift
+enum DocumentFormat {
+ enum Text {}
+ enum HTML {}
+ enum PDF {}
+}
+
+func openTextEditor(for document: Document) { ... }
+func openHTMLEditor(for document: Document) { ... }
+```
+
+### 🐕 [美团 iOS 工程 zsource 命令背后的那些事儿](https://mp.weixin.qq.com/s/3qcv1NW4-ce87cvAS4Jsxg)
+
+目前,许多团队都会使用 CocoaPods 进行三方库的管理,而对于一些进行了组件化的团队,也会使用 CocoaPods 进行私有组件库的管理工作。在组件化过程中,往往为了提高工程的构建速度,会对组件进行二进制化。这也带来一个问题,就是调试的时候,不能提供清晰的调试信息。基于这个问题,美团团队为 CocoaPods 开发了一个插件 zsource,可以在调试过程中迅速调出源码进行调试,很好地解决了这一痛点。文章介绍了 zsource 命令的开发始末,而整个开发过程总结为几个阶段:
+
+- 原理猜想
+- 查阅资料
+- 简单粗暴的尝试
+- 柳暗花明
+- 工程化
+
+美团的这次开发经验也说明,有时候,为了解决一些问题,我们也可以不拘泥于常规的开发方式,可以大胆的进行猜想并逐步去验证结论,通过类似逆向的方式,得到想要的答案。
+
+## 工具
+
+### 🌟 [Catching Unsatisfiable Auto Layout Constraints in UITests on CircleCI](https://instabug.com/blog/catch-unsatisfiable-auto-layout-constraints-uitest-circleci/)
+
+[@looping](https://github.com/looping):[Instabug](https://instabug.com) 是应用内问题反馈和 BUG 搜集服务提供商,他们为了不想让使用他们产品的开发者在调试的时候看到来自该工具的 Auto Layout 约束冲突,所以想尽早发现并解决这类问题。
+
+捕获 Auto Layout 约束冲突常规思路是通过添加 `UIViewAlertForUnsatisfiableConstraints` 的调试断点,这个在我们往期的 [#79 - Auto Layout: WTF to FTW](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/Reports/2019/%2379-2019.08.12.md#-auto-layout-wtf-to-ftw) 和 [#70 - XCTAssertAutolayout](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/Reports/2019/%2370-2019.06.03.md#-xctassertautolayout) 中都有相关介绍。
+
+而本文提供了另外一个使用场景,就是在持续集成跑 UI 自动化测试时也添加相关检测,大致思路如下:
+
+- 开启 LLDB,在终端输入 `lldb`,最终会使用 `lldb --source lldb.cmd`
+- 附加 LLDB 进程到要调试的应用,`process attach --name "InstabugDemo" --waitfor`
+- 设置断点,`b UIViewAlertForUnsatisfiableConstraints`
+- 添加调试命令,文本采用的方案是使用 Python 把错误信息以文件的形式写到桌面,待测试出错后查看,`breakpoint command add -s python`
+- 继续运行,`continue`
+
+由于持续集成要保证流程的自动化,所以得循环执行上面的逻辑,这样就还需要下面两个步骤:
+
+- 杀掉调试进程,`process kill`
+- 重新执行流程,`command source lldb.cmd`
+
+具体细节可以阅读原文深入了解,但在进行实践的时候,由于集成环境各异,要根据实际场景进行探索调整。
+
+## 代码
+
+### [YBTaskScheduler](https://github.com/indulgeIn/YBTaskScheduler)
+
+iOS 任务调度器,为 CPU 和内存减负。源码结构简洁,模式清晰,值得一读。
+
+- 特性:
+ - 将任务用容器管理起来延迟执行,实现任务执行频率控制、任务总量控制。
+ - 利用 C++ 栈、队列、优先队列实现三种调度策略,性能优越。
+- 应用场景:
+ - 主线程任务量过大导致掉帧(利用组件为任务调度降频)。
+ - 短时间内执行的任务量过大,而某些任务失去了执行的意义(利用组件的任务淘汰策略)。
+ - 需要将任务按自定义的优先级调度(利用组件的优先队列策略)。
+
+> 本工具由 [波儿菜](https://github.com/indulgeIn) 自荐。
+
+## 音视频
+
+### [Performance @Scale 2019 recap](https://engineering.fb.com/developer-tools/performance-scale-2019-recap/)
+
+[@张嘉夫](https://github.com/josephchang10):在今年的 Scale 活动中,来自 Facebook、Google、NVIDIA 和其他公司的演讲者分享如何用创新的方式来设计大规模系统。开发能够部署到数百万或数十亿人的应用和服务会带来独特的、复杂的性能挑战,优化基础架构、扩展 Web 服务以及开发快速移动应用都能够保证大规模系统的性能。
+
+### 🐢 [Flutter 的性能测试和理论](https://mp.weixin.qq.com/s/mwaTZVdeceIT01DlGXWUsg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):本视频为 Google Flutter 团队的软件工程师 Xiao Yu 在 2018 谷歌开发者大会做的演讲,演讲题目是《Flutter 的性能测试和理论》, 这个视频里将会通过近半个小时的视频和演示带大家了解 Flutter 应用渲染时的时间消耗,了解这些之后会更好的帮助开发者们发现应用的性能问题,同时介绍了性能测试工具的使用和问题排查方法,非常值得收藏和分享
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#81-2019.08.26.md b/Reports/2019/#81-2019.08.26.md
new file mode 100644
index 000000000..512859ca7
--- /dev/null
+++ b/Reports/2019/#81-2019.08.26.md
@@ -0,0 +1,153 @@
+# 老司机 iOS 周报 #81 | 2019-08-26
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🌟 🐎 [Modular Architecture in iOS](https://medium.com/flawless-app-stories/a-modular-architecture-in-swift-aafd9026aa99)
+
+[@老峰](https://github.com/GesanTung):在大型项目中,经常会有这样的场景:我们明明只修改了一部分代码,却把整个工程编译了一次。在这篇文章里作者通过使用 Cocoapods 实现模块化,将每部分模块编译为 Framework 动态库,宿主 App 依赖这些模块,从而实现模块化,文章给出了具体的操作过程,以及[示例](https://github.com/leandromperez/multiprojects)感兴趣的读者可以看看。
+
+### 🐎 [UIDocument From Scratch](https://www.raywenderlich.com/1809473-uidocument-from-scratch?utm_campaign=rw-weekly-issue-231&utm_medium=email&utm_source=rw-weekly&__s=mppzsrcqwzmhtwhkt6vh)
+
+[@极速男孩](https://github.com/ztlyyznf001):UIDocument 是苹果提供给我们方便的管理文档的类。在这篇文章中,会从头开始叫你如何使用 UIDocument 去创建,取回,修改,更新 iOS 的文件系统。
+
+## 新闻
+
+### 🌟 [知识小集官网上线啦!](https://mp.weixin.qq.com/s/kOwf_xJOXHi2EIdj72N7eg)
+
+知识小集官网正式上线。官网中的内容都来自于「知识小集公众号」。小集团队把公众号的内容分为「18个专题」,比如性能优化、模块设计、Web 与 NA 交互专题,几乎每个专题都有 10 多篇文章,甚至更多。还有部分文章未加入到官网中,后续会逐渐加入进来。这样的设计目的是为了能够更方便地学习相关专题的知识。赶紧收藏起来吧~
+
+### 🐎 [App Store Today editorial stories are now available on the web in full](https://9to5mac.com/2019/08/15/app-store-today-web-browser/)
+
+[@张嘉夫](https://github.com/josephchang10):App Store 的编辑介绍文章之前可以通过链接进行分享,但 web 版本仅仅是一个标题以及一个“跳转至 App Store”的链接。8月9日到8月11日之间,Apple 更新了其 App Store 预览页面,用户现在可以通过桌面浏览器查看完整的编辑介绍文章,包括完整的图片、app 列表和段落,拥有和 App Store 完全一致的体验。
+
+## 文章
+
+### 🌟 🐎 [加载速度提升 15%,携程对 RN 新一代 JS 引擎 Hermes 的调研](https://mp.weixin.qq.com/s/BOeuLoZjCdi61P_MhaJT0g)
+
+[@looping](https://github.com/looping):Hermes 是 Facebook 在 Chain React 2019 大会上发布的新一代 JavaScript 执行引擎,用于提高 React Native 应用的性能。本文是携程在 CRN 项目中集成 Hermes 的深度调研总结,内容包括:
+
+- 对 Hermes 的介绍,包括它的优化思路和集成使用
+- 和 JavaScriptCore 以及 V8 的性能对比
+- 引擎的动态性分析
+- 集成使用过程中发现的一些问题和后续计划
+
+由于 iOS 审核限制,目前该引擎仅用于 Android 平台。虽然携程调研完发现由于缓存问题还不能在线上版本直接引入 Hermes,但也表明 Hermes 通过预编译字节码的方式提升 JS 执行速度给了他们新的思路,比较期待他们之后在性能优化上会有新的实践成果输出。
+
+### 🌟 🐕 [基于 Mach-O 符号重排减少缺页中断次数来提升 iOS App 启动速度的可行性分析](https://juejin.im/post/5d5a05255188251f4705fb8b)
+
+[@Jimq](https://github.com/waz0820):本文对 [「抖音研发实践:基于二进制文件重排的解决方案 APP 启动速度提升超 15%」](https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q) 提出的技术方案的可行性和价值进行分析和验证。
+
+- **iOS 调页策略验证**:通过构造一些分散在不同页的符号并调用他们,然后分析缺页中断报告,最终验证了内核在处理缺页中断时并没有预载入相邻的页,程序的运行过程是由缺页中断驱动的。
+
+- **重排方案验证**:创建一个 Order File,按顺序写入符号,验证了链接器会按照 Order File 中预设的顺序来排列符号。
+
+- **分析启动链路上的符号**:这一块作者提出了三条思路:静态分析、堆栈采样和 Hook,但并没有做具体的验证。
+
+### 🌟 🐕 [MTFlexbox 自动化埋点探索](https://mp.weixin.qq.com/s/aJcboLm5MYiGW-QC8AHHyQ)
+
+[@红纸](https://github.com/nianran):MTFlexbox 是美团基于 Flexbox 的规范实现的跨平台动态化解决方案,通过下发三端统一的 XML 布局文件达到动态化的目的。文中分析了三种业内自动化埋点的解决方案并提出了自己的解决方案:
+
+1. [美团外卖前端无痕埋点实践](https://tech.meituan.com/2017/03/02/mt-mobile-analytics-practice.html):其利用 AOP 的方式来达到业务与埋点的解耦,但是没法做到数据的自动上报。
+2. [Mixpanel](https://mixpanel.com/):成熟的可视化方案埋点方案,其通过截屏上报的元素和元素路径方式,达到圈选元素的功能,但是依旧无法支持数据上报,对于动态化布局也是支持有限。
+3. [HubbleData](https://www.jianshu.com/p/f0c4e280357c):其也是通过对于元素路径的把控进行埋点上报,对于动态化布局支持有限,业务数据获取不够。
+4. MTFlexbox 的自动化解决方案:上传布局文件 -> APP 装机渲染页面同步服务端界面元素和页面数据 -> 前端 Web 渲染截图元素 -> 数据 RD 圈选元素埋点 -> 服务器生成带有埋点信息的布局文件。其基于自身有良好的 XML 布局文件的解决方式,为埋点添加唯一标识,插入到页面元素中,来达到元素定位的效果。
+
+### 🐕 [Future-Proof Your Data Persistence](https://cutecoder.org/programming/future-proof-data-persistence/)
+
+[@老驴](https://github.com/olddonkey):如果同学们在自己或是公司的大型项目中实现过数据库,一定会知道数据访问对象( DAO )是什么。简单来说,它就是一个用于对隔离与限制外部对数据源的直接修改的中间层,用来提升数据库的安全性和稳定性。对于 iOS 开发来说,DAO 也是必不可少的。虽然在很多情况下,你所用到的数据库都已经写好了 DAO 这一层,但是如果能够在项目中进一步封装,或者是在了解原理的情况下,针对自己的需求进行改进,也能极大的帮助项目。如果你对 DAO 还不是很熟悉的话,建议了解一下。
+
+### 🐕 [lldb 入坑指北(2)- 15行代码搞定二进制与源码映射](https://mp.weixin.qq.com/s/Bc8AJe7qRi2ED-otK0qPRA)
+
+[@莲叔](https://weibo.com/aaaron7):源码二进制化以及围绕二进制化之后的调试效率是 iOS 工程化难得的热点。之前美团的 zsource 方案较好的解决了调试效率的问题。本文作者基于 LLDB 的源码映射能力,以更简洁、易用的形式实现了该功能,整个过程由 Xcode 自动完成,不需要输入命令,同时作者也 share 了 python 的实现代码,有兴趣的同学可以仔细研究。
+
+### 🐕 [The power of subscripts in Swift](https://www.swiftbysundell.com/posts/the-power-of-subscripts-in-swift)
+
+[@四娘](https://kemchenj.github.io):本周 SwiftBySundell 为我们带来的是 subscript 功能:
+
+- subscript 和 method 的区别和各自的场景
+- 如何自定义 subscript
+- subscript 的重载
+- subscript 的 getter 和 setter 写法以及泛型的使用
+- Swift 5.1 中引入的 static subscript
+
+对于 subscript 功能还不熟悉的同学可以考虑通过这篇文章补充相关知识。
+
+### 🐕 [iOS 的 Code Signing 体系](https://juejin.im/post/5d3feaf7e51d4561e224a2a7)
+[@水水](https://www.xuyanlan.com):iOS 中的 Code Signing 体系非常复杂,对新手非常不友好,虽然目前网上已经存在大量文章对此进行比较透彻的分析,最核心的部分已经讲解得非常清楚,但作者始终还是对 Code Signing 体系中很多相关的地方有着疑惑,于是决定认真地探究一番。本文会引用一些比较好的文章中的内容和图片,加上一些作者个人的理解进行分析,是比较全面和友好的一篇关于 Code Signing 的文章,想了解 Code Signing 的同学可以详细阅读哦。
+
+### 🐕 [通过 Signal handling(信号处理)获取任意线程调用栈](https://juejin.im/post/5d5ab438f265da03af19d35b)
+
+对于一些系统监控类的需求,如 crash 、性能指标收集、上报之类的工具库,常常会需要得到线程调用栈信息,本文提供了一种通过 Signal handling 来获取任意线程调用栈的方式,该方式解决了使用 StackPointer 在 Swift 下无法打印结果的问题。
+
+## 工具
+
+### [Why you should stop using Git rebase](https://medium.com/@fredrikmorken/why-you-should-stop-using-git-rebase-5552bee4fed1)
+
+[@享耳先森](https://github.com/iblacksun): 文章作者认为现今大家使用 `git rebase` 的过程中过于追求 commit history 的线性,而忽略了 `git rebase` 相较于 `merge` 带来的隐患: 在一个长的 commit 链中使用 rebase 解决冲突是非常困难、易出错的。作者也给出了两种解决方案,详情请阅读原文。
+
+### [KakaJSON](https://github.com/kakaopensource/KakaJSON)
+
+[@AidenRao](https://weibo.com/AidenRao):Swift 内置了一套 Codable 机制,可以用于 JSON 转 Model。对于一些简单的模型结构,还是挺好用,但一旦牵扯到复杂的模型结构、一些个性化的需求(比如 KeyMapping、类型不匹配时的转换处理、自定义解析规则等),Codable 就不太能友善地完成任务了。
+
+为了解决上述问题,作者编写了一套纯 Swift 实现的 JSON 与 Model 互相转换的框架:KakaJSON。KakaJSON 通过了大量的单元测试用例,应对各种常用的数据场景,对外提供了一些友善易用、扩展性强、可高度个性化定制需求的接口,内置了 Metedata 缓存等机制,加快转换速度。
+
+### [HackMan](https://github.com/Cosmo/HackMan)
+
+[@AidenRao](https://weibo.com/AidenRao):HackMan 是一个直接通过命令行生成样板代码的简单工具,几行命令,就可以帮你 run 起来一个简单的 APP。
+
+## 代码
+
+### 🐎 [CombineDataSources](https://github.com/combineopensource/CombineDataSources)
+
+[@zvving](https://github.com/zvving):基于 Combine 实现 Table&Collection view data sources,提供简明的声明式数据绑定方法,写法类似:
+
+```swift
+var data = PassthroughSubject<[Person], Never>()
+
+data.subscribe(subscriber: tableView.rowsSubscriber(cellIdentifier: "Cell", cellType: PersonCell.self, cellConfig: { cell, indexPath, model in
+ cell.nameLabel.text = model.name
+}))
+```
+
+设计思路和 [RxDataSources](https://github.com/RxSwiftCommunity/RxDataSources) 基本一致,目前处于早期阶段,对 Combine 感兴趣不妨一读。
+
+### [JXTheme](https://github.com/pujiaxin33/JXTheme)
+
+[@anotheren](https://github.com/anotheren):iOS 13 中 Apple 终于也将深色模式带到了手机端。但是如果要在更早的系统中使用深色模式/更换主题应该如何处理呢?JXTheme 带来了相关扩展,支持 iOS 9+,接口与 iOS 13 提供的相似,你可以在需要时方便快速切换。
+
+> 本工具库由 [暴走的鑫鑫](https://github.com/pujiaxin33) 自荐,他热爱分享,喜欢钻研,目前已经在 Github 创建了 20 多个库,累计获得 5k star。
+
+### [玩儿 Android flutter 版](https://github.com/CCY0122/WanAndroid_Flutter)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):玩儿 Android 这个应用有一系列的教程 app , 不例外也有 Flutter 版本的, 是一个完整的应用, 并且该应用中使用了不少官方推荐的开发模式, BloC 、Provider 等. 值得 Flutter 新手同学好好学习.
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#82-2019.09.02.md b/Reports/2019/#82-2019.09.02.md
new file mode 100644
index 000000000..fcb99871b
--- /dev/null
+++ b/Reports/2019/#82-2019.09.02.md
@@ -0,0 +1,139 @@
+# 老司机 iOS 周报 #82 | 2019-09-02
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [苹果秋季发布会将在北京时间 9 月 11 日凌晨 1 点举办](https://mp.weixin.qq.com/s/EWItcscmIAhRsAoBRD70Qg)
+
+一年一度的苹果秋季发布会的时间终于落定了,将于 9 月 11 日凌晨 1 点开始。你可以到 Apple 官网,也可以上腾讯视频、爱奇艺、优酷、哔哩哔哩等多个平台观看,不用到现场,通通都是前排的待遇。
+
+杭州的朋友,还可以联系 Price Tag 的作者 [@61](https://weibo.com/liuyi0922) 同学,参与现在线下观影活动。边喝咖啡,边观看直播。[报名链接](http://t.cn/Ai8dWX2j)。
+
+## 文章
+
+### 🌟 🐢 [重磅!滴滴跨端框架 Chameleon 1.0 正式发布](https://mp.weixin.qq.com/s/kl9JwiS5_IHIZUAW-hPJBQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Chameleon (简写 CML ) 是滴滴开发团队历时三年打磨的一套跨端解决方案, 最近终于发布了 1.0 版本。CML 是一款真正专注于让一套代码运行多端的跨端框架,拥有业内先进的工程化设计,丰富的基础库,独创多态协议,提供标准的 MVVM 架构开发模式统一各类终端, 其能力堪称最强:
+
+- 支持所有小程序、H5和客户端, 快应用的支持已经完成开发, 正在测试中
+- 一套代码运行多端,并且高度一致
+- 性能的极致体验, CML 团队在性能优化上多了许多工作, 包括包大小、各端加载速度、执行效率等等
+- 生态化建设, 从组件库到调试工具都有官方标准产出, 并持续迭代
+- 全方位能力加持, CML 拥有先进的工程化理念,整体开发、打包构建等流程非常高效
+- 为降低原有项目迁移 CML 框架的成本,CML1.0 提供了以下两种优雅简洁的渐进式接入方案
+ - CML1.0 能够将 CML 组件导出成各端组件,让你更自由地使用 CML
+ - CML 已发布一款 webpack plugin:easy-chameleon,可直接在原有项目中集成 CML
+
+CML 团队未来的规划中还有对 Native 跨端的支持, 比如 Flutter 和 React Native, 强的可怕。
+
+
+### 🌟 🐕 [基于 Mach-O 文件的静态链接的分析](https://juejin.im/post/5d527867f265da03ed1946d2)
+
+[含笑饮砒霜](https://weibo.com/chinafishnews/):这是系列文章中的其中一篇。静态库链接是指自己的模块与静态库里的某个模块(用到的某个目标文件,或多个目标文件)链接成可执行文件。Mach-O 目标文件是源代码编译得到的文件,文件里有机器指令、数据,还有链接时候需要的一些信息,比如符号表、调试信息、字符串等,然后按照不同的信息,放在不同的“段”(segment)中。这篇文章解析了链接过程中空间与地址的分配,以及符号解析与重定位。其实动态链接比静态链接复杂的多,感兴趣的同学可以阅读该系列中的其他文章。
+
+推荐阅读
+- [MachO 文件结构分析](https://juejin.im/post/5d5275b251882505417927b5)
+- [MachO 文件动态链接](https://juejin.im/post/5d5bbc426fb9a06ad3472cee)
+
+### 🐕 [Code Review 最佳实践](https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666544605&idx=1&sn=56fe6b058f31d888e9df6509f97d06ca)
+
+[@享耳先森](https://github.com/iblacksun): 作者认为 Code Review 是软件开发中的最佳实践之一:首先可以更好在团队内做到知识共享,其次可以有效提高整体代码质量,及时发现代码中可能存在的问题。作者还重点说明了 Code Review 应该怎么做,如果你团队中还没有实行 Code Review 或对 Code Review 有什么疑问,建议仔细读这篇文章。
+
+### 🌟 🐎 [Xcode Hacks to Make Your Life Easier](https://medium.com/better-programming/xcode-hacks-cf32434cbc2)
+
+[@老峰](https://github.com/GesanTung):掌握一些常用的 Xcode 快捷键,可以帮我们高效的 Coding,本文作者就为我们总结了如下 Xcode 使用技巧:
+
+- 快捷的通过 database model 创建 model:⌥ + Hold left mouse、⌘ and arrows、⌥ and arrows
+- 快捷创建构造函数:^ + Enter
+- 快捷 Debugging:e 表达式、 breakpoint enable、breakpoint disable、continue
+- 快捷浏览源代码、文件:⇧ + ⌘ + O、⌥ + ⌘ + [、⌥ + ⌘ + ]
+
+文章中附有视频讲述这些快捷操作技巧,感兴趣的读者自行阅读实践吧。
+
+### 🐎 [The power of Environment in SwiftUI](https://mecid.github.io/2019/08/21/the-power-of-environment-in-swiftui/)
+
+[@小非86](https://weibo.com/xuyafei86/):Environment 是 SwiftUI 中独有的特性,本文从比较基础的角度,从对 Environment 的概念和使用技巧,到 Environment 的继承和依赖注入,都通过简单示例进行了讲解。且文章篇幅较短,比较适合快速阅读。
+
+### 🚧 🐢 [A Swift YogaKit Guide to Flexbox](https://medium.com/swlh/a-swift-yogakit-guide-to-flexbox-fec74e1bffaf)
+
+[@小非86](https://weibo.com/xuyafei86/):Yoga 是 Facebook 开源的一个编写视图的跨平台代码,YogaKit 用于 iOS 开发,它基于 Flexbox,让布局变得更简单。本文为使用 Swift YogaKit 进行 Flexbox 布局一份详细指南,文章通过大量的代码和效果图形象的向我们展示 YogaKit 的使用,指导我们如何使用 Flexbox 创建出色的布局。推荐给有需要的读者阅读。
+
+### 🐕 [避免 iOS 组件依赖冲突的小技巧](https://juejin.im/post/5d6723d5e51d453b386a6351)
+
+[@J_Knight_](https://github.com/knightsj):本文作者介绍了一种避免 iOS 组件依赖冲突(当两个组件依赖了同一个组件的不同版本,并且依赖的版本没有交集的情况)的方法。大体方案是通过修改 subspec,实现默认中介者以及利用条件编译的方式,是一个相对比较优雅的解决方案,有兴趣的读者可以点击原文学习具体方案。
+
+### 🐕 [YYText 源码剖析:CoreText 与异步绘制](https://www.jianshu.com/p/b9ac1b5d8f01)
+
+[@红纸](https://github.com/nianran):本文是一篇 [YYText](https://github.com/ibireme/YYText) 的源码分析文章,作者从 CoreText 布局原理出发,剖析了 [YYText](https://github.com/ibireme/YYText) 中核心计算、自定义富文本属性、工具类封装原因等。有需要了解图文混排的同学可以参阅~
+
+此外,作者对于 [YYKit](https://github.com/ibireme/YYKit) 中的其他源码仓库也进行了详细的源码分析。详情可以参考作者的[博客](https://www.jianshu.com/u/a89bf7b8bdd8)。
+
+> 推荐人:[波儿菜](https://www.jianshu.com/u/a89bf7b8bdd8)
+
+### 🐎 [独立开发者账号被封与解封回顾](https://github.com/cyanzhong/apple-terminated-my-dev-account/blob/master/LOOK_BACK_CN.md)
+
+[@anotheren](https://github.com/anotheren):独立应用 Pin 与 JSBox 的作者钟颖近期经历了开发者账号被封与解封的风波,本文是他自己对本次事件的完整回顾。虽然是误封,但是处理过程还是很值得学习,建议各位独立开发者都看一看。
+
+### 🐕 [BlockHook with Invocation(2)](http://yulingtianxia.com/blog/2019/08/11/BlockHook-with-Invocation-2/)
+
+[BlockHook](https://github.com/yulingtianxia/BlockHook) 这个库相信不少同学都听说过,它解决了在同步调用场景下对 Objective-C Block 的 AOP 问题。这篇文章是该库的作者对 BlockHook 拦截器的接口设计与实现,是对 BlockHook 相关的第二篇文章,没看过第一篇的可以先看一下第一篇 [BlockHook with Invocation(1)](http://yulingtianxia.com/blog/2019/07/27/BlockHook-with-Invocation/)。
+
+## 代码
+
+### 🌟 🐕 [CombineX](https://github.com/luoxiu/CombineX)
+
+[@zvving](https://github.com/zvving):
+[RxCombine](https://github.com/freak4pc/RxCombine) 尝试让 Observable 与 Publisher 能相互转化,用桥接的方式兼容 RxSwift 与 Combine。
+
+[CombineX](https://github.com/luoxiu/CombineX) 的目标则是提供完全对等 Combine 的开源实现:
+
+- 完整兼容 Combine API,目前已粗略实现所有功能
+- 支持 iOS 10+, macOS 10.12+, 以及 Linux
+- 提供 [CombineX.Foundation](https://github.com/luoxiu/CombineX.Foundation), [CombineX.Cocoa](https://github.com/luoxiu/CombineX.Cocoa) 扩展
+- [CombineX.Compatible](https://github.com/CombineXCommunity/CombineX.Compatible):提供底层在 CombineX 与 Combine 之前自由切换的能力
+
+项目仍在早期阶段,感兴趣不妨参考[文档](https://github.com/luoxiu/CombineX/blob/master/README.zh_cn.md#%E8%B4%A1%E7%8C%AE)中的指引为项目添砖加瓦。
+
+### 🌟 🐕 [Flutter 通用基础库 flutter_luakit_plugin](https://juejin.im/post/5c34597651882523d3200c98)
+
+[@邦Ben](https://weibo.com/linwenbang):众所周知,flutter 跨平台,但是使用体验还不是很好,为什么?因为生态还比较弱,没有成熟可用的三方组件,最明显的就是数据库。目前因为不支持反射机制的原因,也没有好用的 ORM 库,妥妥裸写 SQL,或者桥接转换使用原生数据库,就两个字,痛苦。针对这种基础库不完备的情况,智宁大佬(Luakit 作者)灵机一动,flutter 在配合已稳定的 LuaKit 基础库可以迅速实现一整套完备的解决方案从而诞生了 flutter_luakit_plugin,提高了跨平台的效率,并且可以利用 Luakit 的脚本化来实现热更逻辑层(这意味着你需要重度使用 Luakit 进行维护逻辑层,UI 层使用 flutter)。另外大家伙都是支持扩展的,基础能力不够,依然需要自行扩展。目前据了解,该方案主要使用方为 YY 团队,并且他们的 flutter 系列文章也推荐一看(见文章底部)。
+
+- 多线程接口
+- orm 模型接口
+- 文件操作接口
+- http 请求
+- 异步 socket 接口
+- 全局通知机制
+- Lua 代码加解密
+
+PS: 部分同学可能想问:我仅仅只是想用个 ORM 怎么办?作者贴心的给出了纯 flutter 调用的版本来降低使用成本:[flutter_orm_plugin](https://pub.dev/packages/flutter_orm_plugin)。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#83-2019.09.09.md b/Reports/2019/#83-2019.09.09.md
new file mode 100644
index 000000000..08bf72d4d
--- /dev/null
+++ b/Reports/2019/#83-2019.09.09.md
@@ -0,0 +1,129 @@
+# 老司机 iOS 周报 #83 | 2019-09-09
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [App Store Connect warning: UIWebView API deprecation](https://forum.ionicframework.com/t/app-store-connect-warning-uiwebview-api-deprecation/172063/3)
+
+[@looping](https://github.com/looping):上月(8月)底陆续有人在打包上传到 App Store 时收到苹果审核的反馈邮件,提到他们将会停止接收还在使用 UIWebView API 的应用,希望开发者在下次提交的时候处理好这个问题。同时在 GitHub 上观察到有使用 UIWebView 的大部分主流开源库也收到了开发者提的苹果废弃 UIWebView API 的 issue,并且很多库都已经做好了更新。虽然苹果提醒开发者处理这个问题,但是没有给出审核规则具体的执行时间,所以应该会预留一些时间供开发者对工程代码进行技术迁移。为了应对这个问题,我们建议接下来做好以下几个事情:
+
+- 列出自己工程里有用到 UIWebView 的地方,并想办法逐步迁移到 WKWebView
+- 关注工程里用到的开源类库和三方 SDK,有更新的及时更新
+- 做好准备,等待苹果审核的进一步消息
+
+## 新手推荐
+
+### 🐎 [从 Flutter Go 到 Flutter Go web - 手把手带你轻松玩转 Flutter-web(一)](https://juejin.im/post/5d6a9456e51d4561cc25f080)
+
+[@极速男孩](https://github.com/ztlyyznf001):Google 在今年的 Google 大会中发布了 Flutter for Web ,本文介绍了如何使用 Flutter-go-web 去创建一个 flutter-web 的项目,并给出了具体[示例](https://github.com/alibaba/flutter-go/tree/web/flutter-go-web-0.0.1)。
+
+## 文章
+
+### 🐎 [在闲鱼实习做 Flutter 是什么感受?](https://mp.weixin.qq.com/s/DVl6s3EE5pKMoE-qltsK3A)
+
+[@老峰](https://github.com/GesanTung):本文作者分享在闲鱼学习上手 Flutter 的过程,通过重构发布页,熟悉项目工程,熟悉项目流程,学习并优化已有框架。最后也给出了 Flutter 的初步学习路线,以及对职场新人的建议,感兴趣的读者可以看看。
+
+### 🚧 🐎 [Should you write your app in SwiftUI?](https://thatthinginswift.com/should-you-use-swiftui-in-your-app/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B419)
+[@水水](https://www.xuyanlan.com):本文就是否应该在你的 APP 中使用 SwiftUI 进行了讨论,列举了比较完整的几个优缺点进行对比,希望给犹豫不决的读者有所启发和更进一步的了解。
+
+### 🐎 [iOS调试Block引用对象无法被释放的一个小技巧](https://juejin.im/post/5d70655e518825618e67ad63)
+
+[@J_Knight_](https://github.com/knightsj):而本文作者介绍了一种使用 dis -s 指令来查看 block 所对应的实现代码的方法:通过在 lldb 控制台输入 dis -s [block 地址],就可以反汇编该地址所对应符号信息以及开始一部分的汇编实现,我们就可以知道该地址所对应 block 所在的方法了。
+
+### 🐕 [马蜂窝视频编辑框架设计及在 iOS 端的业务实践](https://mp.weixin.qq.com/s/-GGbakkEe7dmC23HT0k3ow)
+
+[@莲叔](https://weibo.com/aaaron7):视频拍摄与视频编辑模块逐渐成为很多超级 App 的必备模块之一。除了像抖音和快手这样的短视频应用,像比如点评和马蜂窝这样的 O2O app在面临内容形式从图文到视频,生产方面从 PGC 到 UGC 的转变下,都需要在 APP 中实现视频拍摄和编辑模块。视频编辑模块相比传统的客户端组件,技术栈除了平台的 API 之外还包括一系列音视频处理的知识,存在一定的门槛。马蜂窝这篇文章比较系统的介绍在在 iOS 上实现一套视频编辑框架需要做的事情,是很好的入门素材,建议有兴趣的同学可以看看。
+
+
+### 🐎 [Dark Mode on iOS 13](https://nshipster.com/dark-mode/)
+
+[@红纸](https://github.com/nianran):作者写的标题有点大,本文实际仅针对于 iOS 13 上颜色的管理提及了 6 个方面(色值/HEX值/系统色值/组件默认色值/Color Set/Xib Color/)。其主要包含如何查找/替换工程中应用的色值以用于适配 iOS 13。
+
+### 🐎 [历时五天用 SwiftUI 做了一款 APP,阿里工程师如何做的?](https://mp.weixin.qq.com/s/QgDSuTFjwFlXzhksfgmkIQ)
+
+[@四娘](https://kemchenj.github.io):淘宝内部尝试使用 SwiftUI 编写一个内部数据监测的 App,简单介绍了一下 SwiftUI 的数据流以及 UI 的自定义,文末对于 SwiftUI 给出了很正面的评价:
+
+> 此项目在短短的 10 个工作日内就能完成,不得不说 SwiftUI 的开发效率真的惊人,虽然目前还有一些 Bug ,但是相信在未来,SwiftUI 会是 Apple 平台 UI 布局的解决办法,关于 SwiftUI 如何在淘系落地业务,还在持续探索中。
+
+### 🐎 [The Curious Case of the Core Data Crash](https://blog.iconfactory.com/2019/08/the-curious-case-of-the-core-data-crash)
+
+[@anotheren](https://github.com/anotheren):Twitterrific 的开发者多年来一直被一个 Core Data 的 Crash 问题困扰,但是一直找不到问题的确切原因。直到近期 TestFlight 反馈上线以后,他发现了一些蛛丝马迹。原来 Twitterrific 被切换时可能会有一些后台下载任务,完成后需要写入 CoreData。虽然后台下载能够正确完成,但数据还未完全写入 Core Data 时,就被错误的标记了后台任务完成,于是应用就被 iOS 系统杀死了。这时在 Crash Report 中就会报告一个 Core Data 的问题,但是实际问题却不在 Core Data 这边。如果你也有类似的问题,不妨看看作者的分析。
+
+### 🐎 [在 Flutter 中如何把报错信息通过服务上传](https://mp.weixin.qq.com/s/foCab1u5je34MdMeb2_-2w)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):App 开发中一个比较重要的环节就是错误捕获上传, Flutter 应用也不例外. 本文介绍了如何通过 Sentry 来捕获 Flutter 应用的错误并上传, 文末附上了完整的 Demo. 这里小编顺带提醒一句: Flutter 1.9.x 对应用的报错进行大量的改良 🎉🎉🎉
+
+### 🐕 [RxSwift异步事件追踪定位工具的研发历程](https://mp.weixin.qq.com/s/h48jcWghZBysU0-0gH8bog)
+
+[@AidenRao](https://weibo.com/AidenRao):当你使用 RxSwift 来实现一些简单的功能如发送一次网络请求、监听按钮点击事件等会让你的代码看起来非常直观简洁,但是如果你使用 RxSwift 实现了一个异步热流且在不同的类之间层层传递和加工转换之后代码的可读性就大大降低,甚至因为抓不到异步事件产生的堆栈而出现难以调试的情况。
+
+为解决 RxSwift 的调试难题,作者通过阅读源码分析 RxSwift 操作符实现原理,然后利用 Swift 反射机制来 dump “Observable Link”,最后又根据 Swift 语言的函数派发机制和命名空间机制设计了一套安全高效的 hook Swift 的动态及静态方法的方案,通过这套 hook 方案完成了对流事件传递链上的关键函数的拦截处理从而顺利实现了精准定位和调试 RxSwift 中异步事件的目标。
+
+## 工具
+
+### 🐎 [Unused code cleanup in iOS projects](https://www.onswiftwings.com/unused-code-cleanup/)
+
+[@zvving](https://github.com/zvving):无用代码总随着项目迭代猥琐发育,逼迫我们养成定期清理的习惯。
+
+本文简单介绍几种清理方式,尤其是能精准的分析 Swift 无用代码的 [Periphery](https://github.com/peripheryapp/periphery),推荐一试。
+
+## 代码
+
+### [KKJSBridge](https://github.com/karosLi/KKJSBridge)
+
+[@享耳先森](https://github.com/iblacksun): 一站式解决 WKWebView 支持离线包、Ajax 请求和 Cookie 同步的问题 (基于 Ajax Hook 和 Cookie Hook):
+- 基于 MessageHandler 搭建通信层
+- 支持 ajax hook 避免 body 丢失
+- Cookie 统一管理
+- WKWebView 复用
+- 兼容 WebViewJavascriptBridge
+
+### [TTAnalyzeLoadTime](https://github.com/huakucha/TTAnalyzeLoadTime)
+
+[@张嘉夫](https://github.com/josephchang10):通过 Mach-O 文件 NonlazyClassList 构建动态库进行 iOS load 方法耗时检测:
+- 仓库中提供了源码以及二进制的文件,源码提供了整个 AnalyzeLoadTime 的全部文件 TTLoadTime.mm,二进制文件为一个动态库,动态库为尽可能提前执行 Load Method Swizzling 提供了可能。
+- 重写 _getObjc2NonlazyCategoryList、_getObjc2NonlazyClassList,可以快速拿到全部 load 的所属 Class 以及 load 的 IMP 地址。
+- 防止运行环境被破坏使用 method_setImplementation 构建 block 执行原函数。
+- 寻找 mach-o 中的 load 以及 Swizzle 共耗时 4 毫秒。
+
+### [LookinServer](https://github.com/QMUI/LookinServer)
+
+[@Jimq](https://github.com/waz0820):[Lookin](https://lookin.work) iOS 端的代码已开源( macOS 端的代码并未开源)。作为 iOS UI 调试工具,主要看点包括与所连接 Mac 的点对点通信,当前页面 UI 信息的结构化提取、使用、传输与导出,UI 图层的 2D/3D 预览,UI 继承树的展示,点选的 UI 控件信息展示,指定方法监听等,对此比较好奇的同学可以一读。
+
+## 音视频
+
+### [ggtalk | 没事刷刷算法](https://talk.swift.gg/41?from=timeline&isappinstalled=0)
+
+[@AidenRao](https://weibo.com/AidenRao):本期磊子和 wamaker 会聊聊算法。算法是个大话题,这期讲的只是两个从业者的小故事,看看他们如何认识算法,如何学习算法,如何看待算法。
+
+## 内推
+
+- [上海-百度手机输入法_iOS 资深研发工程师](https://www.lagou.com/jobs/6101507.html):项目在技术上很有挑战性,团队技术氛围极好。诚心希望各路大神前来撩~。简历发邮箱 xuyanlan@baidu.com 哦~ 急急急!
+- [杭州 丁香园 丁香妈妈业务线 iOS 资深研发工程师](https://www.lagou.com/jobs/6253973.html):要求有 Swift 实际开发经验,简历请发至 gp@dxy.cn .
+
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#84-2019.09.23.md b/Reports/2019/#84-2019.09.23.md
new file mode 100644
index 000000000..6f68d67e8
--- /dev/null
+++ b/Reports/2019/#84-2019.09.23.md
@@ -0,0 +1,126 @@
+# 老司机 iOS 周报 #84 | 2019-09-23
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [《WWDC19 内参》专栏免费开放啦](https://xiaozhuanlan.com/wwdc19?rel=7579246804)
+
+[@老峰](https://github.com/GesanTung):《WWDC19 内参》是 iOS 三大组织(老司机 iOS 周报、SwiftGG 翻译组、知识小集),一起联名发起的一个小专栏,这个专栏集结了三大组织内的一线 iOS 工程师,为你深度解读 WWDC19 中那些值得关注的 Session。上周 iOS 13 正式推送,如何在 iOS 13 上适配深色模式;iOS 13 有哪些新特性等...这些热点问题专栏内都有答案,目前专栏已免费开放,干货多多,感兴趣的读者快来[订阅](https://xiaozhuanlan.com/wwdc19?rel=7579246804)吧。
+
+### [Flutter 1.9 正式发布](https://mp.weixin.qq.com/s/A58tTlb4jeJ3qyPdSiDVMA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):在谷歌为中国开发者举办的最高级别会议 Google Developer Days 的第一天,现场公布了 Flutter 的最新稳定版本:Flutter 1.9。这是有史以来**规模最大**的更新,包含来自 100 多位贡献者的超过 1,500 个 PR. 其中几个比较重大的更新如下:
+
+- 支持macOS Catalina和iOS 13操作系统
+- 新的 Material 小部件
+- 全球语言支持
+- Dart 2.5 发布
+- 工具链改进
+- Web 平台的 Flutter
+
+## 文章
+
+### 🐎 [iOS 13 APNS Device Token 兼容问题](https://info.umeng.com/detail?id=174&&cateId=1)
+
+[@享耳先森](https://github.com/iblacksun):iOS 13 修改了 `[NSData description]` 实现,导致友盟、个推等 Push SDK 有兼容性问题。`description` 方法其实是 debug 用的,希望开发者们谨慎使用。
+
+### 🐕 [RxSwiftWidgets: Declarative Development for UIKit](https://medium.com/better-programming/introducing-rxswiftwidgets-f7a81bc54fe1)
+
+[@zvving](https://github.com/zvving):想要与 SwiftUI+Combine 类似的声明式开发,还想要支持较低版本 iOS,还想要用 RxSwift,贪心吗?
+
+如果你也有这些期望,推荐参考本文作者设计实现 [RxSwiftWidgets](https://github.com/hmlongco/RxSwiftWidgets) 的心路历程。
+
+> 注:RxSwiftWidgets 基于 Swift 5.1,最低支持 iOS 11。
+
+### 🐕 [小程序底层实现原理及一些思考](https://mp.weixin.qq.com/s/EbO7Wp6s29X9YliA2M-iCg)
+
+[@Damonwong](https://github.com/Damonvvong):这是一篇站在前端工程师的角度去分析如何去设计一个小程序框架,文章针对解决在 Vue、SPA、JS 等技术选型前提下,去限制一些把标签的使用和 js 的逻辑控制,写的还是很赞的。但是,个人觉得作者针对小程序的技术框架点评还是有些片面。目前主流的小程序技术主要有几个技术要点:
+
+1. 设计一套精简而不臃肿的 DSL,并解析交给渲染引擎渲染。
+ 目前主要还是基于 WebView,但也有人在研究基于 RN 或者基于 Flutter 各种不同的引擎。
+2. 设计一个 Service worker 做全局管理和逻辑分离
+
+个人觉得使用 Vue + SPA + JS 作为小程序的开发技术选型,不是一个明智之举,还是可能可能会被放弃的。
+
+### 🐎 [Google Engineering Practices Documentation](https://github.com/google/eng-practices)
+
+[@张嘉夫](https://github.com/josephchang10):来自谷歌的工程通用最佳实践,覆盖各种语言和项目。这个文档会尽可能公开,从而帮助开源项目或其他组织。此文档当前包含如下文档:[谷歌代码审核指南](https://github.com/google/eng-practices/blob/master/review/index.md)。
+
+### 🐎 [GitHub Actions 入门教程](http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html)
+
+[@红纸](https://github.com/nianran):GitHub Actions 是 GitHub 的持续集成服务,于 2018 年 10 月推出(但目前任然处于测试阶段)。Github 将动作拆分成 Actions,这样有助于我们多项目公用同一份 Actions,市面上也有提供官方的 [Actions](https://github.com/marketplace?type=actions) 和 awesome 系列的 [awesome-actions](https://github.com/sdras/awesome-actions) 库供你选择。在本文中你将收获基础的 CI 搭建知识以及操作流程。相较于先前每次都要硬写脚本命令来说,这样做极大的降低了使用成本。
+
+### 🐎 [App Store Review Guidelines -- Sign in with Apple](https://developer.apple.com/app-store/review/guidelines/?from=groupmessage&isappinstalled=0#sign-in-with-apple)
+
+[@极速男孩](https://github.com/ztlyyznf001):在2019年 WWDC 上,苹果推出了 Sign In with Apple 功能。苹果更新了审核规则以后要求所有使用第三方登录的应用必须向用户提供以苹果账号登录的选项。但苹果同样举出了几种特例的情况:
+
+- 仅使用公司内部账号登陆。
+- 教育或者企业应用,需要使用现有的教育和企业帐号登录。
+- 应用需要使用政府或者行业背景的共名身份系统或者 电子ID 进行登录。
+- 应用是特定的第三方客户服务客户端,需要使用邮箱,社交帐号,或者其他第三方服务来获取她们的内容。
+
+
+### 🐕 [WWDC 2019: 机器学习移动端的峥嵘初现 Core ML 3.0](https://www.jianshu.com/p/eed7dd1d266b)
+
+[@莲叔](https://weibo.com/aaaron7):CoreML 相信广大的开发者们一定不陌生,自从苹果在 iOS 上推出该框架后,越来越多的 app 都会加入一些数据驱动的应用来优化用户的体验。本文介绍了苹果最新的 CoreML3.0 的新 feature,比如本地模型个性化(能够根据本地用户的行为数据增量的更新模型)、神经网络优化(更多的传输类型化和网络结构),更多的数据类型支持(声音和活动)等等。总体来说 CoreML 越来越强大了,可以预见在未来的 1-2 年内,app 的智能化仍然是一大趋势。
+
+### 🐕 [WWDC 2019: 机器学习新工具 Create ML App](https://www.jianshu.com/p/a5ca26d296ba)
+
+[@莲叔](https://weibo.com/aaaron7):CreateML 是 Apple 官方推出的一款能够一站式通过数据生成模型的工具,配合 iOS 上的 CoreML,能够实现很 fancy 的移动端 AI 应用。本篇文章简单的介绍了 Create ML app 的基本使用流程,感兴趣的同学可以关注
+
+### 🐕 [技术面试最后反问面试官的话](https://github.com/yifeikong/reverse-interview-zh)
+
+[@AidenRao](https://weibo.com/AidenRao):面试就像相亲,你需要用心准备一些问题,好足够了解对方,才能找到适合自己的对象。本文列了一些提问,帮助你更好的了解招聘方。
+
+### 🐎 [iOS13 适配](https://juejin.im/post/5d745f8af265da03b5746fa0)
+
+[@J_Knight_](https://github.com/knightsj):作者在本文中介绍了 10 个关于 iOS 13 的适配问题。这些问题中有关于 API 的调整:比如直接调用 KVC 的 ``setValue:forKeyPath: `` 会造成崩溃,以及在 iOS 13中需要显示设置 ``modalPresentationStyle``。也有关于工程设置方面的问题,比如 LaunchScreen 替代 LaunchImage;以及暗黑模式的适配。近期有做 iOS 13 适配的读者可以简单浏览一下本文。
+
+## 代码
+
+### [Dio 3.0发布,支持Flutter Web 和 Http/2.0](https://juejin.im/post/5d822aefe51d4561cf15e07e?utm_source=gold_browser_extension)
+
+[@邦Ben](https://weibo.com/linwenbanag):Flutter 常用网络库 Dio 日前发布3.0新版本更新,主要支持点如下:
+
+- 支持 Flutter web
+- 将 CookieManager 抽离为单独的包
+- 提供了 Http/2.0 adapter.
+
+大版本升级带了一些破坏性升级,升级的时候,可以看下提供的[升级指南](https://github.com/flutterchina/dio/blob/master/migration_to_3.0.md)
+
+## 音视频
+
+### 🐎 [在 Xcode 11 中创建一个不带有 storyboard 的项目的方法有些新变化](https://www.youtube.com/watch?v=Htn4h51BQsk)
+
+[含笑饮砒霜](https://weibo.com/chinafishnews/):SceneDelegate 是 iOS 13 中新加入的通过 Scene 管理 App 生命周期的方式,在 App 完成启动后,控制权被交接给 SceneDelegate。因此在没有 Storyboard 的情况下创建新项目的方式发生了一些变化。在这个视频中,作者 Sean Allen 将介绍如何在不使用 Storyboard 的情况下在 Xcode 11 中创建新的项目。
+
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#85-2019.09.30.md b/Reports/2019/#85-2019.09.30.md
new file mode 100644
index 000000000..52292dc10
--- /dev/null
+++ b/Reports/2019/#85-2019.09.30.md
@@ -0,0 +1,143 @@
+# 老司机 iOS 周报 #85 | 2019-09-30
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+明天就国庆长假了,本期也是国庆前的最后一期周报,长假期间周报将暂停一期,节后恢复正常节奏。祝大家长假快乐~
+
+## 新闻
+
+### [Swift Release Process](https://swift.org/blog/5-2-release-process/)
+
+[@四娘](https://kemchenj.github.io):Swift 宣布接下来的 5.2 版本会专注于提升性能。
+
+### [开源 React Native 组件库 beeshell 2.0 发布](https://mp.weixin.qq.com/s/5XgNTQdBm4QxiStj8dFtHg)
+
+[@looping](https://github.com/looping):近期美团发布了 React Native 组件库 [beeshell 2.0](https://github.com/Meituan-Dianping/beeshell),共计开源 38(33 个组件与 5 个工具)个功能。同时本文也对这套组件的系统设计和方案实现进行了详细的讲解,并描述了这套工具在测试和开发调试上的探索,最后也列出了他们对组件库开源建设的长期规划。感兴趣的同学可以持续关注下。
+
+## 新手推荐
+
+### [iOS 实践检查清单](https://github.com/Binlogo/iOS-Practice-Checklist)
+
+[@Parsifal](https://github.com/ParsifalC):一份较细致的 iOS 项目实践检查清单,列举了 iOS 项目从“创建-开发-调优-发布”不同阶段分别需要注意到的一些细节,适合新人入门上手前几个项目时做自查。
+
+## 文章
+
+### 🐎 [将 flutter_web 迁移到 flutter1.9+](https://github.com/SwiftOldDriver/iOS-Weekly/issues/1671)
+
+[@邦Ben](https://weibo.com/linwenbang):前不久的 Google 大会上公布了 Flutter 1.9,该版本最大的 feature 就是正式支持 Flutter web,这篇文章简要的翻译了一下迁移 Web 到 1.9 版本的方式。按需阅读即可。
+
+Flutter web 还存在不少问题
+
+- 已经的性能问题还没解决
+- 不支持 hot reload
+- 不支持 flutter plugins
+- 不支持 dart:io,只走 http
+- 还不支持 Platform.is
+
+### 🐕 [Flutter 无痕埋点](https://juejin.im/post/5d8c6d40f265da5b633cc5a2)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):无痕埋点一直是各端都在不断探索的一个方向, Flutter 由于刚刚诞生不久, 这方面的资料甚少, 作者从 Flutter 源码层面探寻到不少解决方案, 不失为一个不错的参考. 另附上咸鱼技术组的 Flutter 埋点方案作为补充参考:
+
+- [揭秘!一个高准确率的Flutter埋点框架如何设计](https://www.infoq.cn/article/3-vxBwYJXQxXLDlbu09x)
+
+> 本文由 [枫自飘零](https://juejin.im/user/5cf8c575f265da1bb80c1ea1) 自荐。
+
+### 🐢 [Apple Push Notification Device Tokens](https://nshipster.com/apns-device-tokens/)
+
+[@享耳先森](https://github.com/iblacksun):iOS 13 发布后,不少推送厂商都通知开发者们升级 SDK,`Mattt` 特地写文章介绍此次改动。
+
+APNS `DeviceToken` 的类型其实是 Data,具体含义和格式是个黑盒,只是 App 拿到 Data 后需要提交给各自的服务端,这就涉及到将 Data 进行格式转换的问题。
+
+iOS 7 之前 Foundation 没有 `NSData -base64EncodedStringWithOptions` 方法,开发者们发现可以使用 `NSData description` 方法输出再进行转换,而 `description` 其实是一个 Debug 方法,具体实现随时会改。
+
+### 🐎 [Flutter Face Detection](https://medium.com/flutter-community/flutter-face-detection-ac18e3e2211f)
+
+[@老驴](https://www.weibo.com/6090610445):这是一篇比较基础的用 Flutter 和 Firebase 来实现面部识别的教程。
+
+作者介绍了如何使用 Firebase ML Kit 和 Flutter 中 CustomPainter 类相结合,在图片上直接显示出面部位置。
+
+总体来说,这算是个不错的入门教程,有兴趣的话不妨看看。
+
+### 🐕 [iOS 13 适配要点总结](https://juejin.im/post/5d8af88ef265da5b6e0a23ac)
+
+[@anotheren](https://github.com/anotheren):iOS 13 正式发布已经快两周了,本文总结了各种看得见和看不见的迁移问题,如果你还没有动手迁移,是时候开始了。例如 Dark Mode / Sign In with Apple 这类改动更是需要联动产品和设计,需要尽早准备。
+
+### 🐕 [Xcode 11 初体验](https://juejin.im/post/5d8b0b6951882502c5533e9b)
+
+[@J_Knight_](https://github.com/knightsj):本文作者从工作流,编辑器,设计工具,代码管理,Debug 工具,性能分析工具,模拟器等方面介绍了 Xcode 11 的更新内容;本文图文并茂,介绍得比较全面,值得参考。
+
+### 🐢 [SwiftNIO —— Swift 版的 Netty](https://juejin.im/post/5d774b2ce51d453b5c121948)
+
+[@xiaofeu86](https://weibo.com/xuyafei86):SwfitNIO 是一款基于事件驱动的跨平台网络应用程序开发框架,其目标是帮助开发者快速开发出高性能且易于维护的服务器端和客户端应用协议。本文是一篇整理性文章,从网络编程的几种并发模型到 Netty 的介绍再到 SwfitNIO,内容比较全面,适合想要了解 SwfitNIO 和并发编程的人阅读。
+
+### 🐕 [Swift Concurrency Manifesto 中文翻译](https://gist.github.com/yxztj/7744e97eaf8031d673338027d89eea76)
+
+[@极速男孩](https://github.com/ztlyyznf001):这篇文章旨在来为 Swfit 讨论出一种 first-class 的并发模型。这个提案主要提供了 async/await 和 Actor 两种不同的方法。更多的内容可以参考作者的[原文](https://gist.github.com/lattner/31ed37682ef1576b16bca1432ea9f782)。
+
+### 🚧 🐎 [一个 delegate 被声明为强引用又被悄悄地改掉了](https://twitter.com/chockenberry/status/1171102488205787141?s=20)
+
+[@JimQ](https://github.com/waz0820):本 tip 来自一条 tweet。`UIViewController.presentationController.delegate` 的 delegate 在 iOS 13 之前的声明是 strong 的,导致 delegate 的两端相互强引用无法正常释放,苹果在 iOS 13 悄咪咪地改为了 weak,但对于 iOS 12 及之前的版本这个内存泄漏问题则会一直存在,有使用 UIPresentationController 的同学留意一下。
+
+### 🐎 [WCCgiMock - 客户端模拟网络回包工具介绍](https://juejin.im/post/5d834380e51d4561ea1a9514)
+
+[@红纸](https://github.com/waz0820):CgiMock 工具可以帮助开发者在不侵入代码的情况下,构造模拟数据,模拟网络回包。**WCCgiMock** 实现了两种工作模式:
+
+1. 第一种是在 Cgi 请求阶段拦截请求,返回预设好的模拟数据给业务层。
+2. 第二种模式是,在请求阶段不拦截,等到后台返回回包后,将模拟数据与后台回包进行合并,再返回给业务层。
+
+与此同时,此工具具有以下特点:编写语言跨平台、内部DSL设计、响应式数据、用例组织能力、热更新调试等。遗憾的是 **WCCgiMock** 暂时还未开源,作者正在筹划准备当中,尽情期待。
+
+### 🐕 [一种查看 Block 中引用的所有外部对象的实现方法](https://juejin.im/post/5d7e3b8de51d4561ac7bcd5f)
+
+[@looping](https://github.com/looping):本文通过分析 Block 内部布局结构来查看一个 block 所引用的外部对象,原理如下:
+
+1. 系统在编译 block 时会把所有要访问的外部对象或变量复制到 block 对象实例内部;
+2. 当一个 block 中有引用外部对象或变量时,它的 `Block_layout->flags` 值中就会有 `BLOCK_HAS_EXTENDED_LAYOUT` 标志;
+3. 如果有 `BLOCK_HAS_EXTENDED_LAYOUT` 标志,那么所有引用的外部数据成员的扩展描述信息就能在 block 的 `Block_layout->descriptor` 中找到;
+4. 其中布局描述信息又能在 `Block_descriptor->layout` 上找到,包括引用对象的指针修饰类型和数量;
+5. 这样一来,就能通过计算偏移来得到外部对象的地址,并转化成 OC 对象输出。
+
+作者在文中不仅对 block 结构进行了解析和说明,同时还给出了完整的代码实现和使用方式,是一份很好的学习资料。
+
+### 🐎 [我开发了一个 SwiftUI 库,将 CSS 引入 iOS 开发](https://mp.weixin.qq.com/s/I0HMHBBzhxsKj528mUqXmg)
+
+[@Damonwong](https://github.com/Damonvvong): 今年 WWDC 推出的 SwiftUI 和以往 iOS 接触的界面开发方式完全不同,是一套全新的设计。坦率的说,整套设计更接近于目前的 Web 开发。作者也正是看到了这点,对是否能将 CSS 的设计引入到 SwiftUI 中做了一些探索,写了一些总结。并开源了 [SwiftUI-CSS](https://github.com/hite/SwiftUI-CSS) 感兴趣的可以了解一下。
+
+当然,目前 SwiftUI 还处于极度不稳定的阶段,不建议大家盲目跟风学习,学有余力稍微了解一下是不错的,现阶段学习并运用到实际应用中是不切实际的。
+
+## 音视频
+
+### [ggtalk | 从石油到 iOS,听听思琦的转行经历](https://talk.swift.gg/45?from=timeline&isappinstalled=0)
+
+[@Parsifal](https://github.com/ParsifalC):关注我们周报的读者相信对思琦([@SketchK](https://github.com/SketchK))都会有印象,因为他是我们目前 Logo 的设计者。这次 GGTalk 思琦和梁大一起聊了他是如何从石油相关专业转化成功到 iOS 开发的历程。
+
+> 梁大:在我认识的人当中,思琦绝对是最厉害的那一批。当然我说的不是天赋,有些人就是天才,你怎么努力也无法超越。思琦厉害的地方在于思考分析能力和执行力。从有转行想法开始,收集信息、了解行业、分析不同职位,最终确定 iOS。然后开始转行,培训班、自学、开源项目、发文章、准备面试、拿到 offer。入职美团之后,完善知识体系、尝试不同方向、不断给自己提出挑战,每一年都在飞速成长。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#86-2019.10.14.md b/Reports/2019/#86-2019.10.14.md
new file mode 100644
index 000000000..5552e85f1
--- /dev/null
+++ b/Reports/2019/#86-2019.10.14.md
@@ -0,0 +1,129 @@
+# 老司机 iOS 周报 #86 | 2019-10-14
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Twitter 重新上架 macOS 客户端](https://apps.apple.com/us/app/twitter-for-mac/id1482454543?mt=12)
+
+[@张嘉夫](https://github.com/josephchang10):10 月 11 日,Twitter 重新上架了经过 Project Catalyst 重写后的 Twitter for Mac 客户端。新版 Twitter 客户端支持拖拽、深色模式、多窗口浏览以及快捷键操作等功能。
+
+## 文章
+
+### 🐕 [Swift 的字符串为什么这么难用?](https://kemchenj.github.io/2019-10-07/)
+
+[@Damonwong](https://github.com/Damonvvong): **Swift** 的字符串的设计可以说是 **Swift** 中最难以理解的语法之一了。不过,我们周报的小伙伴 [@kemchenj](https://github.com/kemchenj) 同学写了一篇通俗易懂的文章,详细阐述了
+
+- 为什么会存在 `Collection.Index` 这个设计
+- 目前的 `Collection.Index` 是怎么设计的,存在哪些问题
+- 未来的 `Collection.Index` 会怎么改进
+
+感兴趣的同学可以仔细阅读一下,算是一篇不错的 **Swift** 语法进阶文章。
+
+### 🐕 [iOS 端 h5 页面秒开优化实践](https://juejin.im/post/5d8da122f265da5b5a7209fa)
+
+[@莲叔](https://weibo.com/aaaron7):基于移动端的 H5 快开优化已经成为各大 App 的标配模块,通常的做法有资源缓存、离线包、data prefetch等等。本文作者首先分析了 H5 页面加载的流程,并在 iOS 上基于 WkWebview 通过实现请求的拦截,实现了资源缓存的机制。文章整体不算体系,因为并没有包含很多 state of the art 的优化方式,但在 WkWebview 的使用技巧上介绍的还比较详细,仍是一篇值得一看的文章。
+
+### 🐕 [The Simple Life(cycle) of a SwiftUI View](https://medium.com/flawless-app-stories/the-simple-life-cycle-of-a-swiftui-view-95e2e14848a2)
+
+[@老驴](https://www.weibo.com/6090610445): 相信大家对 UIKit 中 UIView,UIViewController 的生命周期一定是熟悉到不能更熟悉了,这些知识点也一直是面试中的常考问题。那么在 SwiftUI 中,View的生命周期又是怎么样的呢?这篇文章就介绍了作者对其的理解。有兴趣使用 SwiftUI 的同学么可以简单的了解一下。
+
+### 🐕 [Reducing iOS storyboard merge hell](https://medium.com/flawless-app-stories/ios-storyboard-merge-hell-b4cbb2e57dfc)
+
+[@J_Knight_](https://github.com/knightsj):作者介绍了几种避免在合并代码时在 storyboard 引起的冲突的方法:使用 SwiftUI,使用 nib,Diff 工具,锁定文件等方法。经常使用 storyboard 开发的朋友可以看一下。
+
+### 🐕 [iOS 13](https://nshipster.com/ios-13/)
+
+[@老峰](https://github.com/GesanTung):本文来自
+Mattt (@mattt) 分享了 iOS 13 中的一些新的 API 及框架:
+
+- [Presentation framework](https://developer.apple.com/documentation/LinkPresentation):App 通过 URL 获取站点元数据,以富文本形式展示 URL, 可以丰富 URL 的展现形式。
+- [SFSpeechRecognizer](https://developer.apple.com/documentation/speech/sfspeechrecognizer):设备内置语音识别,支持离线语音识别。
+- [URLSessionWebSocketTask](https://developer.apple.com/documentation/foundation/urlsessionwebsockettask):提供 Web Socket 系统原生框架,不在需要使用三方框架。
+- [BackgroundTasks framework](https://developer.apple.com/documentation/backgroundtasks?language=objc):新的 Background Tasks 框架可以更方便的执行后台任务。
+- [OperationQueue progress](https://developer.apple.com/documentation/foundation/operationqueue/3172535-progress):OperationQueue 通过 progress 属性可以方便的获取运行队列的进度。
+
+[文章](https://nshipster.com/ios-13/)还分享了 MapKit、JavaScriptCore、UIKit 等新的 API,限于篇幅不一一列举。
+
+### 🐎 [Alternatives to protocols in Swift](https://www.swiftbysundell.com/articles/alternatives-to-protocols-in-swift/)
+
+[@四娘](https://kemchenj.github.io/):Swift By Sundell 这周探讨的是 protocol 的替代品,虽然 Swift 称自己为 protocol-oriented,但实际上有很多问题都不适合使用 protocol,作者列举了一些例子并且提供了更好的解决方案。
+
+### 🐎 [重磅|庖丁解牛之——Flutter for Web](https://mp.weixin.qq.com/s/krR2XsDXvakMlZWbV-VvSg)
+
+[@邦Ben](https://weibo.com/linwenbang):众所周知,1.9 版本加入了 Flutter Web 的支持,但也仅限于技术预览。该文通过移动端原理和 Web 方式进行对比,直观感受到两者区别(差异主要在 dart:ui 和 engine 这一层)。
+
+优点:通过 HTML + CSS + Canvas 的方式更好的兼容,低成本迁移(Flutter 上层直接兼容)
+缺点:dart2js 生成的代码过大,功能尚不完备,使用的 BitmapCanvas 会导致一些缩放场景有性能问题
+
+在这么一个优秀的分层设计中,Flutter Web 仍值得继续期待,等到可用版本出现。
+
+### 🐕 [A Comprehensive Guide to All 120+ Settings URLs Supported by iOS and iPadOS 13.1](https://www.macstories.net/ios/a-comprehensive-guide-to-all-120-settings-urls-supported-by-ios-and-ipados-13-1/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B424)
+
+[@享耳先森](https://github.com/iblacksun):iOS 的 `Settings` App 一直都支持通过 URL Scheme 的方式打开某一个子项,本文作者收集了 120+ 个在 iOS 13 下支持的 URL,大家可以浏览看是否有满足自己需求的点。需要注意的是:这些 URLs 随时可能在未来 iOS 版本中移除或被 Apple 审核团队以 Private API 为由拒绝上架。
+
+### 🐕 [Reverse Engineering Swift Applications](https://github.com/iOS-Reverse-Engineering-Dev/Swift-Apps-Reverse-Engineering/blob/master/Reverse%20Engineering%20Swift%20Applications.pdf)
+
+[@极速男孩](https://github.com/ztlyyznf001):本篇文章主要介绍了如何去反编译一个 Swift 的 app 。首先介绍了使用如何通过 Name Mangling 和 swift-demangle 来反编译得到一个 Swift 的 app 中的方法。Class Dump 现在已经对 Swift 提供了有限的支持。最后探索了去 hook swift 中的方法的可能。
+
+## 代码
+
+### [基于 NSProxy 开发的支持数据绑定、事件绑定的库](https://github.com/ghwghw4/GICDataBinding)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):GICDataBinding 是一款基于 NSProxy 开发的数据绑定库,支持数据绑定(单向、双向)和事件绑定,重要的是支持 JS 表达式,当然也支持 Swift 开发,但是要求 Swift 中的数据类型必须是 NSObject 子类。基于 GICDataBinding 数据绑定系统,可以做一些之前实现起来比较复杂的功能,比如重新思考 ViewModel 的定义,将 ViewModel JS 化、配合 Texture 实现整个 UI 基于绑定系统的可响应式设计等。
+
+### [Flutter 动画组件](https://juejin.im/post/5d9c701e6fb9a04e187c9799?from=timeline&isappinstalled=0)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):[Flutter Animation Set](https://github.com/YYFlutter/flutter-animation-set) 由 YYFlutter 团队开发, 简洁的 API , 简化了动画实现, 特别是组合动画. 项目默认实现了不少酷炫的效果, 开箱即用.
+
+### [Yaap: Yet Another (Swift) Argument Parser](https://github.com/hartbit/Yaap)
+
+[@anotheren](https://github.com/anotheren):Yaap 是一个 Swift 写的 CLI 库,它使用了 `Mirror` 和 `Property Wrapper` 简化参数和选项的声明,并具有以下特性:
+
+* 强类型的参数和配置解析;
+* 自动生成帮助和使用信息;
+* 多命令路由;
+* 智能拼写错误提示
+
+如果你也在从事命令行相关的开发,不妨试一试。
+
+### [xcderiveddata](https://github.com/NSHipster/xcderiveddata)
+
+[@Jimq](https://github.com/waz0820):用于打印 Xcode 工程的派生数据目录(derived data directory)的命令行工具,也支持把结果传递给 xcodebuild 或其他命令去自行化你的构建过程。
+
+## 音视频
+
+### [ggtalk | 互联网公司的开发流程](https://talk.swift.gg/47?from=timeline&isappinstalled=0)
+
+[@ggtalk](https://talk.swift.gg/):最近几个月翻译组的大事之一,就是蓉老师的开发流程调研。为了获得最新最全的信息,专程去广州和各位大佬讨论开发流程。蓉老师基本聊遍了国内的一线互联网公司,整理了一份文档,会在这期中详细介绍。
+
+除了介绍流程,我们还讨论了一些相关内容,比如流程存在的问题、国内流程做的好的公司、研究流程对我们自己的意义等等。如果你的团队正面临流程问题,应该能从这期节目中获得一些灵感。
+
+这期讲的内容比较长,容易走神,大家可以对照着文字版来听:[文字版流程整理摸我](https://github.com/numbbbbb/ggtalk-rss/blob/master/development_process.md)。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#87-2019.10.21.md b/Reports/2019/#87-2019.10.21.md
new file mode 100644
index 000000000..e1afb8584
--- /dev/null
+++ b/Reports/2019/#87-2019.10.21.md
@@ -0,0 +1,99 @@
+# 老司机 iOS 周报 #87 | 2019-10-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## 新成员介绍
+
+热烈欢迎 [@五子棋](https://github.com/SatanWoo) 加入我们编辑部,同时也恭喜我们周报的编辑阵容继续升级,为大家提供更多有价值的内容!!
+
+## 新闻
+
+### 🌟 [Transporter Now Available on the Mac App Store](https://developer.apple.com/news/?id=10152019a)
+
+[@anotheren](https://github.com/anotheren):Xcode 11 中 Apple 移除了 Application Loader,导致如果你需要上传 ipa 或 pkg 只能使用 Archive 功能或者必须依赖 Xcode 10.3 或更早版本的 Application Loader。现在,Transporter 作为替代品,已经在 [Mac App Store](https://apps.apple.com/us/app/transporter/id1450874784?mt=12) 上线。并且你可以从它的名称变化发现,不仅是应用,现在所有 Apple 生态链中最终产品的交付均可由它完成。
+
+## 文章
+
+### 🌟 🐢 [前端从 0-1 学习](https://juejin.im/post/5d9fc32f5188256c6d51dae6)
+
+[@张嘉夫](https://github.com/josephchang10):由知识小集团队 [Lefe](https://github.com/lefex) 发起的前端小课,一本帮助你学习前端的多媒体电子书。每天一小课,分阶段、系统地学习前端知识,前端从 0 到 1。
+
+### 🌟 🐕 [Flutter in action 闲鱼技术最佳实践](https://mp.weixin.qq.com/s/RzvJeT_w69oZJmS9JHGBCg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):最近咸鱼技术组又开源了自用 Flutter 项目开发 CLI ([flutter-boot](https://github.com/alibaba-flutter/flutter-boot)), 这对于混合开发来说简直是福音, 大大简化了 Flutter 开发在混合项目上的配置流程和难度。文末的福利更是给力, 放出了阿里系对于 Flutter 探索过程中一些实践经验 - Flutter In Action , 书中详细讲解了多个 Flutter 知名开源项目, 可谓是 Flutter 进阶必读参物。
+
+### 🌟 🐎 [Objective-C objc_msgSend 方法的新原型](https://zhuanlan.zhihu.com/p/86358529)
+
+[@五子棋](https://github.com/SatanWoo):从事 iOS 开发的同学想必都对 objc_msgSend 这个函数不陌生,许多黑科技玩法都是依托于 objc_msgSend 自身的实现。本文从 objc_msgSend 自身的流程谈起,摸索函数原型在 ABI 不匹配情况下会产生的一些非预期现象,最终推导出苹果最近为什么需要修改 objc_msgSend 函数原型。
+
+### 🐢 [Flutter 浪潮下的音视频研发探索](https://mp.weixin.qq.com/s/GqoAMeuv1VRDpWT65YMzsQ)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):本文分享内容主要分为四个方面,首先对 Flutter 有一个简单介绍以及说明选择 Flutter 作为跨平台框架的原因,其次介绍了 Flutter 中与音视频关系非常大的外接纹理概念,以及对它做出的一些优化,并且对闲鱼在音视频实践过程中碰到的一些 Flutter 问题提出了一些解决方案—— TPM 音视频框架。最后详细介绍了闲鱼 Flutter 多媒体的开源组件,包括视频图像拍摄组件、播放器组件、视频图像编辑组件等。这些组件正在逐渐开源,开发者在基于 Flutter 开发音视频应用时可以充分利用闲鱼开源出的音视频模块能力,搭建 APP 框架,尽可能的减少重复劳动。
+
+### 🐢 [如何在 Flutter 上实现高性能的动态模板渲染](https://mp.weixin.qq.com/s/fX6DtXYtKw0hFqf7t---eA)
+
+[@老峰](https://github.com/GesanTung):本来介绍了闲鱼技术团队通过动态模板下发,实现 Flutter 端的动态化模板高性能渲染,包括 Flutter 在 Layout 过程中 RelayoutBoundary 优化、Element 更新优化、以及自定义 Widget、Element 以及 RenderObject 优化,虽然当前方案还存在一些问题,但为我们实现态模板渲染提供了思路。
+
+### 🚧 🐎 [React Native App : White Label 101](https://medium.com/flawless-app-stories/react-native-white-label-101-163c1967c12a)
+
+[@looping](https://github.com/looping):本文介绍了使用不同的 target 构建 iOS 端 React Native 的 white label(贴牌,模板 app) 应用的一种方案。主要是通过 WhiteLabelConfig.tsx 在 RN 侧获取应用信息,原生则通过在 target 对应的 WhiteLabelConfig.m 里提供应用信息,这样不同的 target 就能显示不同的内容了。
+
+Android 也有类似方案,参考 [White Label 102](https://medium.com/@najera.sean/react-native-white-label-102-aba9c56f385c)。
+
+### 🐕 [macOS 内核之 hw.epoch 是个什么东西? | 枫言枫语](https://justinyan.me/post/3935)
+
+[@四娘](https://kemchenj.github.io):作者在学习 macOS 系统的 `sysctl()` 函数时,其中一个用来标记计时标准的常量 `EPOCH ` 在电脑里打印出来却与实际不相符,所以一路追查到 BSD 层去查看。虽然最后还是没有了解到原因,但也是一次有趣的代码之旅。
+
+## 工具
+
+### [XcodeCleaner-SwiftUI](https://github.com/waylybaye/XcodeCleaner-SwiftUI)
+
+[@水水](https://www.xuyanlan.com):这个 MacOS 的应用可以帮助你清除遗留以及废弃文件,从而极大的节省硬盘空间,你可以每月或者每周运行一次进行清理。更关键的是它是开源的,使用 SwiftUI 进行开发,对实现原理感兴趣的小伙伴可阅读源码一窥究竟。
+
+### [lldb-symbolic](https://github.com/luoqisheng/lldb-symbolic)
+
+对于线上的 Crash ,有很多工具可以去采集,如 Fabric 等,以便我们可以方便的定位 Crash 的原因。而对于开发中的 Crash ,我们依然可以通过异常断点或者查看堆栈的方式来做,但操作相对来说还是繁琐一些。于是,作者写了这个库来简化这一流程,有兴趣的同学可以看一下,也可以顺带了解下定位 Crash 的方式。
+
+## 代码
+
+### 🌟 [Impact - A crash detection and recording library](https://github.com/ChimeHQ/Impact)
+
+[@xiaofei86](https://weibo.com/xuyafei86):Impact 是一个用来检测和记录崩溃的工具库,它并不是一个完整的崩溃报告系统,但一定是其中最重要的一环。进程内的崩溃报告系统的运行环境是十分糟糕的,现有的第三方系统在某些方面都存在着一定的权衡与取舍。苹果自己的崩溃系统对开发者又十分不友好。而本仓库的作者在 [Crashlytics](https://firebase.google.com/products/crashlytics) 工作多年,也与 [PLCrashReporter](https://www.plcrashreporter.org/) 有过合作,在这方面的拥有相当多的经验。尽管进程内的崩溃报告还存在很多难题,但正因此才使得这项工作充满魅力,相信读者们也会在深入理解这个领域后受益良多。
+
+### [ASCollectionView - A SwiftUI port of UICollectionView](https://github.com/apptekstudios/ASCollectionView)
+
+[@享耳先森](https://github.com/iblacksun):开始使用 SwiftUI 了吗?那你应该看看这个库:Swift UI 下对 UICollectionView 和 UITableView 的实现,支持 `preloading` 和 `onAppear/onDisappear`,还支持 `UICollectionViewCompositionalLayout`。
+
+### [NEKit - A toolkit for Network Extension Framework](https://github.com/zhuhaow/NEKit)
+
+[@EyreFree](https://weibo.com/eyrefree777):NEKit 能够在我们构建一个基于 `NETunnelProvider` 的 Network Extension 应用时提供各种绕过网络过滤和审查所需的功能,同时尽可能减少对框架本身的干扰。它也是目前 GitHub 上与 Network Extension 相关的库中 Star 数最高的。同时我们也发现有国内的开发者基于该库实现了一些不可描述的功能,并开源了相应源码 [BearFree](https://github.com/zlyBear/BearFree),可以作为使用示例,有需求的同学可以自行学习 & 研究。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#88-2019.10.28.md b/Reports/2019/#88-2019.10.28.md
new file mode 100644
index 000000000..4e89881ed
--- /dev/null
+++ b/Reports/2019/#88-2019.10.28.md
@@ -0,0 +1,107 @@
+# 老司机 iOS 周报 #88 | 2019-10-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🐕 🌟 [浅谈移动工程师跨界机器学习之路](http://satanwoo.github.io/2019/10/27/MNN1/)
+
+[@莲叔](https://weibo.com/aaaron7):移动开发工程师,尤其是 iOS 开发,到底有没有人要,堪称是技术界的薛定谔的猫问题。但从另一方面看,移动开发的市场大幅降温、回归理性也是事实。本文作者是近期新加入老司机编辑[@五子棋](https://satanwoo.github.io)大佬,来自于手淘的 MNN 团队(MNN 是手淘开发的移动端 AI 前向计算框架),结合自己的经历,探讨了从移动开发工程师跨界机器学习的可能性与潜在收益。
+
+本文首先阐明了广义的 AI 、或者说产业界的 AI 其实90%在纯算法之外,是一个实打实的需要用工程手段解决问题的领域,所以工程师跨界机器学习是可行的。之后文章举了三个在实现端侧前向计算框架的过程中可能会涉及到的技术领域,分别是数据自描述协议(用于构成模型文件)、汇编知识(用于实现底层的 Op 性能优化)以及 GPU 相关知识(通过 OpenGL 等 GPU 接口利用 GPU 来跑相关的计算)。从我的经验来看确实这里每一个子领域都值得深挖并都有一定的技术红利。(甚至对于不做机器学习也很有用)整体来说这篇文章值得一看,尤其适合具备一定经验但苦于没有深入方向的移动工程师参考。
+
+### 🐕 🌟 [Swift 5.2 将使用新的诊断框架](https://juejin.im/post/5dac17efe51d4524d6748831)
+
+[@四娘](https://kemchenj.github.io/):`error: type of expression is ambiguous without more context` 可能是大家最经常在 Swift 看到的编译错误,它很准确地描述了问题,但却对于解决问题毫无帮助。
+
+在完成了 ABI 和 Module 稳定之后,Swift 团队终于有时间静下来优化诊断系统的体验,他们近日在博客里更新了诊断系统的重构方向以及思路。著名开发者[图拉鼎](https://weibo.com/1846569133/Ic2BSxNBh)也在微博表示对于这次优化表示期待:
+
+> 我记得我刚开始学编程时,当时学 C 语言,用的编译器是 GCC。当时 GCC 的 Diagnostic 做的很差,经常给出一些不知所云的错误提示。当时 Apple 用的也是 GCC,但很快就换成了 LLVM/Clang,后者的一大改进就是 Diagnostic。有理由相信这次 Apple 会做好 Swift 的 Diagnostic。
+
+### 🐕 [The Scene Delegate In Xcode 11 And iOS 13](https://learnappmaking.com/scene-delegate-app-delegate-xcode-11-ios-13/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B426)
+
+[@张嘉夫](https://github.com/josephchang10):在 Xcode 11 中,iOS app 的默认模版会自动添加 `SceneDelegate`,那么这个在 iOS 13 中新出现的 `scene delegate` 的作用究竟是什么?作者深入分析了 iOS 13 和 Xcode 11 带来的一些改变,尤其是关于 scene delegate 和 app delegate,并探讨了其如何影响了 [SwiftUI](https://learnappmaking.com/swiftui-getting-started-how-to-ios-swift/)、Storyboard 和基于 XIB 的 UI 界面。
+
+### 🐕 [Chris Lattner 讲述 Swift 起源故事](https://juejin.im/post/5daaf962f265da5b6a16aa87)
+
+[@老峰](https://github.com/GesanTung):本文 Chris Lattner 讲述了 Swift 起源故事,内容包括 Swift 初始团队与原型的介绍、Swift 文档编辑、Swift 社区对 Swift 发展的贡献、 Swift 发展现状及预期、Swift 在 Apple 生态外的推广及布局、Swift Evolution 在 Swift 演进中的影响,本文由 SwiftGG 翻译组翻译,感兴趣的读者可以阅读[原文](https://oleb.net/2019/chris-lattner-swift-origins/)。
+
+### 🐕 [iOS 开发请您面向未来学习](https://juejin.im/post/5da6d14ae51d4524b601b78a)
+
+[@EyreFree](https://weibo.com/eyrefree777):本文作者从一位 5 年经验的 iOS 开发读者的诉苦为切入点,结合当前 iOS 开发市场行情,为我们分析了一个资深 iOS 开发人员在当下到底应该掌握哪些知识、技能,才能继续在日新月异的 IT 行业有自己的一席之地。且文中作者用多幅思维导图抛出了认为有必要深入研究的方向与领域,或许可以给一些尚无明确职业发展规划或入行一段时间但仍比较迷茫的 iOS 开发同学们一些启发。
+
+### 🐕 [SwiftUI Layout System | Alexander Grebenyuk](https://kean.github.io/post/swiftui-layout-system)
+
+[@四娘](https://kemchenj.github.io/):今年新出的 SwiftUI 在易用性上做到了极致,其中起到支撑作用的就是布局引擎,作者在这篇文章里带我们剖析了 SwiftUI 的布局机理和 Stack 的实现,与 AutoLayout 进行比较,解释了 SwiftUI 为什么不需要处理约束无法解决的情况,并且总能给出一个 valid 的布局。
+
+### 🐕 [小程序底层实现原理及思考](https://mp.weixin.qq.com/s/T6Mcu24Cmih-E_VCUo3PEQ)
+
+[@老驴](https://www.weibo.com/6090610445):虽然小程序的热度已经远远不如前两年那么疯狂了,但是现在越来越多的公司都希望自己能够在自己的 App 里加入小程序来打造自己的生态。
+
+本文是《深入浅出Vue.js》的作者在接到开发小程序引擎任务后所做的一些尝试以及自己的思考。作者在选定使用 Vue 作为基础之后,从安全性,性能角度上出发,做了很多种的方案,最后选定了最合理的方案。相信能够对现在在开发小程序的同学们有一定的帮助。
+
+### 🐢 [如何只用 Swift 写一款句子阅读 App](https://www.iweslie.com/index.php/archives/219/)
+
+[@JimQ](https://github.com/waz0820):这是『简・阅 - Simple Reader』App 作者关于开发这款作品的深度分享。用作者的话说,“这篇文章会讲述 Simple 整个 App 从诞生到现在所发生的一切,包括 UI 的设计,客户端的开发,后端服务器的搭建,宣传等等”。不同于多数侧重于讲理念、历程或运营,作者从需求文档、草图、设计稿、交互原型,到客户端界面实现、功能适配、动画细节,再到服务端弃第三方用 Vapor 开发,全栈还原,且全部高清截图或源码,全程无打码,就差开源了,也是个耿直的 boy 🙃,相信大家看了会有收获。
+
+### 🐕 [SwiftUI Previews on macOS Catalina and Xcode 11](https://nshipster.com/swiftui-previews/)
+
+[@J_Knight_](https://github.com/knightsj):作者介绍了几种 SwiftUI 的使用方法:不用重新编译就可查看 UI 组件的多状态(比如按钮上的不同文字,文字的不同大小,多语言文字),某一个控件的 Dark Mode,同一个页面在不同机型(包括 iPhone 和 iPad)的展示效果。对 SwiftUI 感兴趣的读者可以参考一下这篇文章。
+
+### 🐕 [看到这篇启动优化,让你的App有顺滑无比的启动速度~~](https://juejin.im/post/5cff0ada6fb9a07edc0b4c3c)
+
+[@极速男孩](https://github.com/ztlyyznf001):本文主要介绍了如何去优化 APP 的启动时间。首先介绍了如何去查看自己的 APP 的启动时间,然后介绍了如何分别去从 T1 部分(包括删除无用代码,+load 方法优化,减少 framework 的使用,减少 c++ 虚函数等方法)和 T2 部分(通过 ONLDynamicLoader 来优化各个组件的启动时间)对启动时间进行优化。
+
+### 🐎 [Type-safe User Defaults](https://danieltull.co.uk//blog/2019/10/09/type-safe-user-defaults/)
+
+[@zvving](https://github.com/zvving):对 UserDefaults 封装的库很多,类型安全的处理多限于通过方法名控制 value 类型。作者另辟蹊径,使用 struct + where 子句定义 key 和对应数据类型,提供如下类型安全的调用方式:
+
+```swift
+defaults.set("Noooope", for: .someKeyForStr)
+defaults.set(1, for: .otherKeyForInt)
+```
+
+对于一些 kv 操作及其它需要根据 key 约束内容类型的场景很有借鉴意义,推荐一试。
+
+## 代码
+
+### [IOSSecuritySuite - An advanced and easy-to-use platform security & anti-tampering library](https://github.com/securing/IOSSecuritySuite)
+
+[@五子棋](https://satanwoo.github.io):IOSSecuritySuite 是一个完全用 Swift 实现,可以用来检测你的 App 是否运行于存在安全隐患环境中的工具库。它能够检测你的 App 是否处于越狱环境、是否被类似 Frida 或 Cycript 这样的调试工具注入、是否被加载了调试器等等。对于广大的应用逆向爱好者来说,是一份不错的学习资料。
+
+### [MNN - A lightweight deep neural network inference engine](https://github.com/alibaba/MNN)
+
+[@五子棋](https://satanwoo.github.io):MNN 是一个轻量级、高性能的深度学习推理引擎。通过它,你能够轻松的在移动客户端上使用机器学习的能力,制作令人震撼的应用。对于想要从客户端领域进军机器学习的同学,这是一份不可多得的学习佳作;对于想要研究底层技术的同学,这份代码里面大量的手写汇编、指令流水线排布的代码,更是值得细细品味。
+
+### [bytedance/AWERTL · GitHub](https://github.com/bytedance/AWERTL/blob/master/README.md)
+
+[@kyo](https://github.com/KyoLi):对于一些需求,可能需要我们从右到左进行页面的布局,例如做国际化的时候,使用阿拉伯语的用户他们就习惯从右到左使用文字和功能。iOS 9 之后推出了系统解决方案以支持 RTL(Right To Left),但使用系统方式还有一定问题,例如必须支持 Autolayout,不支持 iOS 8 以下等。AWERTL 这个库在做到支持 RTL 的同时,弥补了系统方案的一些问题,有这方面需求的同学可以看一看。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#89-2019.11.04.md b/Reports/2019/#89-2019.11.04.md
new file mode 100644
index 000000000..67588cee9
--- /dev/null
+++ b/Reports/2019/#89-2019.11.04.md
@@ -0,0 +1,109 @@
+# 老司机 iOS 周报 #89 | 2019-11-04
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [SSWG Annual Update](https://swift.org/blog/sswg-update/)
+
+[@looping](https://github.com/looping):本文是 SSWG (Swift Server Work Group) 小组向我们分享的他们在去年设定的工作目标上的最新进展。文章一开始介绍了他们的工作方式,即通过一个叫做 孵化过程(Incubation Process) 的机制,或流程(类似 Swift Evolution)来保证在类库和工具演进上的质量。接着列举了通过该流程产出的 9 个提议,分别对应 9 个类库,以及在 Linux 上输出的一些工具。最后描述了接下来 2020 年的工作重点,虽然对要演进的内容只做了简短描述,但也让人感觉是清晰明确和有所期待的。
+
+## 文章
+
+### 🐎 🌟 [iOS 13.2 为何杀 App 这么频繁以及什么是 wakeup](https://imtx.me/archives/2809.html)
+
+[@zvving](https://github.com/zvving):升级 iOS 13.2 后微信在后台频繁被杀给大量用户带来困扰。网络上微信 wakeup 分析日志流传甚广,也有人因此断定微信不遵守 iOS 后台唤醒规则,因此被杀。
+```
+Wakeups: 45001 wakeups over the last 192 seconds (234 wakeups per second average), exceeding limit of 150 wakeups per second over 300 seconds
+```
+[图拉鼎](http://weibo.com/tualatrix)查阅资料后,用这篇文章告诉大家:日志中的 wakeup 并不是用户使用意义上的后台唤醒,而是线程唤醒。比如调用`peformSelector:onThread:`或者`dispatch_async`都会触发线程唤醒。
+目前能确定的是 wakeup 调用不是微信等 App 被杀掉的直接原因,不能简单归因后台频繁被杀是开发商微信问题。
+
+事实上,频繁后台被杀的不仅仅有微信,希望苹果和相关开发商早日解决此问题。
+
+### 🐕 [Packages 的开发和提交](https://mp.weixin.qq.com/s/sDstU5YqwFHzbMxPAfbkvw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):在 Flutter 项目的开发中通过 Package 可以创建易于共享的模块化代码, 所以如何创建 Package 是一个必会技能, 本文可谓是手摸手带你完全掌握 Package 的开发方法, 并且对多端的实现有详细的讲解.
+
+### 🐕 [Draft Proposal: Swift PM Package Resources](https://forums.swift.org/t/draft-proposal-package-resources/29941?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B427)
+
+[@享耳先森](https://github.com/iblacksun):Swift PM 终于要有正式的资源打包及加载方式了。这个提案的主要内容想解决 Swift PM 如何约定资源存储路径及各平台下如何用一致的代码进行加载。
+
+### 🐕 [MetricKit](https://nshipster.com/metrickit/)
+
+[@AidenRao](https://weibo.com/AidenRao):[MetricKit](https://developer.apple.com/documentation/metrickit?language=objc) 是 iOS 13 中的一个新框架,用于收集 APP 的各项性能指标。诸如耗电,启动时长,交互耗时,磁盘使用等指标。
+文章介绍了 MetricKit 及它的使用方式,也提供了一个收集 MetricKit 数据的自建 Web 服务方案。帮助你,提供更好的用户体验。
+
+### 🐕 🌟 [macOS 内核之从 I/O Kit 电量管理开始 | 枫言枫语](https://justinyan.me/post/3961)
+
+[@莲叔](https://weibo.com/aaaron7):对于绝大多数 iOS 开发者朋友来说,电量管理都是相对陌生的话题,一方面是系统往往不会提供特别友好的 API,另一方面需求确实也不多。不过这并不妨碍以电量管理作为口子去了解学习系统内核的知识。本文作者也是从这个目的出发,分别介绍了 macOS 中的电量管理的 API 以及使用方法,顺带介绍了 mach_port 的通信机制,最后也介绍了 iOS 上的一些使用。整体内容比较详实,推荐对系统编程感兴趣的同学研究。
+
+### 🐕 [iOS 调试 Rust](https://juejin.im/post/5db06e03e51d452a284c0d92)
+
+[@EyreFree](https://weibo.com/eyrefree777):本文记述了作者在成功进行 [iOS 编译和部署 Rust Library](https://juejin.im/post/5dabeac451882506974d6cb6) 后对编译产物的具体使用和调试过程。Rust 是一门为内存安全和速度而设计的系统级编程语言。由 Mozilla 打造,目的是用来开发下一代高性能跨平台软件,它能够在 Android 和 iOS 平台间以一种高性能和安全的方式共享代码,又比 C++ 容易使用得多。如果你对此感兴趣,作者后续还写了一篇 [Xcode 调试 Rust](https://juejin.im/post/5db1b7476fb9a0202d0448ab) 进一步介绍了更多调试姿势。
+
+### 🐎 [Mac下通过Apple Configurator 2获取ipa包](https://juejin.im/post/5c6e87af51882523f02666a6)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):想要获取苹果应用商店的 ipa 包可以通过 PP 助手直接下载,而且都是已经砸过壳的,但是现在 PP 助手上很多软件已经不再更新了。如果有系统在 9.0 以下的苹果设备也可以通过手机直接导出,但是现在 9.0 以下的手机已经寥寥,抑或是通过越狱机导出。还有一个导出 ipa 包的方法,就是本文所说通过 Apple Configurator 2 导出,操作简洁明了。
+
+### 🐎 [闲鱼前端基于serverless的一种多端开发解决方案](https://mp.weixin.qq.com/s/VLsVTe4ZyOJ9rNyVf5aXyg)
+[@极速男孩](https://github.com/ztlyyznf001):本文主要介绍了通过 serverless 来统一前端的 viewmodel 层,前端不需要任何的数据处理逻辑,而仅仅需要根据后端返回的数据来直接进行展示。这样使得前端不需要了解业务逻辑也可以完成页面的开发,也方便对 viewmodel 层进行复用。
+
+### 🐢 [SwiftSyntax 详解](https://juejin.im/post/5dac6d3ef265da5b741514b0)
+
+[@老峰](https://github.com/GesanTung):本文详细介绍了SwiftSyntax 开源库,使用它我们可以分析、生成、优化 Swift 代码。文章包括 Swift 编译器结构介绍,SwiftSyntax 主要结构,SwiftSyntax API 示例,以及 SwiftSyntax 的一些实际应用(检测未使用代码,语法高亮等),对编译原理或者代码分析、生成、转换工具实现原理感兴趣的读者可以研究研究。
+
+推荐阅读:
+- [Improving Swift Tools with libSyntax](https://academy.realm.io/posts/improving-swift-tools-with-libsyntax-try-swift-haskin-2017/)
+
+### 🐎 [Announcing the pod merge plugin for Cocoapods!](https://swiftier.co/2019-10-17/announcing-cocoapods-pod-merge)
+
+[@四娘](https://kemchenj.github.io/):在使用 Cocoapods 时一个常见的问题就是动态库数量的增加会大幅降低 App 的启动速度,解决方案有两个方向,其中一个是动态库合并。但之前动态库的合并基本上都需要大家手写脚本去完成,现在 Cocoapods 社区就发布了一个新的插件去简化这个过程:
+
+```ruby
+group "Networking"
+ pod "AFNetworking"
+ pod "SDWebImage"
+end
+```
+
+只要编写动态库合并的声明文件,在 `pod install` 时插件就会自动完成动态库的合并,使用这种方式可以减少 13-30% 的启动时间,唯一美中不足的就是无法接入二进制库,必须以源码接入才可以。
+
+## 工具
+
+### [InjectionIII](https://github.com/johnno1962/InjectionIII)
+
+[@EyreFree](https://github.com/EyreFree):InjectionIII 允许您在 iOS 模拟器中以增量方式更新类方法的实现,而无需重新生成或重新启动应用程序,从而为开发人员节省了大量时间。
+
+### [dirtrace - 终极文件夹内容占比查看工具](https://mp.weixin.qq.com/s/BJF35SFlM7oU8mvT8duBRg)
+
+[@水水](https://www.xuyanlan.com): dirtrace 这个小工具的作用是把一个文件夹的内容,用 Chrome Tracing 展示出来,表示出文件的大小以及文件夹之间的父子关系,还提供了可视化浏览方法。 附上源码地址:https://github.com/everettjf/dirtrace, 有兴趣的朋友可以研究和使用哦~
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#90-2019.11.11.md b/Reports/2019/#90-2019.11.11.md
new file mode 100644
index 000000000..25eded4f5
--- /dev/null
+++ b/Reports/2019/#90-2019.11.11.md
@@ -0,0 +1,91 @@
+# 老司机 iOS 周报 #90 | 2019-11-11
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## 新手推荐
+
+### 🐎 [用 Flutter 打包 iOS 应用的一些细节知识](https://mp.weixin.qq.com/s/PsvVFoB91_jGzibFPIwnIw)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):本文向大家介绍 Flutter 的构建系统是如何将 Flutter 项目 (及其资源) 转换为 iOS 应用包的。可以直接使用 Flutter 工具生成,也可以使用自定义的 Xcode 或 Gradle 设置。 分析了 Flutter iOS 应用包中 Flutter.framework 和 App.framework 的结构和组成,如果你在使用 Flutter 构建 iOS 应用时有什么疑惑,可以参考阅读。
+
+## 文章
+
+### 🐎 [Best resources for Advanced iOS Developer (Swift)](https://medium.com/flawless-app-stories/best-resources-for-advanced-ios-developer-swift-ade30374593d)
+
+[@AidenRao](https://weibo.com/AidenRao):作者花了几年时间,收集整理的,对于他很有帮助的 iOS & Swift 文章和视频。涉及架构、组件化、面向协议、调试、SwiftUI 等多个分类。收藏它们并学习,对你会很有帮助。
+
+### 🌟 🐕 [美团 iOS 端开源框架 Graver 在动态化上的探索与实践](https://mp.weixin.qq.com/s/PD9hnWv8B32ZCYj1UokUBA)
+
+[@老驴](https://www.weibo.com/6090610445):从去年开始,动态化的讨论热度似乎突然冷了下来,究其原因,和 Apple 一再缩紧审核进而导致各大公司选择自用而非开源来规避风险有关。
+
+美团这次就分享了他们的 Graver 框架的背后原理,以及他们对提升渲染性能的一些思考。最后的结果也做到了令人满意,有兴趣在自己产品上想做性能优化的同学不妨一度。
+
+### 🐢 [Device Identifiers and Fingerprinting on iOS](https://nshipster.com/device-identifiers/)
+
+[@JimQ](https://github.com/waz0820):苹果一直致力于保护用户隐私,在不断地更新识别用户的限制措施,但广告商还是会玩猫捉老鼠的游戏,通过设备的各种基本信息组合或者各种骚操作来识别用户指纹(此处非指手指指纹信息,而是代指可以唯一标识用户的信息)。本文主要介绍了在此背景下 iOS 设备标识符的不断迭代,以及在系统各种限制下仍可能被用于识别用户指纹的各种方式,还是相当涨姿势的。而且作者收集到的主要是国外的方式,国内的厂商肯定也有更多秘而不宣的奇葩操作。
+
+这也是一个不断扑火的过程,此处方歇,彼处又生。文章开头作者通过比较宏大的视角来看待这个问题,把广告追踪比作我们这个时代的怪物,但文章结尾还是抱有希望的,毕竟我们还有一个在致力于保护用户隐私的平台,以及作为技术人员,我们还可以发出自己的声音。
+
+### 🐕 [Dart2.6正式版发布](https://mp.weixin.qq.com/s/9xCrzEmwOf8P9MzpQ4COaQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):近日 Dart 团队又双叒叕 更新了。是的,你没听错。Dart团队在11月初正式发布了 Dart2.6 的正式版本. 最大的亮点是:dart2native。它是现有编译器基础上的一个扩展,能够将Dart程序编译为包含预编译 (AOT) 机器码的 self-contained 的可执行程序。使用 dart2native,您可以使用 Dart 通过 macOS/Windows/Linux 上的命令行创建工具.
+
+## 工具
+
+### [中文独立博客列表](https://github.com/timqian/chinese-independent-blogs)
+
+[@EyreFree](https://weibo.com/eyrefree777):作者希望创造一个可以连接到中文圈高质量独立博主的工具,在保持独立博客自由的同时,让独立博客们也有一个稳定的被发现的渠道,把独立博客们收集起来,目前初步采用 Markdown 列表的形式。同时作者也通过建立 Telegram 群等方式,把独立博客的创作和读者群体组织起来使大家能够建立联系。当然,如果您认为自己的个人博客质量很不错,也可以尝试提交到该仓库的哟。
+
+### [cocoapods-static-swift-framework](https://github.com/leavez/cocoapods-static-swift-framework)
+
+如果项目中有许多动态库,会增加启动时间,而静态链接则没有这个问题。一个方式支持静态库是使用 Cocoapods,但 Cocoapods 仅支持单个 pod,也就是说 podspec 中的静态库选项仅对该 pod 有效。cocoapods-static-swift-framework 这个插件就是解决这个问题的,只需要一句话就可以将所有 pod 编程静态库!
+
+## 代码
+
+### [Repeat - 轻量级定时器](https://github.com/malcommac/Repeat)
+[@五子棋](https://satanwoo.github.io): Repeat 是一个基于 GCD - Grand Central Dispatch 的轻量定时器,在功能上可用于替代 NSTimer。同时针对 NSTimer API 设计繁琐不易用的特点,作者提供了多种简洁的调用方式。整体代码非常精简,值得一读。
+
+### [Swift.org - Swift Numerics](https://swift.org/blog/numerics/)
+
+[@享耳先森](https://github.com/iblacksun):Swift Standard Library 成员 Steve Canon 创建的开源项目,提供数学计算相关 API,弥补标准库中的不足。
+
+### [SDWebImageSwiftUI](https://github.com/SDWebImage/SDWebImageSwiftUI)
+
+[@四娘](https://kemchenj.github.io/):SDWebImage 的 SwiftUI 版,基于原版的 SDWebImage 进行封装,之前的生态也可以无缝对接过来,例如各种图片样式的支持等等。
+
+### 🐎 [5 iOS Libraries to Improve and Inspire Your UI](https://medium.com/better-programming/5-ios-libraries-to-improve-and-inspire-your-ui-3a7c768a176c)
+
+[@极速男孩](https://github.com/ztlyyznf001):五个不同的基于 UICollectionView 的 UI 框架。
+
+### 🐎 [Swiftly - Swift 5.1 references for busy coders](https://swiftly.dev/)
+
+[@水水](https://www.xuyanlan.com):Swift5.1 的一些基本类型的简单介绍和参考示例代码,有需要的读者可以收藏该地址,以备查阅哦~
+
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#91-2019.11.18.md b/Reports/2019/#91-2019.11.18.md
new file mode 100644
index 000000000..eb18aa1ff
--- /dev/null
+++ b/Reports/2019/#91-2019.11.18.md
@@ -0,0 +1,98 @@
+# 老司机 iOS 周报 #91 | 2019-11-18
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Apple Push Notification Service Update](https://developer.apple.com/news/?id=11042019a)
+[@looping](https://github.com/looping):近期苹果发布通知,将在 2020 年 11 月后不再支持基于二进制协议的 APNs,建议我们尽快把推送服务更新到基于 HTTP/2 的 API 上。关于 APNs 详细内容可查看官方文档 [APNs Overview](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html)。
+
+### [You Cannot Submit an Electron 6 (or 7) App to the Apple Store](https://david.dev/you-cannot-submit-an-electron-6-or-7-app-to-the-apple-store)
+
+[@张嘉夫](https://github.com/josephchang10):开发者 David.dev 报告,App Store 会拒绝使用 Electron 6 或 7 开发的 app,原因是使用了非公开框架,包括 CAContext、CALayerHost、NSAccessibilityRemoteUIElement、NSNextStepFrame、NSThemeFrame 以及 NSURLFileTypeMappings 等。Apple 在回复作者的消息中还说,如果在未来提交的 app 中继续使用或隐瞒非公开 API,可能会导致 Apple 开发者账号被停用,并从 App Store 移除所有相关的 app。
+
+## 文章
+
+### 🐢 [做一个高一致性、高性能的Flutter动态渲染,真的很难么?](https://mp.weixin.qq.com/s/R6IxJqawwbmlWvlwb3ZXww)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):最近闲鱼 Flutter 小组在尝试使用 DinamicX 的 DSL ,通过下发 DSL 模板实现 Flutter 端的动态化模板渲染。在解决了性能方面的问题后,又面临了一个新的挑战——渲染一致性。本文详细讲解了, 在实现的过程中各类坑的拆解, 从思路到实现的全过程, 抽丝剥茧带你一步步实现。
+
+### 🐕 🌟 [Swift 在 GAIA 平台云端一体化的探索](https://mp.weixin.qq.com/s/7B2FDBZ_vnvswiYWjLih4Q)
+[@莲叔](https://weibo.com/aaaron7):Server Side Swift 一直以来都随着 Swift 的发展而发展,虽然陆续有公司、团队开始在 prod 环境使用 Swift 进行开发,但整体来看仍然相对小众,相比 GO、Java 等传统 Server-side 的语言仍有较大的差距。从另一方面,近段时间的服务端技术也得到了长足的发展,Faas(Function as a service) 逐步进入人们的视野,Faas 在容器化的基础上,将后端的服务更进一步的抽象为一个个函数,由于隐藏了大量的服务侧的技术细节,Faas 让前端、移动端开发人员全栈的完成端到云的逻辑成为可能,这似乎是 Server-Side Swift 新的机会。
+
+作者就做了这样的一件事,在淘宝的 Faas 平台:GAIA,实现了 Swift 语言的适配。这样便可以用一门语言全栈的快速完成一个 App 的落地。作者分享了一个具体的案例以及对应的技术细节,虽然从文章本身无法窥见全貌,但仍然算一种 mind-opener,引人思考。感兴趣的同学可以阅读。
+
+### 🐕 [Understanding the iOS 13 Scene Delegate](https://www.donnywals.com/understanding-the-ios-13-scene-delegate/)
+[@anotheren](https://github.com/anotheren):iOS 13 带来了全新的 Scene Delegate 以适配应用多窗口。本文详细讲解了 Scene Delegate 对传统的 App Delegate 的替换要点,对于理解全新的 Scene Delegate 所承担的职能很有帮助。无论你是否已迁移至 Scene Delegate,本文都值得一读。
+
+### 🐕 [基于 SwiftSyntax 写一个命令行工具检测 Xcode 项目中不用的图片资源](https://juejin.im/post/5dc2a969f265da4d2a432249)
+[@anotheren](https://github.com/anotheren):类似的工具虽然已经有了喵神的 [FengNiao](https://github.com/onevcat/FengNiao),但是重复造轮子的过程中总能够学到新的东西。作者分析了用于路径检索的 [Path.swift](https://github.com/mxcl/Path.swift) 以及用于语法分析的 [SwiftSyntax](https://github.com/apple/swift-syntax),并将他们组合成一个完整可用的工具。
+
+### 🐕 [iOS 程序员眼中的 Emoji](https://juejin.im/post/5dc3b9a46fb9a04a95289a84)
+[@zvving](https://github.com/zvving):😂有人评价 Emoji 是世界唯一通用语言。🤔你思考过它的编码原理吗?
+
+从浏览 Emoji 到查看对应编码,从 ASCII 到 Unicode 基础概念,从 Emoji 拼接到对应 iOS 字符处理。本文清晰明了,带你快速了解 Emoji 编码基础原理。
+
+### 🐕 [5 Reasons Why Apps Fail & How To Avoid Them](https://simpleprogrammer.com/why-apps-fail)
+[@老驴](https://www.weibo.com/6090610445):我们读者里应该有很大一部分在做个人项目,比如在工作之余做个 App 上架之类的。这个时候,大家也就变身 PM,努力用各种方法去推广自己的产品,让自己的产品能被更多的人喜爱。
+
+这篇文章就用了比较概括的语言,阐释了作者心中的五种最常见的产品失败的原因,同时也给出了一点建议。来读读文章看看能否从中学到点什么吧。
+
+### 🐕 [Flutter 性能分析](https://mp.weixin.qq.com/s/VydPJnfEno0-yvGdS5P0Ug)
+[@五子棋](https://satanwoo.github.io):性能优化是所有应用开发者都必须面对的一个挑战。而随着 Flutter 等跨平台框架的不断涌现,移动端的开发范式也正经历着转变。
+本文从方法论和对应工具使用等两个层面阐述如何分析 Flutter 中的性能问题。文中的一些经验对于帮助大家快速定位问题能起到不小的作用。
+
+## 工具
+
+### [iShot 截图工具](https://apps.apple.com/cn/app/ishot-%E6%88%AA%E5%9B%BE-%E9%95%BF%E6%88%AA%E5%9B%BE-%E6%A0%87%E6%B3%A8%E5%B7%A5%E5%85%B7/id1485844094?mt=12)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):Mac 自带的截图功能,大部分使用场景下基本足够,但长截图的痛点苹果迟迟没有成全用户。相信不少用户曾被推荐 Xnip 这款截图工具,但毕竟是付费的。iShot 工具的出现应该会让不少 Xnip 用户倒戈阵营,iShot 是 Mac 上一款免费优秀、功能全面的区域截图、窗口截图、长截图、延时截图、快速标注的工具,小巧实用,非常适合对截图有多重需求的用户。
+
+### [Topology](https://github.com/le5le-com/topology)
+[@Jimq](https://github.com/waz0820):Topology 是一款开源的基于 canvas + typescript 的绘图引擎,可用于实现软件架构图、微服务部署结构图、流程图、活动图、类图、时序图、SCADA 等,也可以按照自己的想法实现任何想要的图形库。
+
+官方有基于 Topology 实现的在线绘图平台,可在线编辑,一键保存到云服务器,免费使用,且前端开源。
+
+## 代码
+
+### [xcdiff - A tool which helps you diff xcodeproj files](https://github.com/bloomberg/xcdiff)
+[@xiaofei86](https://weibo.com/xuyafei86/):一个用来对比 xcodeproj 文件的开源库,能够输出更易于理解的对比结果。关于使用场景,作者举例:“当我们使用工具来生成 xcodeproj 文件时,对比 xcodeproj 文件能够增强我们对迁移过程的信心”。推荐给有需求的同学。
+
+### 🐕 🌟 [LDNetDiagnoService](https://github.com/Lede-Inc/LDNetDiagnoService_IOS)
+[@莲叔](https://weibo.com/aaaron7):如果关注用户反馈的开发者可能多多少少都会遇到这样的一个无力时刻:用户反馈使用 App 期间遇到网络问题无法正常使用,但缺乏相应的信息来判断是 App 本身的问题还是用户的设备所处的环境问题。LDNetDiagnoService 是一个网络诊断的库,基于 ping 和 traceroute 的原理对指定的域名进行测试,并生成诊断报告。结合该库,在用户网络出错的时候运行该诊断,想必能更好的协助用户和开发者定位原因。有类似困扰的开发者不妨一试。
+
+### [UIFontComplete](https://github.com/Nirma/UIFontComplete)
+[@anotheren](https://github.com/anotheren):这是一个可以安全调用字体的管理库,使用 enum 将字体的调用方式进行了封装,而不使用字符串这种不安全的方法。同时支持 iOS 和 tvOS。
+
+### 🐎 [FSPagerView](https://github.com/WenchaoD/FSPagerView)
+
+[@老峰](https://github.com/GesanTung):FSPagerView 是一个 Swift 实现的优雅轮播图库,它可以在制作横幅视图、产品展示、欢迎 / 指南页面、屏幕 / 视图控制器滑块等为我们带来很大的便利。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#92-2019.11.25.md b/Reports/2019/#92-2019.11.25.md
new file mode 100644
index 000000000..25b5013c6
--- /dev/null
+++ b/Reports/2019/#92-2019.11.25.md
@@ -0,0 +1,91 @@
+# 老司机 iOS 周报 #92 | 2019.11.25
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Flutter 智能闹钟挑战赛约你来战!](https://mp.weixin.qq.com/s/mp2XxbP1jfsayw6oVEjb2Q)
+[@老驴](https://www.weibo.com/6090610445):是不是学了 Flutter 却无处练手?机会来了!Google 联合 Google Assistant,联想,一起搞了这个智能闹钟挑战赛,用 Flutter 为联想智能音箱开发一个智能闹钟功能,不仅能让你练手 Flutter, 更能赢得最高大奖:一台顶配的 iMac Pro 哦。心动不如行动,赶紧点击链接参与起来!
+
+## 文章
+
+### 🌟 🐕 [Command-line argument parsing using Swift Package Manager's SPMUtility module](https://rderik.com/blog/command-line-argument-parsing-using-swift-package-manager-s/)
+
+[@looping](https://github.com/looping):本文介绍了通过使用 SPM 的 SPMUtility 模块配合解析终端命令参数,来完成编写命令行工具的任务。在列举完基本的命令参数概念和设计规则后,就开始工具编写实战,讲解过程非常详细,附带源码,入门教程必备。在文章最后,作者提到了前段时间他自己写的另一篇文章,[Building a CLI tool using Swift and Vapor's Console module](https://rderik.com/blog/building-a-cli-tool-using-swift-and-vapor-s-console-module/),使用这两个模块都能写出很好的工具,并且也有各自的设计风格,有写命令行工具需求的小伙伴可以深入了解下。
+
+### 🐕 [Thread Sanitizer explained: Data Races in Swift](https://www.avanderlee.com/swift/thread-sanitizer-data-races/)
+
+[@EyreFree](https://github.com/EyreFree):本文通过对并发编程中经典的数据竞争(Data Race)问题进行了举例、分析,由此引入和介绍了 Thread Sanitizer(也称为 TSan)的使用方法以及它的基本工作原理,并演示了如何依靠它来解决文中举出的数据竞争问题。Thread Sanitizer 是在 Xcode 8 中引入的基于 LLVM 的工具,用于审查 iOS 代码中的线程问题,能给我们的并发编程调试带来很大的便利,值得一看。
+
+### 🌟 🐢 [Flutter 应用性能优化最佳实践](https://mp.weixin.qq.com/s/2CbtwcyKlmB2u2c02gDP0w)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):通常来说,Flutter 技术构建的应用程序在默认情况下都是高性能的。所以你只需要避开常见的陷阱,就可以获得优异的性能,而不需要使用复杂的分析工具对细节做优化. 本文总结了一些 Flutter 应用开发过程中的最佳实践, 可以有效的帮助你避开一些坑点.
+
+### 🐕 [自定义WKWebView显示内容(一)](https://juejin.im/post/5dc41b44e51d456e824cf137)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文作者结合代码与 Demo 展示分享了的如何通过 WKContentRuleList 来制定 WKWebView 的内容过滤规则(例如更改 http 请求的 URL 为 https );以及如何通过 WKURLSchemeHandler 来加载相册中图片显示到 WKWebView 中的方案。
+
+### 🐎 [Message-ID and Mail.app Deep Linking on iOS and macOS](https://nshipster.com/message-id/)
+
+[@四娘](https://kemchenj.github.io/):这周 NSHisper 给我们带来的是 Deep Linking 相关的内容,讲解 iOS / macOS 里 Mail.app 使用链接跳转时如何编码链接信息,避免信息泄漏。
+
+### 🚧 🐎 [iOS Deferred Deep Link](https://medium.com/zrealm-ios-dev/ios-deferred-deep-link-%E5%BB%B6%E9%81%B2%E6%B7%B1%E5%BA%A6%E9%80%A3%E7%B5%90%E5%AF%A6%E4%BD%9C-swift-b08ef940c196)
+
+[@老峰](https://GesanTung.github.io/):Deferred Deep Link 是指用户打开一个 Web Page 的时候并没有安装对应的 App,希望用户在安装 App 以后可以 Deep Link 到对应内容,本文作者介绍了首先介绍了 Deep Link 概念以及其局限性,然后通过实例给出使用 [Firebase Dynamic Links](https://firebase.google.com/docs/dynamic-links) 方式实现 iOS Deferred Deep Link 的过程。
+
+### 🐕 [NSCopying uses in Swift](https://swiftrocks.com/nscopying-nszone-uses-in-swift.html)
+
+[@极速男孩](https://github.com/ztlyyznf001):和 Objective-C
+中一样,在 Swift 中同样有 NSCopying 和 NSMutableCopying。本文首先介绍了 NSCopying 的用法和原理。然而在 NSMutableCopying 中,和 Objective-C 不一样,当你不需要定义一个单独的 mutable 类型的情况下,在 Swift 中只需要用 let 和 var 就可以了。
+
+### 🐎 [Flutter 中文文档:使用 Mockito 模拟依赖关系](https://mp.weixin.qq.com/s/e9orvqzdLmFwMXDVLUtcLw)
+
+[@AidenRao](https://weibo.com/AidenRao):本篇教程介绍了 Mockito 包的基本用法,模拟 Web 服务或数据库,根据条件返回特定结果,解决直接依赖 Web 服务或数据库的以下不便:
+- 访问线上服务或数据库会拖慢测试执行效率。
+- 原本可以通过的测试可能会失败,因为 web 服务或数据库可能会返回不符合预期的结果。
+- 使用线上 web 服务或数据库来测试很难覆盖全所有可能成功或失败的场景。
+
+## 工具
+
+### 🐕 [自动切换输入法 - Mac](https://apps.apple.com/cn/app/%E8%87%AA%E5%8A%A8%E5%88%87%E6%8D%A2%E8%BE%93%E5%85%A5%E6%B3%95/id1470350547?mt=12)
+
+[@水水](https://www.xuyanlan.com):Mac 上的自动切换输入法 App, 支持所有常用输入法,能够根据当前正在运行的不同的应用程序,自动切换对应的输入法,免去人工手动切换的麻烦~
+
+## 代码
+
+### [IBPCollectionViewCompositionalLayout](https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout)
+
+[@张嘉夫](https://github.com/josephchang10):在 WWDC 2019 上 Apple 为 UIKit 增加了一个新的 [UICollectionViewCompositionalLayout](https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources) 类,让创建复杂的自定义 collection view 布局变得简单很多。在 iOS 12 及更早的版本中,我们只能继承 `UICollectionViewLayout` 来实现自定义布局,要重写很多方法,导致容易出现问题。IBPCollectionViewCompositionalLayout 这个库让 iOS 12 及之前的版本也能够支持 UICollectionViewCompositionalLayout,并且可以使用同一套 API,无需同时维护两个代码库。
+
+### [MagazineLayout](https://github.com/airbnb/MagazineLayout)
+
+[@zvving](https://github.com/zvving):为 UICollectionView 提供易用的垂直滚动网格和列表布局。相较于 UICollectionViewFlowLayout,支持多列、高度自适应,Section 自定义背景,Section Header/Footer 跟随滚动等增强特性。
+
+Airbnb 家出品,在其产品页面中已广泛应用,久经考验,推荐选用。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#93-2019.12.02.md b/Reports/2019/#93-2019.12.02.md
new file mode 100644
index 000000000..0b947f261
--- /dev/null
+++ b/Reports/2019/#93-2019.12.02.md
@@ -0,0 +1,94 @@
+# 老司机 iOS 周报 #93 | 2019.12.02
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐕 [美团外卖前端容器化演进实践](https://mp.weixin.qq.com/s/SAuKvlB0Bfj7dRIBzkhO8w)
+[@莲叔](https://weibo.com/aaaron7):容器化和动态化是目前大前端业务开发中最绕不开的两个命题。尤其是在产品架构已经相对成熟,业务侧的需求逐步过渡到精细化运营之后,往往随之而来的就是单个页面承载大量功能,并由不同的团队负责,代码也部署在不同的仓库,这给业务开发的效果、质量的把控都带来的新的挑战。本文介绍的美团提单页就是这样的一个典型场景,本文从提单页面临的现状问题以及业务的特点,介绍了通过容器化的思路来解决上述问题,虽然方案中部分模块美团并未开源,但其架构与设计思想仍然值得借鉴。
+
+### 🌟 🐎 [了解 SIMD 指令](http://satanwoo.github.io/2019/12/01/SIMD-1/)
+[@五子棋](https://github.com/SatanWoo):SIMD 是一种常见的利用单指令完成多数据量处理的计算方式。本文给出了基于 Xcode 环境的实践的 SIMD 指令使用指南,同时通过数据加法来对比 SIMD 指令对于计算性能的提升。对于想要了解 SIMD 相关知识的读者来说是一篇适合快速上手的教程。
+
+### 🐕 [天罗地网? iOS卡顿监控实战(开源)](https://juejin.im/post/5db65fe0e51d452a1e58f37c)
+
+[@EyreFree](https://github.com/EyreFree):本文介绍了作者在公司项目中使用的 Swift 版卡顿监控工具 [XXPerformanceMonitor](https://github.com/HJTXX/XXPerformanceMonitor) 的整个开发历程。作者通过对比 fps、ping、runloop、hook、msgSend 等主流卡顿监控方案的优缺点,陈述了自己的方案选择理由。并且给出了关键逻辑的核心代码实例,同时结合流程图直观地演示了具体的卡顿排查分析方法。作者最后还给出了自己在实际工作过程中遇到的常用卡顿场景的总结,以及在做完针对性优化后的线上效果对比,值得一看。
+
+### 🐢 [How Swift Achieved Dynamic Linking Where Rust Couldn't](https://gankra.github.io/blah/swift-abi/)
+
+[@四娘](https://kemchenj.github.io):ABI 稳定是 Swift 重要的里程碑之一,但相关的资料却很少,其实这可以说是 Swift 做过最有野心,最具原创性的功能。这篇文章就比较详细地阐述了相关的实现内容以及实现难度,并与 Rust 进行对比,解释为什么 Rust 从设计上就难以做到动态链接。
+
+### 🌟 🐕 [技术文章配图指南](https://draveness.me/sketch-and-sketch)
+
+[@享耳先森](https://github.com/iblacksun): 如果你是技术博主,相信都遇到过如何给文章配图的困惑,本文从配图的原则、工具、实践等方面进行论述,建议阅读。
+
+### 🐎 [HTTP/2 的学习实践和翻译](https://github.com/halfrost/Halfrost-Field)
+
+[@老峰](https://GesanTung.github.io/):本系列是 @halffrost 霜神 关于HTTP/2 的学习实践和翻译的分享,其中包括 HTTP/2 基础概述、多路复用、HTTP 语义、HTTP/2 头压缩算法 —— HPACK 等,有换工作的同学可以深入了解下。
+
+### 🐢 [Secret Management on iOS](https://nshipster.com/secrets/)
+
+在平时的开发中,我们会将涉及到需要加密的重要内容都放到服务端上存储,因为目前如何在 iOS 上安全的存储一直是一个尚未解决的问题。本文详细解释了无论是采用硬编码、Xcode Configuration 还是对代码进行混淆进行存储都可能存在的风险,所以,请尽量不要在客户端存储设计机密的文件。
+
+
+## 工具
+
+### [LookinLoader](https://github.com/creantan/LookinLoader)
+
+[@张嘉夫](https://github.com/josephchang10):[Lookin](https://lookin.work/) 是一款免费的 macOS App,用于 iOS View Debugging。但由于 Lookin 官方没有提供集成的越狱版本,不便于逆向分析,因此作者参考 RevealLoader 编写了这个叫做 LookinLoader 的插件,支持 iOS 8~iOS 13。LookinLoader 可以在越狱设备上的 iOS App 中动态加载 LookinServer(支持 Lookin.app),然后通过 Lookin 来查看和修改 iOS app 中的视图,就像 Xcode 的 UI Inspector 和 Reveal 那样。此外还包括 Console 和 Method Trace 等功能,iPhone 和 iPad 甚至不用连接到 Mac 就可以运行 Lookin。
+
+### [SwiftPM Catalog](https://zeezide.com/en/products/swiftpmcatalog/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):SwiftPM Catalog 是 [SwiftPM Library](https://swiftpm.co) 的一款轻量且实用的 macOS 前端,用来查询和浏览使用 [Swift Package Manager](https://swift.org/package-manager/) 的 Packages。[SwiftPM Library](https://swiftpm.co) 通过开源社区维护的仓库 [SwiftPMLibrary](https://github.com/daveverwer/SwiftPMLibrary) 中的 [JSON 文件](https://github.com/daveverwer/SwiftPMLibrary/blob/master/packages.json) 来找到这些 Packages 并抓取相应的信息作为搜索结果展示。此列表已经有 100 多位贡献者,汇集了 3000 多个 Packages,基本覆盖了所有常用的 Swift 库。在将来的某个时候,也许苹果或 GitHub 会提供正式的 Packages 列表,但是在那之前,总比没有的好。
+
+### [Commitizen](https://github.com/commitizen/cz-cli)
+
+[@AidenRao](https://weibo.com/AidenRao):Git 提交信息生成和约束工具,帮助团队成员规范化 Commit Message。它使用的是 [Angular](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0) 规范,有对应的工具去生成 change log。每次提交,Commit message 都包括 Header, Body 和 Footer 三个部分。 Header 是必须的,包括三个字段:type, scope 和 subject,用于说明提交类别,影响范围,和一个简短的描述。Body 部分是对本次 Commit 的详细描述,Footer 用于 close issue 和声明版本不兼容情况的迁移方法。也可以自定义规范,并且添加约束,对不符合规范的 commit 直接拒绝。
+
+## 代码
+
+### 🌟 [MyLinearLayout](https://github.com/youngsoft/MyLinearLayout)
+
+[开源 UI 界面布局框架 MyLayout1.9 发布](https://juejin.im/post/5de3ca906fb9a071975009a7)!MyLinearLayout 是一个目前几乎集成了大前端所有 UI 界面布局解决方案的开源布局框架,其提供的九大布局体系可以满足您所有的 UI 布局需求。本库从 2015 年开始发布,历时四年的维护和发展,服务应用了数千 app,目前 GitHub 上 star 数量 3600 左右。是一个值得接入并提高您工作效率的好框架。
+
+> 由美团资深开发 [欧阳大哥](https://github.com/youngsoft) 自荐。
+
+### [Siren](https://github.com/ArtSabintsev/Siren)
+
+[@looping](https://github.com/looping):Siren 是使用 Swift 开发的用来检测并提醒用户进行应用版本升级的类库。它会从 [iTunes 的 lookup 接口](https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/LookupExamples.html)获取应用在 App Store 的版本信息,帮我们处理了包括版本比对(支持 2 到 4 位版本系统)、弹窗提醒(3 种弹窗样式)等基本操作,支持规则自定义,同时包括对 App Store 更新延迟、最低支持系统、阶段性发布等问题也做了兼容处理,考虑很全面,即使不直接使用这个类库,自研版本更新提醒的话,也是很有参考价值的。
+
+### [xcconfigs for Universal Frameworks](https://github.com/mrackwitz/xcconfigs)
+
+[@极速男孩](https://github.com/ztlyyznf001):在我们维护一个多平台的 framework 的时候我们经常要去复制多个 target,而有了这个 Xcode configuration 我们可以仅仅使用一个 target ,然后根据不同的条件,使用不同的 build settings 中的设置,方便我们去复用和修改。这样我们只要在编译时选择对应的平台就会自动选择不同的 build settings。
+
+## 内推
+
+> 深圳-字节跳动,抖音 App 基础技术小组 客户端研发岗位
+- 职位内容:主要负责抖音基础技术方向的研发工作,包括不限于组件化、自动化测试、研发流程工具脚本等方向的研发工作。
+- 联系方式:邮箱(chenxiancai@bytedance.com) / 微信(cheney-cai)
+- JD: https://job.toutiao.com/s/XdEU32 / https://job.toutiao.com/s/Xd7vWs
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2019/#94-2019.12.09.md b/Reports/2019/#94-2019.12.09.md
new file mode 100644
index 000000000..90c80f513
--- /dev/null
+++ b/Reports/2019/#94-2019.12.09.md
@@ -0,0 +1,100 @@
+# 老司机 iOS 周报 #94 | 2019-12-09
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🐎 [Flutter Interact 2019 即将到来!全球同步直播最先了解新动态](https://mp.weixin.qq.com/s/28hbpByPwjSNETO0W8b4GQ)
+
+[@zvving](https://github.com/zvving):Flutter Interact 将在 12 月 11 日于纽约布鲁克林举办,聚焦于跨平台打造精美体验。现场提供同声传译的直播服务,对 Flutter 感兴趣的小伙伴不要错过!
+
+## 新手推荐
+
+### 🐎 [不同平台操作体验的差异和适配](https://mp.weixin.qq.com/s/Ze4m95HeFoUXoP7FLbHcmQ)
+
+[@极速男孩](https://github.com/ztlyyznf001):flutter 在 iOS 和 Android 当中不同的适配效果,包括不同的手势,控件效果和字体图表等。
+
+
+## 文章
+
+### 🐢 [开发企业级移动APP,Flutter准备好了吗?](https://mp.weixin.qq.com/s/M8x44Fb0NdLlr0TfKo_1wA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 自 1.0.0 正式版发布以来, 已经一整年过去了. 在过去的一段时间里面, 官方开发团队始终保持着飞速的迭代效率, 社区的发展状况也让人欣喜, 国内外各大厂开始投入精力. 即使如此, Flutter 在生产中的使用覆盖率仍不是太高, 那么 Flutter 在生产中的表现到底如何? 本文从以下几个角度, 和你深入探讨 Flutter 企业级开发的方方面面:
+
+- 架构
+- 开发环境
+- 用户界面
+- 访问硬件功能
+- 安全性
+- 其他杂项
+
+### 🌟 🐕 [纷争再起:Flutter-UI 绘制解析](https://juejin.im/post/5c866cf6f265da2de165d89d)
+
+[@四娘](https://kemchenj.github.io):作者通过生动形象的方式跟我们讲述了 Flutter 的 Widget 树实现,如何通过轻量级的视图树达成高效的视图树重建,与我们熟知的 View 进行协作完成最终渲染。
+
+### 🌟 🐕 [Flutter 沙龙回顾 | 如何缩减接近 50% 的 Flutter 包体积](https://mp.weixin.qq.com/s/Ls3cDcqjlyOX80PXUO0wRw)
+[@老驴](https://www.weibo.com/6090610445):这是字节跳动技术团队做的一篇针对 Flutter 实际落地应用中针对包体积优化的文章。
+
+文章比较长,干货非常多,看得出字节跳动团队在 Flutter 落地应用上做出的努力。虽然大家在自己的项目中并不一定用得到这些优化,但是不妨一读,一定会对大家的实际项目有帮助。
+
+
+### 🌟 🐕 [KeyValuePairs](https://nshipster.com/keyvaluepairs/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):Swift 5 将 DictionaryLiteral 重命名为 KeyValuePairs [SE-0214](https://github.com/apple/swift-evolution/blob/master/proposals/0214-DictionaryLiteral.md)。本周,NSHipster 就为我们带来 KeyValuePairs 的详解。本文延续了 mattt 一贯的“哲学”开场,由宇宙学对事物的分类到阴阳、五行、八卦,从而引出 Array、Set 等 Swift 中的常用集合类型(不得不感叹 mattt 大神的博学)。通过本文对 KeyValuePairs 的介绍,与 Dictionary Literal 的对比以及应用,我们会对 Array、Set 和 Dictionary 之间的根本区别,以及他们在 Swift 中的工作方式产生更加深入的理解。
+
+### 🐕 [Making Swift code extensible through plugins](https://www.swiftbysundell.com/articles/making-swift-code-extensible-through-plugins/)
+
+[@EyreFree](https://github.com/EyreFree):本文介绍了如何用 Plugin 模式提高代码的可扩展性。Plugin 是一段代码,可以将其插入另一种类型或系统以修改其功能。Plugin 有许多不同的形式和规模,比如文中举出的例子 `typealias Plugin = (T) -> T` 就是一个简单的 Plugin。合理利用该模式,能降低我们所编写的代码的复杂性,但如果滥用也会导致系统代码过于分散,一切都取决于我们要构建的软件系统类型。对架构和设计模式感兴趣的同学一定不要错过。
+
+### 🐕 [Vision Framework: Working with Text and Image Recognition in iOS 13](https://www.appcoda.com/animal-recognition-vision-framework/)
+
+[@张嘉夫](https://github.com/josephchang10):2 年前 Apple 在 WWDC 2017 上发布了 *Vision* 框架,一个令人惊叹但又十分简便的框架,让计算机视觉功能的开发更加容易。不论是文字检测、面部识别、条形码扫描还是与 Core ML 配合执行机器学习任务都可以用这个框架实现。今年,Apple 在 WWDC 2019 为 Vision 框架带来了更多新功能,着实将计算机视觉领域向前推进了一步。AppCoda 在这篇文章里会带领大家构建一个叫 *Snapcat* 的应用,使用 `Vision` 全新的动物检测器来检测喵星人、添加滤镜然后拍照。然后 AppCoda 会教你如何利用全新的 `VisionKit` 来扫描名片,就像 iOS 原生的备忘录 app 一样。最后,Appcoda 还会展示如何对扫描后的名片进行文字识别。
+
+### 🐎 [Faster way to download and install Xcode](https://blog.kulman.sk/faster-way-to-download-and-install-xcode/)
+
+[@JimQ](https://github.com/waz0820):平时下载 Xcode 最便捷的渠道就是 App Store,但只能用于下载最新的正式版,而且用过的人都知道,其下载速度和成功与否,除了看网速,有时还要看人品。所以我们需要更多的解决方案:
+
+1. 使用 Apple Developer 官网在浏览器下载最新的正式版或 beta 版;
+2. download/more 路径下下载更多之前的版本;
+3. 使用 aria2 脚本加速下载;
+4. .xip 包双击之后会有一个合法性验证,可以使用命令跳过这个步骤;
+5. 先删除 Xcode 再安装比覆盖安装速度更快。
+
+## 代码
+
+### [NXDrawKit](https://github.com/Nicejinux/NXDrawKit)
+
+[@老峰](https://GesanTung.github.io/):NXDrawKit 是使用 Swift 开发的一个简单易用的手写绘图板类库,提供了绘图应用的基本功能如:撤销、恢复、清除、保存、设置线条颜色,粗细,透明度等,使用它可以实现类似你画我猜,手写签名等功能,因为是作者第一个 Swift 项目,所以代码风格比较偏 OC,另外 Palette and ToolBar 自定义支持并不是太友好。
+
+### [LEEAlert](https://github.com/lixiang1994/LEEAlert)
+
+[@looping](https://github.com/looping):LEEAlert 是一个可自定义 Alert 和 ActionSheet 样式的视图控件库,支持的功能特性相当丰富,能满足绝大多数弹窗提示的需求。通过 `.config` 开始链式调用,整体语法结构还是非常优雅的,有感兴趣的小伙伴可以参与共同维护。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#95-2019.12.16.md b/Reports/2019/#95-2019.12.16.md
new file mode 100644
index 000000000..3564a9699
--- /dev/null
+++ b/Reports/2019/#95-2019.12.16.md
@@ -0,0 +1,128 @@
+# 老司机 iOS 周报 #95 | 2019-12-16
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 🐢 [Flutter 1.12 重磅发布:支持 Web 与 macOS](https://mp.weixin.qq.com/s/-ZNHZWoNZj1P9dcAIRpbyg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):随着 [Flutter Interact](https://mp.weixin.qq.com/s/EEIwryZaQh3uEv5vzTHZ5Q) 的落幕,Flutter 1.12 稳定版本如期而至,此次不仅完成了成吨的 issues 修复 (关闭了 5303 个 issue,合并了来自 484 个贡献者的 5950 个 PR),而且带来诸多新功能和优化.
+
+- 增加了对 Android App Bundles 和 iOS 13 的支持
+- 改进后的 Add-to-App
+- Dart 2.7 Release
+- Flutter 1.12 的 master、dev 和 beta 频道都提供了改进的 Web 支持
+- macOS 支持
+- 新版 [DartPad](https://dartpad.dev/)
+- [Hot UI](https://github.com/flutter/flutter-intellij/wiki/HotUI-Getting-Started-instructions)
+- [Layout Explorer](https://flutter.dev/docs/development/tools/devtools/inspector#flutter-layout-explorer)
+- 🌟多设备调试
+- 还有更多新功能和社区插件等你探索...
+
+### 🌟 App Store Connect 的部分功能将于 12 月 23 日 - 27 日暂停使用
+
+一年一度的美国长假又来了,App Store Connect 已经正式向所有开发者推送节假日安排,时间段是 12.23-12.27。
+
+> App Store Connect:请确保您的 App 为最新版本,以准备迎接假期。App Store Connect 在 12 月 23 日 - 27 日(太平洋时间)期间不接受新 App 和 App 更新,因此请提前处理任何与发布相关的计划、提交和审批事宜。其他 App Store Connect 功能将不受影响。
+
+## 文章
+
+### 🌟 🐕 [Lightweight API design in Swift](https://www.swiftbysundell.com/articles/lightweight-api-design-in-swift/)
+[@zvving](https://github.com/zvving):
+> - 强大、灵活、易用?在 API 设计过程中你更在意哪一点?或者说,该如何把握这三者间的平衡?
+> - 面对 Swift 诸多新特性,我们会困惑:都能实现功能,我为什么要知道这些特性?
+
+本文尝试通过两个技术方案的设计变迁,回答上面的问题:(请留意每次设计变迁要解决的问题及其所带来的优劣)
+1. 协议(强大功能与灵活性) -> 带参枚举(更加易用) -> Self 为返回类型的静态方法(摒除 enum 带来的弊端,更灵活易用)
+2. 数组参数 -> 可变参数(更易用灵活) -> 提供 group 实现(向后兼容)-> 新场景(展示灵活性)
+
+就像文中所说,我们的最初目标是让 API 更易用,而更易用也能带来更易组合、灵活性更高的副产品。
+
+事实上, **在实践过程中,建议首要设计目标定义为(对使用者)易用,其次是(可预期的灵活性),最后才是功能强大。** 因为迫于问题领域的业务需要,功能强大是最容易并且一定会达成的目标。
+
+以易用性为目标,要在两个方向上持续前进:一是在业务领域不断深入思考问题本质,定义简明扼要的抽象;二是在『API 设计的工具箱』中选用最合适的工具,在提供强大功能与可预期的灵活性的前提下(记住这是一定可达成的),尽可能提升易用性。
+
+如果仅限于用类和协议抽象,设计时可用的手段将捉襟见肘。你手中『API 设计的工具箱』更丰富,就能有更多手段达成易用的目标。熟练掌握 Swift 语言特性,相信你能设计出更易用的 API。
+
+### 🐎 [用故事说透 HTTPS](https://mp.weixin.qq.com/s/MfvUuitrF8MN16nxyZNB8A)
+
+[@J_Knight_](https://github.com/knightsj):本文作者通过漫画故事的方式介绍了 HTTP 的不安全性,并讲解了 HTTPS 的几个概念:对称加密、非对称加密,数字证书以及数字签名,而且模拟了中间人攻击的场景,生动形象,易于理解。对 HTTPS 不熟悉的朋友可以阅读此文帮助理解。
+
+
+### 🐎 [The Advanced Guide to UserDefaults in Swift](https://www.vadimbulavin.com/advanced-guide-to-userdefaults-in-swift/)
+
+[@老峰](https://GesanTung.github.io/):本文主要介绍了 UserDefaults 的基础概念以及内部实现细节,如何使用 Swift5 中 Property Wrapper 和 UserDefaults 实现类型安全的键值存储;如何使用观察者模式监听 UserDefaults 的值变化。
+
+
+### 🐕 [iOS 图片内存优化](https://juejin.im/post/5ddc8258518825734f2b8eb2)
+
+[@EyreFree](https://github.com/EyreFree):本文介绍了作者对 iOS 平台上的 HEIF 图片格式使用过程中的性能问题进行优化的经验,结合实践针对 HEIF 图片加载过程中的内存暴涨和 CPU 高占用原因进行了分析,并给出了自己的解决方案,有遇到类似问题的朋友可以参考。
+
+### 🐕 [Quick tip: clearing your app’s launch screen cache on iOS](https://rambo.codes/ios/quick-tip/2019/12/09/clearing-your-apps-launch-screen-cache-on-ios.html)
+
+[@Jimq](https://github.com/waz0820):iOS 13 Launch screen 的缓存机制有所改变,当我们想动态改变 Launch screen 时会发现并不能看到自己想要的效果,作为 Xcode 的资深用户,我们莫逆于心,使出清缓存、重启真机/模拟器、重启 Xcode、删掉 App 的手法,但可能还是不能如愿,那么试试这篇文章里的方法吧,或许可以缓解痛苦,起码作者[推文](https://twitter.com/_inside/status/1204102470999400449)(🚧)下面一伙人是这么认为的。
+
+### 🐕 [如何对 iOS 启动阶段耗时进行分析](https://www.jianshu.com/p/c0c4f19d317f)
+
+[@五子棋](https://satanwoo.github.io):网上关于 App 启动优化的文章已经不计其数,但是这篇来自戴铭的文章对启动优化问题进行了很充分的定义。从问题分析 - 纬度联系 - 如何执行 - 优化维持等多个角度对优化所涉及的知识点进行了完整的描绘。同时文章提供了大量资料和工具来帮助大家更好地完成启动优化,是一篇不可多得的佳作!
+
+
+## 工具
+
+### [Pecker](https://github.com/woshiccm/Pecker)
+
+[@张嘉夫](https://github.com/josephchang10):`pecker` 是用来自动查找无用代码的工具,基于 [IndexStoreDB](https://github.com/apple/indexstore-db.git) and [SwiftSyntax](https://github.com/apple/swift-syntax.git),可以检测无用类、结构体、枚举、协议、函数、别名以及运算符。目前有五种规则,分别是 `skip_public`, `xctest`, `attributes`, `xml`, `comment`,可以禁用不需要的规则。
+
+### [NativeConnect](https://nativeconnect.app/blog/official-launch/)
+
+[@anotheren](https://github.com/anotheren):`NativeConnect` 是一款为 macOS 开发的 App Store Connect 原生桌面工具,相比直接使用游览器访问,它更加快捷。它采用工程化的设计,交互逻辑类似于 Xcode,方便你把项目分享给工作伙伴。目前支持应用元数据、用户评论的管理。
+
+## 代码
+
+### [Diagnostics](https://github.com/WeTransfer/Diagnostics)
+
+[@老驴](https://www.weibo.com/6090610445):`Diagnostics` 是一个帮助开发者诊断用户反馈信息的库。它可以快速集成入 App,自动生成邮件格式,添加包含系统日志在内的附件,甚至可以过滤日志中的敏感信息。在大公司的大型项目中,一般都有专门的组来完成这样的支持,而这样的开源项目,则可以帮助个人开发者或是小项目,快速轻松补全反馈功能。
+
+### [超甜的 Swift 初始化语法糖 - Then](https://github.com/devxoul/Then)
+
+[@水水](https://www.xuyanlan.com): Swift 初始化语法糖开源库,让你的代码更简洁。实现超简单,对实现感兴趣的朋友可以看看哦~
+
+## 程序员的副业
+
+> 让我们来探索一下 Coding 以外的世界,看看程序员除了在 996 之后还会在做点什么?
+
+团队成员 [@J_Knight_](https://weibo.com/1929625262/profile?topnav=1&wvr=6) 从去年年末开始了自己的股票和基金的投资之旅,用部分的业余时间学习投资理财方面的知识,从今年年初到现在的股票收益超过40%,基金收益超过20%;并在今年下半年开设了个人投资理财公众号「复利维他命」:该公众号主要分享理财,股票和基金投资的相关知识和实战经验,以及相关书籍的读书笔记。
+
+
+
+在这里分享他在上个月发布的一篇文章: [我为什么把投资作为自己的一项兴趣爱好](https://mp.weixin.qq.com/s/Vrp0DZssNb4vkiF04rlBBw)。这篇文章总结了他在这一年之内投资股票和基金的心得和体会,以及为什么把投资理财作为了自己的一项兴趣爱好的原因。本文对还没有开始投资股票和基金的朋友会有一些启发;对已经开始投资股票和基金的朋友可能也会有一定的借鉴意义。
+
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#96-2019.12.23.md b/Reports/2019/#96-2019.12.23.md
new file mode 100644
index 000000000..e2e4bf2d0
--- /dev/null
+++ b/Reports/2019/#96-2019.12.23.md
@@ -0,0 +1,131 @@
+# 老司机 iOS 周报 #96 | 2019-12-23
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🐕 [iOS 微信编译速度优化分享](https://mp.weixin.qq.com/s/-wgBhE11xEXDS7Hqgq3FjA)
+
+[@J_Knight_](https://github.com/knightsj):作者首先列举了调研过的,目前已有的编译速度优化方案,然后分享了微信使用的编译速度优化方案:
+
+1. 优化头文件搜索路径
+2. 关闭 Enable Index-While-Building Functionality
+3. 优化 PB/模版,减少冗余代码
+4. 使用 PCH 预编译
+5. 使用工具优化头文件引入;尽量避免头文件里包含 C++ 标准库
+
+而且在分享具体方案的过程中,还简单介绍了编译原理的知识,以及分析耗时的工具。对编译速度优化感兴趣的读者可以学习一下此文章。
+
+### 🐎 [Flutter: 首个面向环境计算打造的 UI 平台](https://mp.weixin.qq.com/s/ItRWmXPKt81tKLLTWoJqEQ)
+
+[@邦Ben](https://weibo.com/linwenbang):文章中写道,在这个新兴世界中,大家关注的焦点也开始从单一设备转向环境——一个允许您随时随地获取服务和软件的环境。我们将其称为环境计算 (ambient computing)。
+
+从这里我们可以了解到 Flutter 跨平台的决心和愿景。文章中大略总结了 Flutter 的近况,没了解过的可以看下,然后挑感兴趣的深入了解一番。
+
+- Flutter 发布 1.12
+- Flutter web 支持 beta 版
+- 可以发布 macOS App
+- Dart 2.7 发布
+- Supernova / Rive / Adobe 等在设计与原型工具中,增加对 Flutter 的支持,还支持设计稿导出 Flutter 代码
+
+### 🐕 [React Native 在美团外卖客户端的实践](https://mp.weixin.qq.com/s/9wv4uHg51EELU0yoIFQw8A)
+
+[@looping](https://github.com/looping):MRN(Meituan React Native)是美团研发团队基于 React Native 开源框架,并结合美团业务场景,定制化开发的一套动态化框架。
+
+本文从接入 MRN 后应用的整体架构,业务开发在现有技术栈上的选型,动态化后对研发流程的变化,在运维上对业务可用性的监控以及使用 MRN 后对效率的衡量等方面的实践做了非常详尽的介绍。
+
+如果有在建设动态混合开发方案,或对这块的工程化感兴趣的同学,推荐仔细阅读,从中还是能得到很多参考和启发的。
+
+### 🐎 [Swift API Availability](https://nshipster.com/available/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):本周 NSHipster 为你带来 `@available` 的详细用法,与 `#available` 的对比,以及在第三方 Framework、Swift Packages 中的使用建议。
+
+### 🐕 [百度 APP iOS 暗黑模式适配的完美解决方案](https://mp.weixin.qq.com/s/QOPCCIC-PbmUtuq2XUS34g)
+
+[@张嘉夫](https://github.com/josephchang10):由于 Dark Mode 只支持 iOS 13 以上的系统,为了给全系统所有用户最好的体验,百度研发出了一套皮肤主题框架,不仅可以全系统支持 DarkMode,还可以扩展多套皮肤主题。本文主要从皮肤主题框架实现、色值表的管理以及配套工具链等方面详细的介绍了百度 App iOS 暗黑模式的适配。目前系统所有控件及其 Color 属性和 Image 属性均已支持这套皮肤主题框架,业务方只需使用简单的 API 设置 Color 和 Image,即可实现主题换肤。同时为了提升一键刷新所有视图主题的性能,采用了 NSHashTable 弱持有控件的方案,通过测试数据得出: 在上万个视图量级下, HashTable 性能是远远优于通知的方式。
+
+### 🐎 [iOS 开发调试概览](https://www.cnblogs.com/kenshincui/p/11953536.html)
+
+[@红纸](https://github.com/nianran):本文是一个概览文章,简述 iOS 开发过程中,常用的一些调试手段。
+
+1. 常用的一些 LLDB 命令,扩展介绍了一下 [chisel](https://github.com/facebook/chisel) 和 [lldb_commands](https://github.com/DerekSelander/LLDB) 两个 lldb 的扩展仓库
+2. 常见的异常捕获方式。全局异常、EXC_BAD_ACCESS、Memory Leak
+3. Xcode 自带的调试方法。条件断点编辑、UI Debugger、主线程检查等等
+4. 第三方工具,[Charles](https://www.charlesproxy.com/) 网络调试工具和百宝箱 [WoodPecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12) 集网络沙盒等功能于一体的调试工具
+
+> 注:推荐 [《Advanced Apple Debugging & Reverse Engineering》](https://store.raywenderlich.com/products/advanced-apple-debugging-and-reverse-engineering) 一书,从中你能了解到更加细节的调试方法
+
+### 🐢 [iOS 项目技术还债之路《二》IAP 掉单优化](https://juejin.im/post/5df64beff265da33e97fcd2f)
+
+[@anotheren](https://github.com/anotheren):本文介绍了作者团队对于 IAP 的掉单优化,对于下单及验证流程进行了详细的分析,并介绍了优化后的实践方案。如果你也遇到类似的 IAP 问题,不妨一起讨论一下。
+
+### 🐕 [亮剑 - Stinger 是如何在速度上吊打 Aspects 的](https://juejin.im/post/5df6e5c96fb9a016301d9255)
+
+[@JimQ](https://github.com/waz0820):如题,饿了么团队进行了一项卓越的工作,其开源的 AOP 库 Stinger 的执行速度比目前最具统治力的 AOP 库 Aspect 快了大约 20 倍。本文从基本原理对比、测试速度对比、源码分析对比、各项功能对比四个层面与 Aspect 进行了综合 PK,其言吊打,亦不为过。
+
+### 🐢 [聊聊 Symbol](https://github.com/LeoMobileDeveloper/Blogs/blob/master/Compiler/unstanding-symbol.md)
+
+在日常开发中,我们或多或少都应该接触过 Symbol ,而真正使用到它的地方可能并不多。其实 Symbol 在编译期和运行时都扮演了重要的角色,但了解 Symbol 、Symbol Table 等概念对我们在一些问题的定位甚至做程序架构都很有帮助。
+
+### 🐕 [Objective-C Direct Methods](https://nshipster.com/direct/)
+
+[@AidenRao](https://weibo.com/AidenRao):Direct Methods 是 Objective-C 上新的方法调用机制(最早可能出现在 Xcode 11.x 上),调用 Direct Methods 时,它直接调用其基础实现,而不是通过 objc_msgSend。由于 objc_msgSend 在优化上已经做了很多,Direct Methods 并不会有太大的性能优势。实际的优点:Direct Methods 是私有方法,并不能被外部访问,也可以防止被 Objective-C 运行时动态地调用。不过根据实现此功能的 [Pierre](https://twitter.com/pedantcoder/status/1197269246289444864) 所说,此优化的主要好处是减少了代码大小。
+
+## 工具
+
+### [PodfilelockToPng](https://github.com/Orange-W/PodfilelockToPng)
+
+[@EyreFree](https://github.com/EyreFree):便利小工具,通过 Profile.lock 快速生成项目库依赖关系图,由作者 [Orange-W](https://github.com/Orange-W) 自荐。同类工具还有 [pretty](https://github.com/octree/pretty)、[EFPodsAnalyzer](https://github.com/EyreFree/EFPodsAnalyzer) 等。
+
+## 代码
+
+### [SwipeCellKit](https://github.com/SwipeCellKit/SwipeCellKit)
+
+[@老峰](https://GesanTung.github.io/): UITableViewCell/UICollectionViewCell 侧滑组件 Swift 版,支持左右滑动、图标文字自定义、自定义拖拽动画等,可优雅的实现 Cell 侧滑事件。
+
+### [flutter dart 私有仓库](https://github.com/bytedance/unpub)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):作用跟 Pod 私有库类似,作为公司内的私有备份还是很有必要的。同时包含了一个简单的搜索页面,强烈推荐。
+
+### [推荐一款 Postman 的开源替代品: Postwoman](https://mp.weixin.qq.com/s/8viBJ46-5-POvMftNfY-Eg)
+
+[@水水](https://www.xuyanlan.com):大家都知道,Postman 是一个非常受欢迎的 API 接口调试工具,小编自己也用过哦~,它提供有 Chrome 扩展插件版和独立的 APP,不过它的很多高级功能都需要付费才能使用。而 Postwoman 是一个 Postman 的免费、快速且美观的替代方案,作为一款开源的 Postman 替代品,主打特性有如下一些:
+
+- 轻盈,可直接在线访问;
+- 简约,采用简约的 UI 设计精心打造;
+- 支持 GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH 方法;
+- 支持验证;
+- 实时,发送请求即可获取响应。
+
+有兴趣的朋友可以点击[Postwoman GitHub 项目官网](https://github.com/liyasthomas/postwoman)下载体验啦~
+
+## 内推
+
+> 字节跳动-视频(北京)团队收 iOS/Android/Flutter/服务端/前端/QA。初中高级开发+实习都可以哟。收到的每一份简历都会帮大家跟踪流程。简历发送至:silence007pp@bytedance.com 如果感兴趣可以加微信详细聊一下:LuaPlayer
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2019/#97-2019.12.30.md b/Reports/2019/#97-2019.12.30.md
new file mode 100644
index 000000000..cf63e14d9
--- /dev/null
+++ b/Reports/2019/#97-2019.12.30.md
@@ -0,0 +1,110 @@
+# 老司机 iOS 周报 #97 | 2019-12-30
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [Updating Apps that Use Web Views](https://developer.apple.com/news/?id=12232019b)
+
+[@anotheren](https://github.com/anotheren):如果你还在使用 `UIWebView`, Apple 已经给你下了最后通牒。自 2020 年 4 月起,使用 `UIWebView` 的新应用将无法提交到 App Store;自 2020 年 12 月起,相关旧应用也将无法提交更新。赶紧计划迁移到 `WKWebView` 吧。
+
+## 新手推荐
+
+### 🌟 🐎 [Clean Architecture and MVVM on iOS](https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3)
+
+[@极速男孩](https://github.com/ztlyyznf001):本文介绍了如何在 iOS 中使用 MVVM 架构,MVVM 各个部分如何在 iOS 中发挥作用,以及如何保持一个清晰的文件结构。
+
+## 文章
+
+### 🌟 🐢 [系列文章:多地图源业务向地图控件开发思路](https://juejin.im/post/5e01c75c51882512766f4cf0)
+
+[@享耳先森](https://github.com/iblacksun):如果你在开发地图相关 App,应该知道服务商地图质量各有长短,所以,最好是能适配多种地图,让用户选择。
+
+这系列文章介绍了如何对地图服务进行抽象,可以方便的切换地图服务,同时在地图之上封装了统一的 UI 交互。
+
+### 🌟 🐕 [用户端智能的应用实践](http://blog.cnbang.net/tech/3643/)
+[@莲叔](https://weibo.com/aaaron7):端智能是近年来客户端除了动态化之外为数不多的技术新方向。端智能,顾名思义就是在客户端上运行机器学习/深度学习的算法。传统的端智能多半都 focus 在解决图形图像领域、NLP 方向的任务,比如 Apple 的 CoreML 与 Vision 框架。最近两年国内的互联网公司纷纷开始尝试拓宽端智能的应用范畴,比如端侧推荐重排等。目前端智能的瓶颈其实并不在于模型如何裁剪,算法如何提效,更多的在于合适的业务场景+合适的特征选取(也就是训练数据)。bang 的这篇文章介绍了他的团队在端智能上的一些业务场景尝试,对于希望落地端智能应用的同学与团队都非常有参考价值。文章举了金额推荐、智能 push 和本地处理三个场景,并且给出了落地过程中遇到的一些问题。从另一个侧面反映了目前端智能仍然处于不断探索的阶段,还没有到大规模普及与应用,但仍然蕴含着巨大的空间。
+
+### 🌟 🐢 [你的 App 在 iOS 13 上被卡死了吗?](https://mp.weixin.qq.com/s/W_AqP8cQy3d5QCMJ8Nzftw)
+
+[@Parsifal](https://github.com/ParsifalC):一篇由 [OpenUDID](https://github.com/ylechelle/OpenUDID) + `UIPasteboard` + iOS 13 上引发 App 卡死问题的深入分析好文。全文并不局限于这个问题,而是同时总结了排查这个问题过程中用到的方方面面知识技巧,十分值得我们借鉴。看完这篇文章,除了学习到排查复杂小概率问题的技巧,你还会对以下几个知识点有一个更清楚的认识。
+
+- Bugly 等第三方崩溃日志收集服务局限性在哪里?
+- 在第三方后台无法捕获崩溃日志时,我们可以做些什么?
+- 如何分别在有 dSYM 文件和无 dSYM 文件时解析崩溃日志?
+- `UIPasteboard` 是一个系统共享的服务,那么它的数据同步是如何做的?
+- UDID 被苹果禁用后的这么长时间,社区使用 UDID 的方式有着怎么样的变化?
+
+### 🐎 [UserDefaults Access via Property Wrappers Is Worse Than You Might Think](https://christiantietze.de/posts/2019/12/userdefaults-property-wrappers/)
+
+[@老峰](https://github.com/gesantung):本文讨论了文章 [The Advanced Guide to UserDefaults in Swift](https://www.vadimbulavin.com/advanced-guide-to-userdefaults-in-swift/) 使用 Property Wrappers 封装 UserDefaults 可能存在多个地方定义不同初始值的问题,并给出了更优的方案 [SwiftyUserDefaults](https://github.com/sunshinejr/SwiftyUserDefaults.git) 。
+
+### 🐎 [No space left on device: Testing low storage scenarios](https://www.avanderlee.com/debugging/no-space-left-on-device/)
+
+[@Parsifal](https://github.com/ParsifalC):如果你的 App 大量用到持久化存储技术,那么存储空间不足的错误应该是比较常见的。本文提出了一种利用模拟器重现存储空间不足的技巧,让我们可以轻松在该场景下测试和调试自己的 App。
+
+## 工具
+
+### [Proxyman:网络调试工具](https://proxyman.io)
+
+[@Jimq](https://github.com/waz0820):Proxyman 是一款 macOS 上的网络调试工具,使用 Swift 和 C++ 编写,美观高效功能强大,免费版就能使用抓包 / rewrite / breakpoint 等基本功能,推荐一试。PS:Setapp 也包含了这个 App。
+
+## 代码
+
+### [R.swift](https://github.com/mac-cain13/R.swift)
+
+[@zvving](https://github.com/zvving):类似于 Android 开发中的 R 类,为 image、font、localized-string 等资源提供强类型的访问方式,如:
+
+```swift
+let icon = R.image.settingsIcon()
+let font = R.font.sanFrancisco(size: 42)
+let string = R.string.localizable.welcomeWithName("Arthur Dent")
+```
+在减少字符串硬编码的同时,带来代码自动完成、编译期检查等功能,推荐一试。
+
+### [HomeKit Accessory Development Kit (ADK)](https://github.com/apple/HomeKitADK)
+
+[@老驴](https://www.weibo.com/6090610445):苹果放出了 HomeKit 附件开发包,其缩写为 HomeKit ADK。
+
+此 SDK 主要面向开发 HomeKit 相关的设备的开发者,提供了快速开发 HomeKit 相关功能的 API。需要注意的是,HomeKit ADK 只能用于非商用用途开发和使用,若进行商业开发,则需要注册 MFI,然后使用对应的商业版本的 SDK。
+
+### [KeyedCodable](https://github.com/dgrzeszczak/KeyedCodable)
+
+[@四娘](https://kemchenj.github.io):KeyedCodable 是一个简化 Codable 逻辑的库,之前一些自定义的逻辑都需要通过手写 decode 和 encode 去完成,例如嵌套,默认值和自定义编码策略等,现在使用这个库就即可自动完成。
+
+### [Hippy](https://github.com/Tencent/Hippy)
+
+[@looping](https://github.com/looping):Hippy 是由腾讯 QQ 浏览器部门发起,针对**前端开发者**推出的跨端解决方案,它同时支持 React 和 Vue 两种前端主流框架,并且已经在 GitHub 上正式开源。
+
+Hippy 在腾讯内部已经形成一套完整生态,包括对 GCanvas、Lottie、SVG 等都有相应组件封装,同时腾讯内部自研的 Hippy 业务组件库、高性能图形库、异常上报(支持 Sentry)等,也会在未来逐步对外开放。
+
+## 内推
+
+> 美团点评平台事业部业务研发中心技术架构组的招聘高级 iOS 开发,负责美团 App 部跨平台动态化布局项目iOS端SDK开发和维护,参与动态化布局项目编译脚本开发与维护。我们需要你 3 年或以上 iOS 开发经验,扎实的 Objective-C 语言基础,熟练掌握iOS开发、测试、调优等技术,以及相关工具的使用,积极主动,有良好的团队合作精神和强烈的责任感,对移动产品有浓厚兴趣及见解。详情联系美团点评 iOS 高级工程师 SketchK:zhangsiqi1988@gmail.com。
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2020/#100-2020.02.10.md b/Reports/2020/#100-2020.02.10.md
new file mode 100644
index 000000000..0183ab1ae
--- /dev/null
+++ b/Reports/2020/#100-2020.02.10.md
@@ -0,0 +1,104 @@
+# 老司机 iOS 周报 #100 | 2020-02-10
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🐎 [Enumerating elements in ForEach](https://oleb.net/2020/foreach-enumerated/)
+
+[@looping](https://github.com/looping):本文介绍了如何通过 SwiftUI 的 ForEach 来遍历展示列表,并对列表元素进行编号。作者记录了对这部分代码进行重构优化的整个过程,使用了 key-path-based 写法让代码变得清晰易懂,是一份不错的学习优化代码的材料。
+
+### 🐎 [iOS中编写高效能结构体的7个要点](https://www.jianshu.com/p/1369508e477d)
+
+[@极速男孩](https://github.com/looping):本文通过介绍在内存中一个结构体是如何被存放和使用的,来介绍在 iOS 中定义一个结构体有哪些需要注意的地方。
+
+## 文章
+
+### 🌟🐕[2019年终总结](https://mp.weixin.qq.com/s/VtWeOJj6SeQ7yzNL9ZMFPA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):一篇迟来的年终总结,作者从5个方面概括了自己一年的收益和变化:
+
+- 技术&职场
+- 投资
+- 读书
+- 生活
+- 2020 展望
+
+读完觉得很受触动,时间对每个人都是有限的,但是每个人用来做的事却不尽相同。作为技术人员,在技术道路上不断前进之外,似乎也有必要在其他方向上多有涉猎,这是个见仁见智的问题。相信各位读者会有自己的感受体会。
+
+### 🌟🐕🚧 [用 struct 还是 class?让 Swift-NIO 的开发者来告诉你](https://www.dotconferences.com/2019/01/johannes-weiss-high-performance-systems-in-swift)
+
+[@五子棋](https://satanwoo.github.io):稍微了解 Swift 的同学都知道 Swift Community 比较推崇使用 Struct,因为它是一种值语义,可以确保你的程序不会被各种 Side Effect 造成奇怪的影响。但本文的作者在开发 SwiftNIO 的时候发现在函数传参数的过程中 Struct 类型参数的性能要慢于 Class 类型,因此就深入研究了一番。同时,作者提出了一种 Struct 中嵌套 Class 并配合 COW 方式的设计,既能提升性能,又能维持值语义,是一篇适合 Swift 开发者的佳作。
+
+### 🐕 [@](https://nshipster.com/at-compiler-directives/)
+
+[@EyreFree](https://weibo.com/eyrefree777):Mattt 大神新作,以新手入门的视角列举并介绍了 Objective-C 中 `@` 符号开头的一系列指令,同时对它们的设计哲学做了简单描述(顺便黑了一下 Lisp)。
+
+参考:[中文翻译链接](https://nshipster.cn/at-compiler-directives/)
+
+### 🌟🐕 [Binary Frameworks in Swift](https://pspdfkit.com/blog/2018/binary-frameworks-swift)
+
+[@四娘](https://kemchenj.github.io):PSPDFKit 从一个服务商的角度介绍了 Swift 二进制 SDK 分发的细节,包括了 ABI 稳定的含义和开发内容,以时间线的形式给我们介绍了整个开发过程。
+
+### 🌟🐢 [为什么 SwiftPM 的开发进度比 Cocoapods 慢那么多?](https://artsy.github.io/blog/2018/12/21/why-is-swiftpm-taking-so-long/)
+
+[@享耳先森](https://github.com/iblacksun):CocoaPods 开发者 [Orta Therox](https://github.com/orta) 写了篇文章分析为什么 SwiftPM 开发速度比 CocoaPods 慢?总的来说,两者所关注的层级不一样:SwiftPM 需要关注全链路的编译,需要支持 Linux 等系统,脱离了 Xcode;而 CocoaPods 是基于 Xcode 之上的,其产物是给 Xcode 用的,只需关注 macOS 平台。
+
+### 🐎[再见,整洁代码(译)](https://overreacted.io/zh-hans/goodbye-clean-code/)
+
+[@JimQ](https://github.com/waz0820):这又是一篇对“代码洁癖者”的“劝你三思”的文章。正如作者文中所说,对“整洁代码”的沉迷、好于“消除重复代码”,是我们大多数开发者都会经历的阶段,但作为开发者不应仅仅关注于“整洁”,还要把一切需要权衡的因素考虑在内,考虑到对团队协作效率的影响,是否能够应付需求变化,以及这种行为对整个工程的影响等等。
+
+### 🐕 [TopLevelEncoder and TopLevelDecoder in Combine](https://oleb.net/2020/topleveldecoder/)
+
+[@anotheren](https://github.com/anotheren):在使用 Codable 这组协议时,你可能会发现已经内置于标准库中的 [`JSONDecoder`](https://developer.apple.com/documentation/foundation/jsondecoder) 和 [`PropertyListDecoder`](https://developer.apple.com/documentation/foundation/propertylistdecoder) 并未遵从于一个统一用于描述顶级解码器的协议,而编解码的起点与结果也并非仅有 `Data` 这一种而已。于是 `Combine` 中,为此定义了 [`TopLevelDecoder`](https://developer.apple.com/documentation/combine/topleveldecoder) 和 [`TopLevelEncoder`](https://developer.apple.com/documentation/combine/toplevelencoder) 协议来统一描述顶级的编解码器。本文以实际案例出发,简述了这组协议存在的缘由。在 Swift 未来的某一个版本中,它们会以不破坏 ABI 稳定的方式加入标准库。
+
+## 代码
+
+### [Barber](https://github.com/michaeleisel/barber)
+
+[@老驴](https://www.weibo.com/6090610445):此 framework 用了点投机取巧的方式来加快项目开发中增量编译的速度问题,基本思路是去掉 AppDelegate,转而为每一个大 ViewController 各自建立自己的 dependency,这样在针对某个 ViewController 做开发的时候,可以避免小改动就导致全部重新编译的情况。
+
+其实个人并不是很推荐在正儿八经的项目中使用这样的 framework,不过,这样的思路倒是可以参考一下。
+
+### [Pure-Swift-UI](https://github.com/CodeSlicing/pure-swift-ui)
+
+[@AidenRao](https://weibo.com/AidenRao):PureSwiftUI 是一个辅助 SwiftUI 的工具类,用于优化编写 SwiftUI 的体验。
+- 删除了大量的显示参数,通过更能表达含义的接口,将参数配置组合起来,使代码结构更清晰。
+- 只要你的变量是 Int,Double,Float,或者 CGFloat,PureSwiftUI 上都能混合着使用。
+- 通过修改 geometryReader 的备份 GeometryProxy,可以不影响 geometryReader 布局。
+- offsetToPosition 修饰符,可以将 View 的位置设置为任何坐标空间内的绝对位置。
+- 条件修饰符替代三目运算符,根据状态有条件地对视图进行样式配置。
+- SF Symbols 使用常量,替代字符串调用。
+
+
+## 内推
+
+> **回响科技招人啦,求简历:**
+> - 回响科技研发中心长期招聘 iOS 开发工程师、Android 开发工程师、Go 开发工程师/架构师、前端开发工程师,另有产品、运营、销售等非技术部门职位也欢迎投递!
+> - 坐标上海,主营业务为潮流文化产品交易平台&社区,团队技术氛围良好,对新技术接受程度高,对各类能够提升团队开发效率的工具/方法持开放态度。
+> - 简历以【姓名+投递岗位+手机号】格式发送至 eyrefree@eyrefree.org 或者直接加微信 `EyreFree`。
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
\ No newline at end of file
diff --git a/Reports/2020/#101-2020.02.17.md b/Reports/2020/#101-2020.02.17.md
new file mode 100644
index 000000000..44ca838e1
--- /dev/null
+++ b/Reports/2020/#101-2020.02.17.md
@@ -0,0 +1,128 @@
+# 老司机 iOS 周报 #101 | 2020-02-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🐎 [On the road to Swift 6](https://forums.swift.org/t/on-the-road-to-swift-6/32862)
+
+[@xiaofei86](https://weibo.com/xuyafei86):Swift 官方发布 Swift 6 未来方向:
+
+1. 加速 Swift 生态发展
+2. 优化开发体验(Compiler,Debugger,IDE 等工具)
+3. 朝着为开发者赋能的语言前进(语言功能层面)
+
+为此,将沿用 SSWG 的方式,在各个领域设立各自的工作组进行开发,并且 Core Team 也将进行人员调整,引入各个工作组的核心负责人。
+
+Swift 6 目前有两个目标:
+
+1. 加强并发的功能支持
+2. 继续沿着 [Ownership Manifesto](https://github.com/apple/swift/blob/master/docs/OwnershipManifesto.md) 的计划推进,优化内存模型
+
+这一次 Swift 6 不会有具体的时间安排,只会按照功能去公开各自的开发进度和时间表,当这些目标全都完成时就会 release Swift 6,在目标完成之前都只会按照周期 release Swift 5.x 版本。
+
+## 新手推荐
+
+### 🐕 [SwiftUI-官方教程翻译](https://github.com/WillieWangWei/SwiftUI-Tutorials)
+
+[@zvving](https://github.com/zvving):SwiftUI 已经公布半年了,开始逐渐有大批开发者尝试学习和使用。此项目翻译了共十篇官方的 SwiftUI 教程,在保留官方的文字内容、配图、代码外,还进行了细微的优化,推荐 Swift 新手参考。
+
+> 推荐人:[@Willie](https://github.com/WillieWangWei)
+
+## 文章
+
+### 🌟 🐕 [一次让刷新控件好玩起来的尝试](https://mp.weixin.qq.com/s/TOWIpYWfxxtgHE6oYDEd4g)
+
+[@zvving](https://github.com/zvving):相信你也有过『手里拿着锤子,看什么都像钉子』的经历。
+
+从学会 SpriteKit 能用在哪里?到下拉刷新游戏化『一本正经』的可行性分析,再到具体的代码实现。作者在创造需求的同时,提供了『严谨思考,细心实现』的样本。
+
+看完本文,会让人手痒,也想学些新技术,再找个场景用起来。
+
+### 🐕 [Library Evolution in Swift](https://swift.org/blog/library-evolution/)
+
+[@老驴](https://www.weibo.com/6090610445):Swift 编译器组的 Slava Pestov 在 Swift 官方网站上写了一篇关于 Swift 5.1 中 binary stability 相关的介绍。
+
+在 Swift 5.1 中,Swift 引入了两项新功能:Module stability 和 Library evolution。前者可以让不同版本编译器编译的 Swift Module 同时在一个 App 中运行,而后者,则可让 binary framework 开发者在不影响老版本兼容性的同时添加新功能。
+
+本文中,Slava 用了一些例子来介绍其中两个比较常用的 attribute:`@inlinable` 和 `@frozen`。 如果你在开发一些 framework 的话,不妨来读一读这篇文章。
+
+### 🌟🐕 淘系专家带你初探端智能与MNN
+
+[上篇](https://mp.weixin.qq.com/s/NUXVB4aK87keQD21wJx3Cw?from=timeline&isappinstalled=0&scene=2&clicktime=1580719278&enterid=1580719278)
+
+[下篇](https://mp.weixin.qq.com/s/mj3_44pvQaXoWP9dW3R0tQ)
+
+[@莲叔](http://aaaron7.github.io/):MNN 的文章之前也陆续推荐过一些,不过比较偏技术细节。本次推荐的两篇相对来说更加 general 一些。从为什么要做端智能聊到为什么要用MNN。上篇侧重于讲解了为什么端上 AI 是未来的发展方向,同时对于端智能面临的挑战和未来的发展趋势做了一些总结。下篇则主要分享了 MNN 的优势以及工作流程。两篇文章适合对于端智能持观望态度的研发同学参考,对于已经入坑的,参考价值不大。
+
+### 🌟🐢 [Static and Dynamic Callable Types in Swift](https://nshipster.com/callable/)
+
+[@JimQ](https://github.com/waz0820):上周 Xcode 11.4 第一个 beta 版给我们带来了大量有价值的更新,其中包括 Swift 比较受关注的两个新语法:[作为函数的 key path 表达式](https://github.com/apple/swift-evolution/blob/master/proposals/0249-key-path-literal-function-expressions.md) 和 [callAsFunction](https://github.com/apple/swift-evolution/blob/master/proposals/0253-callable.md) 。作者通过提供一些历史和理论背景,来帮助我们认识到新语法的真正价值点,以及 Swift 怎么把静态、动态可调用类型的版图一步步拼起来的。对于 Swift 不断并入的新提案导致“含糖量”逐渐增加的问题,作者也发出了“庐山不识真面目,只缘身在此山中”式的无奈之慨。
+
+### 🐕 [WatchKit渲染原理以及SwiftUI桥接](https://dreampiggy.com/2019/12/10/WatchKit渲染原理以及SwiftUI桥接/)
+Apple Watch 从发布以来,经过几次更新换代,目前已经成为市面上最受欢迎的可穿戴设备。Swift UI 是去年苹果新推出的 UI 相关框架。虽然 WatchKit 推出已经有一段时间了,但是相信多数同学并没有开发 Watch App 的经历,所以这两个对很多人相对陌生的技术如何结合开发,相信很多人对此会有兴趣。本文不仅介绍了 WatchKit 的渲染原理,还介绍了如何与 SwiftUI 进行桥接,值得好好了解下。
+
+## 工具
+
+### [ControlRoom](https://github.com/twostraws/ControlRoom)
+
+基于 simctl,让你可以通过 GUI 来便捷地控制模拟器,例如发送推送通知,切换夜间模式等。
+
+### [Sitrep](https://github.com/twostraws/Sitrep)
+
+Sitrep 是 Swift 的源码分析工具,为你提供代码的高级分析:
+
+- 你的类,结构体,枚举,协议和扩展的数量。
+- 总代码行数,以及源码行数(减去注释和空格)。
+- 列出最长行数文件,以及它们的源代码行数。
+- 哪些内容被 import 以及 import 的频率。
+- 你的项目中有多少个 UIView,UIViewControllers 和 SwiftUI 视图。
+
+## 代码
+
+### 🌟 🐕 [MLN —— 支持热更的移动跨平台解决方案](https://mp.weixin.qq.com/s/I4FRuC81AOgaNSEROrJVWw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):MLN 是陌陌技术团队开源的移动跨平台开发框架,因其较低的学习成本、较高的人员效率、良好的性能、支持线上热更新等优势,目前在陌陌 App 中已全面替换 Weex,成为唯一在用的跨平台方案,并广泛应用于多种业务场景. MLN 优点良多:
+
+- 包体积小,加载速度快,流畅度高(对比 Flutter/RN/Weex )
+- 开发调试支持热重载,提升开发调试体验,节约时间成本
+- 支持热更新,通过网络下载lua离线包即可实现热更新
+- 提升开发效率,一套代码适应 Android 和 iOS 两端
+
+## 音视频
+
+### 🌟🚧 [iPlayground 2019 | 網路難,難於上青天 - 用部件化的方式簡化網路程式設計](https://www.youtube.com/watch?v=Xk4HZfW6vK0&list=PLJN8Q2M8xECkvIbNFM30Bu91qbN92SXND&index=14)
+
+[@老峰](https://github.com/GesanTung): 视频是 [喵神](https://weibo.com/u/2210132365) 在 iPlayground 2019 的演讲,分享了 Line SDK 关于网络层的单一职责设计架构思路, 有兴趣的同学可以点这里看[源码](https://github.com/line/line-sdk-ios-swift/tree/master/LineSDK/LineSDK/Networking/Client)。
+
+
+## 内推
+
+> 杭州萧山微医集团招聘资深 iOS 开发工程师(Mac 方向)。微医集团是国内领先的互联网医疗方向独角兽企业,现招聘精通 Mac 端音视频方向研发工程师,参与音视频 SDK 的开发和维护,负责云会议客户端核心功能的设计开发和维护。有意向者发送简历至 zhangmw1@guahao.com,有投必回,实时反馈进度~
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2020/#102-2020.02.24.md b/Reports/2020/#102-2020.02.24.md
new file mode 100644
index 000000000..51e119cb2
--- /dev/null
+++ b/Reports/2020/#102-2020.02.24.md
@@ -0,0 +1,101 @@
+# 老司机 iOS 周报 #102 | 2020-02-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Swift Playgrounds For Mac](https://apps.apple.com/us/app/swift-playgrounds/id1496833156?mt=12)
+
+[@张嘉夫](https://github.com/josephchang10):Swift Playgrounds 最初于 [2016 年](https://tidbits.com/2016/06/13/playing-around-with-swift-on-the-ipad/)在 iPad 上发布,目的是为普通用户提供一种友好的方式来学习 Swift 语言。现在使用 Catalyst 技术制作的 Mac 版本已经发布,在 Mac App Store 上可以免费下载,大小为 155.1 MB,需要 macOS 10.15.3 Catalina 或更新的操作系统。
+
+## 文章
+
+### 🐎 [从探索到落地,手淘引入 Swift “历险记”](https://mp.weixin.qq.com/s/oHGkoGzhMs-l8TX6t0831w)
+
+[@JimQ](https://github.com/waz0820):本文还原了手淘 iOS APP 历时一年将 Swift 语言从调研到基础设施建设,再到顺利落地业务的全过程,其推进的策略、所遇到的问题及其解决方案,对国内还在踌躇如何落地 Swift 的同学具有很好的借鉴意义。
+
+### 🐎 [iOS Performance tips you probably didn't know](https://www.fadel.io/blog/posts/ios-performance-tips-you-probably-didnt-know/)
+
+[@EyreFree](https://github.com/EyreFree):作者为前苹果工程师,有多年苹果系统库和系统应用开发经验。文中介绍了 UILabel 和 tag 在资源占用与性能上的一些问题,并且讨论了多线程编程时的一些影响执行效率的细节。文中也提到了某些控件的缓存会在收到 `didReceiveMemoryWarning` 时进行释放(例如 UICollectionView 的重用区),开发者不必对 App 的高内存使用率耿耿于怀,模拟“内存警告”可以观察这一现象。建议对性能优化感兴趣的朋友阅读。
+
+
+### 🐕 [有赞iOS-基于二进制的编译提效策略](https://mp.weixin.qq.com/s/fcGfyM6hDGY6U1d-fBguuQ)
+
+[@莲叔](http://aaaron7.github.io/):iOS 从推出至今已经超过 10 年,越来越多的 iOS 工程都变得十分庞大。组件二进制化变为越来越主流的优化方案,能够显著减少全量编译的耗时。这篇文章介绍了有赞在优化过程中的一些心得。其中包含了一些比较零碎的优化手段,如 Xcode 编译优化,CCache 优化等,也包含一套相对完成的 Pod 二进制方案的介绍。整体还算比较体系,比较适合不愿意投入太多时间整理架构的中小型公司参考。大公司往往都有自己的打包架构,不一定适用。
+
+### 🐕 [Standard Library Preview Package](https://swift.org/blog/preview-package/)
+[@AidenRao](https://weibo.com/AidenRao):Swift 团队针对 Swift 迭代,添加标准库的预览版,提供给开发者使用。Swift 团队在正式版本之前,可以通过预览版的使用反馈,来做 API 的调整。
+
+## 工具
+
+### 🐎 [URLFormat](https://github.com/ilyapuchka/URLFormat#vapor)
+
+[@极速男孩](https://github.com/ztlyyznf001):这是在 [vapor] (https://github.com/vapor/vapor) 中基于 [common-parsers](https://github.com/ilyapuchka/common-parsers) 的不需要使用正则并且类型安全的来对 url 请求进行匹配的工具。
+
+### 🐕 [Swift 编写的 iOS 端抓包工具(Knot)](https://juejin.im/post/5e426f1a518825496f38149a)
+
+[@老峰](https://github.com/GesanTung):已支持的动能:
+- Http、Https 流量抓取
+- 流量解析、多格式导出、过程分析
+- 可抓取局域网内其他设备与外界通信数据
+- CA 证书安装、导出
+- 中英文国际化
+- 过滤规则配置、导出
+
+### 🐕 [ swift-doc - Generates documentation for Swift projects](https://github.com/SwiftDocOrg/swift-doc)
+
+[@水水](https://www.xuyanlan.com):swift-doc 可以为你的 Swift 项目生成文档,能给定 Swift 文件的目录,为每个类、结构、枚举和协议以及顶级类型别名、函数和变量生成 CommonMark(Markdown)文件。
+swift-doc 支持以命令的形式安装和使用在 MacOS 和 Linux 系统上。
+虽然目前输出仅限于 CommonMark,但计划同时支持 HTML 和其他格式。该项目正在积极开发中,预计在首次稳定发布前会有显著变化。
+
+## 代码
+
+### 🌟 🐕 [开源 | Objective-C & Swift 最轻量级 Hook 方案](https://mp.weixin.qq.com/s/wxigL1Clem1dR8Nkt8LLMw)
+[@zvving](https://github.com/zvving):字节跳动技术团队带来一套基于消息转发机制的 instance 粒度的轻量级 hook 方案:SDMagicHook。
+
+相较于 [Stinger](https://github.com/eleme/Stinger) 和 [Aspects](https://github.com/steipete/Aspects),SDMagicHook 只支持实例维度的 hook,函数替换、消息调度等过程都在 objc 层面处理,框架实现更轻量,源码更易懂。本文详细描述了其实现过程,推荐阅读学习。
+
+### [swift-checkit](https://github.com/karwa/swift-checkit/)
+
+[@享耳先森](https://github.com/iblacksun):这个库起源于作者遇到一个 bug:自定义了一个 `collection`,但对 index 处理和 SDK 行为不一致。所以作者写了这个库,面向协议的接口抽象了测试用例,一行代码即可完成协议 Conformance 的测试。
+
+### 🌟 🐕 [Flutter:图像的爆炸动画💥](https://juejin.im/post/5e3c17876fb9a07cab3a87fe?utm_source=gold_browser_extension)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):文章展示了如何使用 Flutter 粒子动画完成一个效果爆炸的动画效果,效果流畅.
+
+## 书
+
+### [Thinking in SwiftUI](https://www.objc.io/books/thinking-in-swiftui/)
+
+[@老驴](https://www.weibo.com/6090610445):objc.io 又要出新书了!这次是 SwiftUI 相关的书。根据目前的简介,本书将会专注在帮助大家从面向对象编程的思维转变成声明式编程。
+
+现在预购的话可以 early access 本书的内容,不过,估计喵神之后也会出对应的中文版,如果想看中文版的童鞋可以再等等。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2020/#103-2020.03.02.md b/Reports/2020/#103-2020.03.02.md
new file mode 100644
index 000000000..3bc08ff61
--- /dev/null
+++ b/Reports/2020/#103-2020.03.02.md
@@ -0,0 +1,104 @@
+# 老司机 iOS 周报 #103 | 2020-03-02
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Flutter 智能闹钟挑战赛评选结果揭晓](https://medium.com/flutter/its-time-the-flutter-clock-contest-results-dcebe2eb3957)
+[@zvving](https://github.com/zvving):Google 联合 Google Assistant、联想,发起的 Flutter 智能闹钟挑战赛已经评选结束,获奖及提名作品均有源码奉上,Flutter 爱好者不容错过。
+
+> 赛事网址:https://flutter.dev/clock
+
+## 文章
+
+### 🌟 🐢 [Flutter 在字节跳动的现状与工程实践](https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247493836&idx=1&sn=979792491d0abe803c0f00ed412fb0de&chksm=f9525d8fce25d499f5c9815529f7fc25d5e130986a44e430352e375b77d5fe727a8d88f783e1&mpshare=1&scene=1&srcid=&sharer_sharetime=1582811190556&sharer_shareid=b37c346ca5a345410d47741175cc1271&rd2werd=1#wechat_redirect)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):这是一篇主要分享 Flutter 在字节跳动的现状以及工程实践经验的深度好文。字节跳动希望把 Flutter 打造成下一代研发体系,支撑众多 App 的各种使用场景。文章分为几个部分:
+
+- Flutter 在字节跳动的现状
+ - Flutter 的优势与业务现状
+ - 建设进展与规划简介
+
+- 工程实践
+ - FlutterW 研发套件
+ - 容器化工程方案
+ - ByteRedux 状态管理方案
+
+- 总结与展望
+
+尤其是工程实践部分,FlutterW 研发套件标准化了 Flutter 的开发环境,提供了方案统⼀实施的能⼒。容器化方案让运行环境提供统⼀基础能力,真正实现“Write Once, Run Everywhere”。 ByteRedux 状态管理方案以很低的成本解决了 Redux 的问题,保留了 Redux 的优势,使其可以适应大中小型应用。字节跳动基于 Flutter 技术落地的解决方案以及相关的技术创新,相信会为更多企业和开发者提供启发和借鉴!
+
+### 🐕 [Four Easy Ways to Debug Network Requests in Flutter](https://medium.com/flutter-community/three-easy-ways-to-debug-network-requests-in-flutter-53043e898929)
+
+[@老峰](https://github.com/GesanTung):这篇文章分享了关于 Flutter 网络请求 Debug 的四种方式:
+
+ - 使用log 日志:使用 logs package 打印日志,可读性较差
+ - 使用 Alice:集成在 Flutter App 内部,可视化的展示网路请求记录
+ - 使用 Flipper:来自 Facebook 的 桌面 App
+ - 使用 Proxy 代理:在网络框架中配置代理 IP,配置 Charles,这个也是作者推荐的方式
+
+### 🐢 [How Swift imports C APIs](https://github.com/apple/swift/blob/master/docs/HowSwiftImportsCAPIs.md)
+
+[@xiaofei86](https://weibo.com/xuyafei86):当 Swift 从基于 C 的语言(C,Objective-C)导入一个模块或者解析 bridging header 时,这些语言的接口被映射为 Swift 接口以便可以在 Swift 代码中直接使用。这提供了 Swift EFI 功能的基础(Foreign Function Interface 外部函数接口)— 对基于 C 的语言开发的库提供互相操作的能力。
+
+本文为苹果的官方文档,讲述了接口怎样从基于 C 的语言映射到 Swift。文章的受众很广,在必要的时候会解释一些高级概念,除了技术专家,也推荐给 Swift 和 C 语言的初学者。
+
+### 🐕 [Swift.org - Announcing ArgumentParser](https://swift.org/blog/argument-parser/)
+
+[@AidenRao](https://weibo.com/AidenRao):Swift 发布 ArgumentParser,一个命令行解析库。可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 ArgumentParser 将对命令行进行解析,支持子命令,自定义帮助和参数验证提示。
+
+## 工具
+
+### [zld](https://github.com/michaeleisel/zld)
+
+[@四娘](https://kemchej.github.io/):一个更快的 linker。在大型项目里增量编译 link 阶段的耗时占用非常大,这个项目在 Apple 版本的基础上改为使用更加高效的 Hash 实现,增加任务的并行处理,Benchmark 显示 link 时间比原本缩短了 40% 左右。
+
+> 推荐人:[SketchK](https://github.com/SketchK)
+
+## 代码
+
+### 🌟 [DarkModeKit](https://github.com/microsoft/DarkModeKit)
+
+[@Damonwong](https://github.com/Damonvvong): Microsoft 作为老牌的软件公司,开发了不少优秀的 iOS App,比如 Office 套件。年前的时候 Office 有了一次比较大的更新,同时也支持了 DarkMode。令人兴奋的是,Office 套件中使用的 DarkModeKit 已经开源了。感兴趣的可以了解一下
+
+本人也学习和了解了一下 DarkModeKit 的源码,不得不说 DarkModeKit 的代码质量也非常高,非常值得学习。
+
+### [KeyboardGuide](https://github.com/niw/KeyboardGuide)
+
+[@EyreFree](https://github.com/eyrefree):众所周知的是,iOS 开发中如何优雅地处理键盘是一件比较有挑战性的事情。我们可以通过搜索引擎找到很多方案,但大多数都不是很完善。KeyboardGuide 将各种需要考虑的状况都包含在内,并且对 iPad 也提供了良好的支持,有需求的同学可以尝试一用。
+
+## 音视频
+
+### [Vue.js - The Documentary,Vue.js 纪录片,配中文字幕](https://www.bilibili.com/video/av92525472/)
+
+[@享耳先森](https://github.com/iblacksun):纪录片总长 30 分钟,记录 Vue 的发展过程。
+尤雨溪在片中讲了 Vue 名字由来,介绍了关键时间节点的发展过程,也和 `Angular` `React` 做了些对比。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
+
+
diff --git a/Reports/2020/#104-2020.03.09.md b/Reports/2020/#104-2020.03.09.md
new file mode 100644
index 000000000..db48ecd4d
--- /dev/null
+++ b/Reports/2020/#104-2020.03.09.md
@@ -0,0 +1,113 @@
+# 老司机 iOS 周报 #104 | 2020-03-09
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [近期 iOS 开发者需要关注的官方新闻](https://developer.apple.com/news/?id=03042020b)
+
+[@looping](https://github.com/looping):主要内容如下:
+- 目前 iOS 13 覆盖率已经达到 77%
+- 从 4 月 30 日起,所有提交到 App Store 的 iPhone 应用都必须使用 iOS 13 SDK(Xcode 11) 打包,也就是说要完成 iOS 13 适配
+- 再次强调了从 4 月 30 日起,所有提交到 App Store 的应用都必须使用 storyboard 作为 launch screen,并要求 iPhone 应用要适配所有的 iPhone 屏幕尺寸
+- 另外,审核条款也有更新([Updated App Store Review Guidelines Now Available](https://developer.apple.com/news/?id=03042020a)),可浏览知识小集团队整理的变更内容:[划重点:《App Store 审核指南》更新条目一览](https://mp.weixin.qq.com/s/Tzt0jmVt2q7zpL7g8kpb5g)
+
+
+## 文章
+
+### 🌟 🐕 [Project LightSpeed: Rewriting the Messenger codebase for a faster, smaller, and simpler messaging app](https://engineering.fb.com/data-infrastructure/messenger/)
+[@zvving](https://github.com/zvving):Facebook 新版 iOS Messager 为了达成『更快、更小、更简单』的目标,进行了一项罕见的工作:重构架构并重写所有代码。
+
+- 重写效果:保留大多数功能,启动快一倍,大小为之前四分之一,代码从 170w 行降低到 36w 行
+- 追求架构全局最优的四原则:
+ - 优先使用系统实现,少部分跨平台逻辑扩展 C 实现
+ - 合并重用 UI 逻辑
+ - 基于 SQLite 打造通用平台 MSYS:驱动 UI 业务,自动化测试 100% 覆盖
+ - 统一客户端与服务端交互&同步机制
+- 面对未来的代码增长,为每个功能设置复杂度预算,长期评估质量
+
+架构的抉择来自于 FB 工程师对如何用最新技术打造 IM 项目的整体思考:使用最新系统实现,追求复用,针对 IM 打造 DB 驱动核心,保持简单。读起来颇有『重剑无锋,大巧不工』的味道。
+
+顺带一提:这是一次 native to native 的重写,和 RN 没有直接关系。
+
+> - [@Dan Abramov 在 Twitter 上的回应](https://twitter.com/dan_abramov/status/1234801507805138945)
+> - [感谢知识小集提供的译文](https://mp.weixin.qq.com/s/kdezRmk_tgjUTsuCQcAqsw)
+
+### 🌟 🐢 [系列文章 - Swift Intermediate Language 初探](https://mp.weixin.qq.com/s/UQksScr_LZ1n7wLAVjzEMg)
+
+[第二篇 - 真实案例引发的 iOS 底层实现窥探](https://mp.weixin.qq.com/s/KHvWSsvKNxJq9IwAsZu4qw)
+
+[@享耳先森](https://github.com/iblacksun):Swift 是构建在 LLVM 上,使用 LLVM 中间表示(IR) 和 LLVM 不同后端生成机器语言。除此之外,Swift 编译器在生成 IR 之前,还设计了一门新的高级中间语言 `Swift Intermediate Language`,简称 `SIL`,SIL 会对 Swift 进行高级别的语意分析和优化。
+
+当你遇到一些无法理解的表面现象,没有办法通过文档或者前人经验解读问题的实质,想要尝试探究编程语言背后的实现细节,那么就需要跨越语言本身的了解,向下去专研编译器的实现细节。系列文章使用项目中实际遇到的一个真实案例,从一个具体的 `UITableView` 实现的例子引出,试图通过 `SIL` 这个中间语言,探究 Swift 背后的一些实现细节,帮助我们理解一些问题。
+
+> 推荐人:[@kingnight](https://github.com/kingnight)
+
+
+### 🐕 [Flutter +MLKit = ❤](https://medium.com/flutter-community/flutter-mlkit-8039ec66b6a)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文分享了一个 Flutter 与 MLKit 结合起来的 Demo:给名片拍照后提取其中的邮件地址。具体从下面三个步骤来展开:
+1. 照相(使用 Flutter 的 camera package)
+2. 使用 MLKit 提取照片中的文字(使用 textRecognizer 实例来提取出图片中的文字)
+3. 寻找文字中的邮件地址(使用正则表达式)
+
+而且在每一步骤作者都提供了相关代码,并在文章中提供了 Demo 地址:[Business-Card-Mail-Extractor](https://github.com/DaemonLoki/Business-Card-Mail-Extractor)
+
+### 🌟 🐕 [dna --- 一个 dart 到 native 的超级通道](https://juejin.im/post/5e5f1d41518825495b29a05b)
+
+[@老驴](https://www.weibo.com/6090610445):Flutter 最近是越来越火了,有越来越多的大厂开始进行尝试。
+
+dna 就是饿了么团队针对 Flutter 使用中的痛点:原生能力的调用,做的一个 channel 类型的框架。本文中也叙述了在 Android 和 iOS 下的实现的一些具体细节,有兴趣的同学也可以学习参考一波。
+
+### 🐕 [My experience replacing CocoaPods with SwiftPM](https://www.jessesquires.com/blog/replacing-cocoapods-with-swiftpm)
+
+[@anotheren](https://github.com/anotheren):Xcode 11 中已经自带集成了 Swift Package Manager,随着越来越多第三方库的支持,切换到 SPM 已经逐渐成为可能。本文介绍了当前切换到 SPM 存在的优势与不足,现在主要影响的问题还有:
+1. 不支持 Objective-C 和 Swift 的混合使用
+2. 不支持资源文件
+
+### 🐢 [深入剖析 WebKit](https://ming1016.github.io/2017/10/11/deeply-analyse-webkit/#more)
+
+[@kyo](https://github.com/KyoLi):虽然苹果从 iOS 8 开始就引入了 WKWebView,但在过去很长一段时间里是允许 UIWebview 和 WKWebView 共存的。苹果从 iOS 13 开始将 UIWebview 列为 Deprecated API,意味着开发者将不得不升级至 WKWebView。而 WKWebView 和 UIWebView 是完全不同的。如果想要更好的了解 WKWebView,那么就有必要深入了解一下 WebKit。本文是 @戴铭 老师关于 WebKit 的一篇文章,对于升级至 WKWebView 遇到的一些问题,或者想更深入了解 WebKit ,这里可能就有你想要的答案。
+
+> 推荐人:[@sigsegv](https://juejin.im/user/5a3123a26fb9a044fa19dc7b)
+
+### 🐕 [iPhone可以运行Android了](https://mp.weixin.qq.com/s/hYjmPNxlX8P_BiEo4LveJQ)
+
+[@EyreFree](https://github.com/EyreFree):Project Sandcastle(沙堡计划,项目地址:[https://projectsandcastle.org/](https://projectsandcastle.org/)),目前支持在 iPhone7 / 7 Plus 设备上运行 Android,本文记录了作者完整的尝试过程,有兴趣的朋友可以看一下。
+
+## 工具
+
+### [MultipeerKit](https://github.com/insidegui/MultipeerKit)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):MultipeerKit 是一个 Swift 软件包,它允许 iOS、macOS 和 tvOS 设备通过 Wi-Fi 网络,点对点 Wi-Fi 和蓝牙在它们之间交换数据。可以通过查看 Public API 文件夹中的 Swift 文件,了解使用 MultipeerKit 的更多信息。
+
+### [Xcode Build Settings](https://xcodebuildsettings.com/)
+[@AidenRao](https://weibo.com/AidenRao):Build Settings 有数百种配置,这个网站整理了每一个配置的含义,可以随时用来查询。结合 [Mattt](https://github.com/mattt) 的 [Xcode Build Configuration Files](https://nshipster.com/xcconfig/),了解使用 xcconfig 来管理 APP 的 Build Settings。
+
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#105-2020.03.16.md b/Reports/2020/#105-2020.03.16.md
new file mode 100644
index 000000000..8e477275b
--- /dev/null
+++ b/Reports/2020/#105-2020.03.16.md
@@ -0,0 +1,114 @@
+# 老司机 iOS 周报 #105 | 2020-03-16
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [WWDC20 改成线上举行](https://developer.apple.com/wwdc20/)
+
+[@享耳先森](https://github.com/iblacksun):受新冠疫情影响,苹果宣布一年一度的 WWDC 大会改为线上举行,具体日期及形式还未定,只指明将在六月举行。
+
+## 新手推荐
+
+### 🌟 🐕 [UIAlertController with Function Builders](https://felginep.github.io/2020-03-10/uialertcontroller-function-builders)
+
+[@AidenRao](https://weibo.com/AidenRao):Function Builder 是 Swift 5.1 的新特性,在 Swift 的基础上构建自己的 DSL 的语法。文章基于 Function Builder,创建简单且易读的 UIAlertController API,包括基础的 Function Builder 实践,条件语法,以及通过创建一个辅助函数,在 Function Builder 中实现 for 循环。
+
+## 文章
+
+### 🌟 [打破重重阻碍,Flutter 和 Web 生态如何对接?](https://mp.weixin.qq.com/s/eL02zPLFbTOXm1vS6UEA4g)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 在 2019 几乎已经成为了跨端开发的代名词了,其中其官方团队在下半年宣布的 Flutter Web 更是让其火热的势头更进一步,让大家看到了一个大统一的远景。本文是手淘技术对 Flutter 对接 Web 的一个深度解析,从 what,why,how 三方面娓娓道来,最终结论: 不要对接!不要对接!不要对接!
+
+### 🌟 🐕 [Fluttify](https://fluttify.com/#/)
+**系列文章:**
+- [Flutter 插件开发必备 原生 SDK -> Dart 接口生成引擎`Fluttify`介绍](https://juejin.im/post/5dc65fa2f265da4d23759cec)
+- [如何利用 Fluttify 开发一个新的 Flutter 插件](https://juejin.im/post/5e06faa651882512416a7630)
+- [Fluttify 输出 Flutter 插件工程详解](https://juejin.im/post/5e19306c6fb9a02ff67d3780)
+- [Fluttify 编译器原理介绍](https://juejin.im/post/5e67321751882549717d8de7#heading-1)
+
+[@红纸](https://github.com/nianran):Fluttify 是一个可以为原生 SDK 生成 Dart 接口的一个工具。工具解决了一些插件开发过程中带来的类型安全,编码繁琐等痛点。主要原理通过语法解析生成器 [ANTLR](https://www.antlr.org/) 产生树状分析器解析出 JSON 格式的中间文件,再利用中间文件和工程模板生成对应的 Dart 接口以及目标工程。
+
+如果你对于 **ANTRL** 想了解更多推荐:[JSPatch Convertor 实现原理详解](http://blog.cnbang.net/tech/2915/)和[从 antlr 扯淡到一点点编译原理](https://awhisper.github.io/2016/11/18/%E4%BB%8Eantlr%E5%88%B0%E8%AF%AD%E6%B3%95%E8%A7%A3%E6%9E%90/)
+> 推荐人:[@yohom](https://github.com/yohom)
+
+### 🐎 [Testing Push Notification on iOS Simulator from Xcode 11.4 Beta](https://medium.com/flawless-app-stories/testing-push-notification-on-ios-simulator-from-xcode-11-4-beta-2fdd91d67bff)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):从 Xcode 的 11.4 beta 版本开始支持在 iOS 模拟器推送。作者介绍了两种方式来实现在 iOS 模拟器的推送:
+1. 使用命令行:``xcrun simctl push booted test_push_notification.apns``
+2. 通过拖拽 apns 文件到模拟器的方式来实现推送。
+
+通过以上两种方式,开发者不需要使用真机,也不需要推送证书,更不需要使用 APNS 服务就可以实现推送,非常方便。
+
+### 🐎 [Flight rules for Git](https://github.com/k88hudson/git-flight-rules/blob/master/README_zh-CN.md)
+
+[@JimQ](https://github.com/waz0820):这是一篇 Git 急救指南,所谓"飞行规则",即用来指导问题出现后的应对之法。不像官方指南以罗列功能为主,本指南多以常见问题为小标题,然后给出该问题的具体解决步骤,非常适合就病投医,对症下药,且有中文版本。
+
+### 🐕 [Introducing Swift Crypto](https://swift.org/blog/crypto/)
+
+[@EyreFree](https://github.com/EyreFree):Swift Crypto 是一个新的 Swift 系统库,它对 Apple CryptoKit 的 API 进行了出色的封装。这个新的库提供了跨平台的解决方案,无论部署在什么平台上,Swift 开发人员都可以访问这些 API,以实现一系列通用的加密操作。只需要 `import Crypto` 就可以获取所有 CryptoKit API,在编写跨平台加密代码时非常有用。本文对该库进行了简单介绍,感兴趣的朋友可以了解一下。
+
+### 🚧 🐎 [The Nested Closure Trap](https://medium.com/flawless-app-stories/the-nested-closure-trap-356a0145b6d)
+
+[@Satanwoo](https://github.com/SatanWoo):Block / Closure 导致的循环引用想必大家在日常在开发中已经有了很深的体会。作者从 Swift 嵌套的闭包入手,提及了在多层嵌套中可能出现的内存泄漏场景。感兴趣的朋友可以用作一个补充知识漏洞的文章,时刻提示自己。
+
+### 🐕 [设计模式(Swift 5.0 实现)](https://github.com/Binlogo/Design-Patterns-In-Swift-CN)
+
+全面的 Swift 5.0 示例实现的设计模式,结合概念理论与代码示例可以更好地理解设计模式的实际应用。源项目为英文,此为中文整理翻译版本。
+
+### 🐕 [使用 protocol 和 callAsFunction 改进 Delegate](https://onevcat.com/2020/03/improve-delegate/)
+
+[@老驴](https://www.weibo.com/6090610445):喵神的新作。这篇文章也是之前喵神的小专栏的[文章](https://xiaozhuanlan.com/topic/6104325798)的后续。
+
+本文主要是通过 Swift 5.2 中最近新加的特性来完善之前的 Delegate Pattern 方案。有兴趣的同学不妨新老两篇文章一起读哦。
+
+## 工具
+
+### [CocoaHub](https://cocoahub.app/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B445)
+
+[@xuyanlan](https://www.xuyanlan.com):挺不错的一个 iOS 资讯 App,而且仅看 Feed 简介的话不用翻墙哦,[CocoaHub 下载链接](https://apps.apple.com/app/id1467755462)。
+
+## 代码
+
+### 🐕 [SwiftCurrency: Type-safety and algorithms for working with money in Swift.](https://github.com/peek-travel/swift-currency)
+
+[@极速男孩](https://github.com/ztlyyznf001):Swift Currency 是一个在 Swift 中来表达 [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 的一个货币的库。这个库是一个类型安全的,并支持文字表达,文字插入和数学表达式等对货币的操作。
+
+### 🐕 [Time: Building a better date/time library for Swift](https://github.com/davedelong/time)
+
+[@莲叔](http://aaaron7.github.io/):做过时间管理、日历等 App 的同学一般都会有一个同感,即系统提供的日期相关的 API 着事不怎么友好,尤其是涉及到时区的考虑,往往都非常容易采坑。Time 是一个纯 Swift 实现的日期 API 集合,提供了 SwiftPM 的方式接入。提供了一种“讲人话”的方式来操作日期和时间,比如可以简单的针对不同的时区生成 clock 对象,并能够轻而易举的从 clock 对象中拿到年月日,时分秒等信息。不用写很多 boilerplate code。有相关需求的同学可以尝试一下。
+
+### [YMHTTP](https://github.com/zymxxxs/YMHTTP)
+[@张嘉夫](https://github.com/josephchang10):`YMHTTP` 是一个适用于 iOS 平台,基于 [libcurl](https://curl.haxx.se/) 的 IO 多路复用 HTTP 框架,其 API 设计和行为与 NSURLSession 保持高度一致。因为 YMHTTP 是基于 libcurl 进行封装,所以有着较高的定制性,目前的版本与 NSURLSession 在 API 保持高度一致的同时拓展了 DNS 的能力(包括 SNI 的场景)。
+
+### [Swift Argument Parser](https://github.com/apple/swift-argument-parser)
+[@xiaofei86](https://weibo.com/xuyafei86):近日苹果开源了由 Swift 实现的 ArgumentParser。它用于解析命令行参数,具有直观、易用、简洁、安全的特点,是一个很出色的解析器。目前 ArgumentParser 的 star 数已达 1k。苹果还推荐了两个 ArgumentParser 在 Swift 项目工具中采用的示例:
+1. indexstore-db:一个包含两个命令的简单实用程序。
+2. swift-format:使用了一些高级功能,例如自定义选项值和隐藏标志。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#106-2020.03.23.md b/Reports/2020/#106-2020.03.23.md
new file mode 100644
index 000000000..32b0dad45
--- /dev/null
+++ b/Reports/2020/#106-2020.03.23.md
@@ -0,0 +1,93 @@
+# 老司机 iOS 周报 #106 | 2020-03-23
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [App Store 对 COVID-19 相关应用的审核要求](https://developer.apple.com/cn/news/?id=03142020a)
+
+[@享耳先森](https://github.com/iblacksun):苹果此前发出通知:为了保证数据源的可靠性,要求 COVID-19 相关应用必须以机构身份提交。同时,正常的审核流程可能需要比较长的时间,鼓励 COVID-19 相关应用在提交审核时发起「TimeSensitive Event」请求优先审核。
+
+## 新手推荐
+
+### [Determining which frameworks use UIWebView](https://blog.kulman.sk/determining-which-frameworks-use-uiwebview)
+
+[@老峰](https://github.com/gesantung):苹果已经弃用了 UIWebView,从 2020 年 4 月开始将不再接受新的 UIWebView 应用,从 2020 年 12 月开始将不再接受旧的 UIWebView 应用升级。本文介绍了检测三方库是否包含 UIWebView 的方法:
+
+- 源码:grep -r 'UIWebView' .
+- 非源码(.framework):nm *.framework/* | grep -i UIWebView
+
+## 文章
+
+### 🌟 🐕 [性能深度分析之 System Trace](https://mp.weixin.qq.com/s/wTF3JSFH5b2zIUYAbnC-Bw)
+
+[@五子棋](https://satanwoo.github.io):作者从 Time Profiler 的原理出发,阐述了性能优化过程中仅仅使用 Time Profiler 的一些瓶颈。然后引出了平时大家可能较少使用的 System Trace。通过一个具体加载 Dyld Lib 的例子来直观的对比 System Trace 能够对性能优化起到什么样的 “补缺” 式帮助。最后作者还补充了一些技术原理,来帮助大家更好的理解性能优化中的一些关键点,总之是一篇具有深度的 Instrument 佳作。
+
+### 🌟 🐕 [FlutterBoost1.0到2.0,我一共做了这几件事](https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247485085&idx=1&sn=277e1c7d555099f1cb1018614810f14e&chksm=fd54d28cca235b9a16518428b7f7df249e6da193e6fa9b567f19bcf9d88790e02b888c0c93bc&token=1853870359&lang=zh_CN#rd)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):FlutterBoost 目前已经来到 2.0 版本,在从 1.0 到 2.0 的过程中,踩了不少坑,本文是 FlutterBoost 小组对于升级过程中坑点的一个全盘解析,社区一直反馈的白屏和闪屏问题也在此次迭代中得到了解决。
+
+### 🐎 [基于时间轮片方式处理超时任务](https://juejin.im/post/5e733e4f51882549417fe9aa)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):如果每次判断某个任务是否超时的时候都要开启定时器的话,对性能上会带来一定的消耗。本文作者参考了使用时间轮片的方式去处理 TCP 心跳连接的方案,实现了一个基于时间轮方式来处理超时任务的框架,从一定程度上避免了性能的消耗。作者结合了代码框架代码和使用示例进行了讲解,并在文末附上了 demo。
+
+推荐阅读:[时间轮片(Timing Wheel)实现心跳机制](https://blog.csdn.net/u010837612/article/details/79582137)
+
+### 🐕 [一个不规范的 Category 写法导致的“血案”](https://mp.weixin.qq.com/s/odkqXKHkshXKS_ZPk_EhBA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):文中举例通过线上监控发现项目前后两个版本在没有较大改动的前提下,启动时间缩短了并且包体积也变小了,然后追根朔源找到是因为一个 UIView 分类把实现写在了头文件导致。
+
+因为这个分类会被工程中很多地方 import,而实现如果直接写在头文件中,相当于头文件的内容直接 copy 到对应文件,对应符号也编译到了对应的 .o 文件中,导致 .o 文件变大,所以会导致包体积变大。另外由于是 copy 到多个文件内,相当于生成了多个具有相同方法的分类,导致 UIView 的方法列表变长,进而导致在 UIView 消息发送过程中的查找时间变长,因为又会导致启动时间变长。
+
+### 🐕 [MediaPipe - 跨平台机器学习应用开发框架](https://juejin.im/post/5e702e06e51d4526f363c62a?utm_source=gold_browser_extension)
+
+[@老驴](https://www.weibo.com/6090610445):MediaPipe 是 Google 开发并开源的数据流处理机器学习跨平台应用开发框架。作为基于图的数据处理管线,MediaPipe 适用于视频,音频,传感器数据等这些时间序列数据。
+
+框架主要想要解决的是性能,充分利用设备功能等在跨平台机器学习开发中比较有难度的问题。MediaPipe 同时还提供了可视化图编辑器,使用的时候,对新手更加友好。有兴趣的童鞋们不妨来看看。
+
+### 🐢 [Avoiding massive SwiftUI views](https://www.swiftbysundell.com/articles/avoiding-massive-swiftui-views/)
+
+基于 UIKit 开发的应用程序,很容易使我们开发出 “Massive View Controller” ,因为 ViewController 通常承担了过多的职责。SwiftUI 是 Apple 去年发布的一个全新 UI 框架,它采用声明式的界面开发方式,没有各种 view controllers ,可以使我们更容易写出低耦合的代码。但即便如此,如果要避免 “Massive View Controller” ,依然需要进行一些良好的设计。本文介绍了如何在基于 SwiftUI 开发的前提下,将 UI 分解成更小的模块,让职责更单一,这会有助于我们写出更易迭代和维护的代码。
+
+## 工具
+
+### [Profiling and debugging your Combine code with Timelane](https://www.donnywals.com/profiling-and-debugging-your-combine-code-with-timelane)
+
+[@zvving](https://github.com/zvving):[Timelane](http://timelane.tools/) 是一个响应式编程调试工具,结合 Instrument 提供更直观、交互式的调试过程,同时支持 Combine 和 RxSwift。这篇文章告诉你如何上手 Timelane,告别 print 的调试方式。
+
+### [GitHub 手机客户端正式发布 ](https://github.com/mobile/)
+
+[@xuyanlan](https://www.xuyanlan.com):GitHub 手机客户端已经正式发布在了 Google Play 和 AppStore。
+
+## 代码
+
+### [FLUI](https://github.com/rannie/flui)
+
+[@looping](https://github.com/looping):[FLUI](https://www.flui.xin/) 是一个基于 Flutter 开发的 UI 框架,拥有完善的使用示例和文档,同时支持动态化渲染、Dark Mode 等特性,喜欢 Flutter 的同学可以好好学习研究一番。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#107-2020.03.30.md b/Reports/2020/#107-2020.03.30.md
new file mode 100644
index 000000000..f72936340
--- /dev/null
+++ b/Reports/2020/#107-2020.03.30.md
@@ -0,0 +1,91 @@
+# 老司机 iOS 周报 #107 | 2020-03-30
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🐎 [【译】用UIKit和UIView在视图上执行iOS动画](https://juejin.im/post/5e784681f265da57671be823)
+
+[@极速男孩](https://github.com/ztlyyznf001):本文介绍了 UIView 中实现动画的几种方法以及各个参数的意义,最后简单介绍了如何去优化动画的性能。可以参考[原文](https://www.smashingmagazine.com/2019/11/performing-ios-animations-views-uikit-uiview/)。
+
+## 文章
+
+### 🐎 [为什么 Debug Information Format 改为 DWARF 可以提高编译速度?](https://mp.weixin.qq.com/s/97h0oeotOpyTc_a-9ZSJtQ)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文探索了将 Debug Information Format 改为 DWARF 可以提高编译速度的原因。首先介绍了 DWARF 和 dSYM 的生成时机,以及设置 DWARF with dSYM 与否的产物区别和性能区别,并提供了在不同情况下的性能测试结果。通过本文可以让我们对编译器的编译过程、调试器的调试符号查找过程有较为深入的认识,也可以让我们明白为什么这种优化可以带来编译性能的提升。
+
+### 🐕 [微信支付跨平台软件架构](https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=2649287208&idx=1&sn=6f3813deaad2aa6f096bc0b0d7ba8c34&chksm=8334ceaab44347bc903bcf1d00898e124ccbc509fd628b119071b41a05959f09df2ef0716bea&mpshare=1&scene=1&srcid=&sharer_sharetime=1584703159505&sharer_shareid=c357a4972a00ef443223641b12ffbd76#rd)
+
+[@莲叔](http://aaaron7.github.io/):说起跨平台,我们一般想到的都是 RN、Weex 这样基于 JS 技术栈的跨平台技术。但 iOS、Android 都提供了比较友好的交叉编译工具,使得基于 C/C++ 的跨平台开发也是非常值得考虑的一个选项。微信支付基于业务逻辑复杂、双端实现不一样导致的高昂的维护成本的背景下,开发了一套基于 C++的跨平台开发框架,使得核心的业务逻辑都下沉到 C++中,使用同一份代码来实现,取得了非常显著的业务效果。该文对该架构进行了详细的介绍,也有很多关于架构设计过程中的考量的解析,非常有参考价值。推荐工作中有较多架构工作内容的同学阅读。
+
+### [Swift 5.2 正式发布 & 5.3 正在路上](https://swift.org/blog/5-3-release-process/)
+
+[@享耳先森](https://github.com/iblacksun):Swift 5.2 已经正式发布,主要是对错误诊断的增强以及以下两个新特性:
+- [SE-0249 Key Path Expressions as Functions](https://github.com/apple/swift-evolution/blob/master/proposals/0249-key-path-literal-function-expressions.md)
+- [SE-0253 Callable values of user-defined nominal types](https://github.com/apple/swift-evolution/blob/master/proposals/0253-callable.md)
+
+Swift 5.3 已确定相关计划,专注于质量和性能提升,另外,预计将增加对 Windows 及其他 Linux 发行版的支持。
+
+### 🐎 [Weex、RN 还是 Flutter?资深技术专家与你聊聊阿里跨平台思路](https://mp.weixin.qq.com/s/AufpOA4ZDu0sf0sL-Sv_Sw)
+
+[@looping](https://github.com/looping):本文介绍了跨平台开发的发展趋势和变化,并提出从研发成本、灵活性、性能体验这三个角度来考虑如何选择适合自己的跨平台开发框架,同时也介绍了阿里各跨平台开发框架的发展及应用,以及 5G 时代给移动领域带来的新机会。
+
+### 🐎 [手淘 App 如何落地 Swift ?一边探索实践,一边“打怪升级”](https://mp.weixin.qq.com/s/_iweRWQCjnoASCmUAKHDFA)
+
+[@JimQ](https://github.com/waz0820):上个月周报推荐了[从探索到落地,手淘引入 Swift “历险记”](https://mp.weixin.qq.com/s/oHGkoGzhMs-l8TX6t0831w),本篇是 InfoQ 对文章作者最新的采访稿。
+
+1. 首先,更细致的讲述了决定引入 Swift 之前的各种考虑,以及在落地过程中流程和方法的摸索。
+2. 讨论了中国 Swift 生态落后于国外的原因,以及随着 Swift ABI 的稳定,对未来一两年国内生态进步的极大期许。
+3. 最后,谈了年度热点 SwiftUI 和 Flutter,以及移动跨平台技术的选择问题。
+
+### 🐎 [滴滴正式发布开源客户端研发助手DoKit 3.0,新特性解读](https://mp.weixin.qq.com/s/cTze8_-0KBIHHh96aEcilg)
+
+[@红纸](https://github.com/nianran):[DoKit](https://github.com/didi/DoraemonKit)([DoraemonKit](https://github.com/didi/DoraemonKit)) 是滴滴开源的一款功能齐全的客户端研发助手。在最新发布的 3.0 版本中,新增了多项新功能:
+
+1. 接口 Mock:拦截 APP 的网络请求进行转发至 DoKit 平台,返回开发人员预先设定好的数据
+2. 健康体检:该功能开启后,DoKit 会在一定间隔时间内去记录 CPU、内存、FPS 等信息,与此同时会触发式收集网络、页面卡顿类数据。将此类数据上传到 DoKit 平台后可以进行图形化展示分析
+3. DBView:将我们的 APP 内数据库同步到 PC,在 PC 上完成的增删改查会同步到 APP 的数据库内
+4. 函数耗时:采用 **Hook objc_msgSend** 的方式,来记录每个函数的耗时,并已树形结构输出
+
+如果你的 APP 还没有合适的 Debug 工具集合,DoKit 值得一试。详细文档请查阅 [DoKit 官方文档](http://xingyun.xiaojukeji.com/docs/dokit/#/intro)。
+
+### 🐢 [Flutter Platform Channel 使用与源码分析](https://juejin.im/post/5e78989cf265da575c16e75c)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):日常的 Flutter 开发中,如果你想和 Native 层交互,那么 Platform Channel 是必经之路,提供方便之余我们也好奇其实现原理,底层是如何操作的,本文多个纬度深度剖析 Platform Channel ,其中源码分析更是抽丝剥茧,从更深的层次带你全方位了解 Platform Channel 。
+
+### 🐢 [在 ARC 下对非 ObjC 类型的指针进行操作的编译器陷阱](https://mp.weixin.qq.com/s/SE5vpD733SQw9_yc1JN_TQ)
+
+[@kyo](https://github.com/KyoLi):在 MRC(手动管理内存) 时代,内存管理是一件很重要的事,稍有不慎,就可能造成内存泄漏甚至 crash 。如果开启了 ARC 模式,在 backend 阶段会通过几个 ObjcARC Pass 插入基于引用计数的内存管理语句,从而使我们不必再去手动 `retain` 或者 `release` 对象,而且,ARC 下的内存管理常常会比我们手动管理得更好,内存泄漏更少。但 ARC 也并不是完全不会出错,如果某些隐式操作逃过了 ObjCARC Pass 的“火眼”,可能会生成不配对的 RC 语句,从而导致运行时异常。本文介绍了两种可能引发 ARC 异常的情况并分析了原理,也可以让我们更深入了解 ARC 的底层原理。
+
+## 代码
+
+### 🐕 [SourceKitForSafari](https://github.com/kishikawakatsumi/SourceKitForSafari)
+
+[@莲叔](http://aaaron7.github.io/):相信对于绝大多数开发同学来说,在选择把一个 github repo clone 到本地之前,都会在页面上先浏览一下代码,看一下是否能够大概满足自己的要求。但在网页上看代码普遍是比较痛苦的,SouceKit for Safari 就是解决这个痛点的一个插件,它实现了在浏览器的环境中实现一些基本的 IDE 功能,比如跳转到定义,查看文档以及查看变量定义等功能。配合 Octotree 插件(github 的文件列表插件),相信可以极大的提升 github 的使用体验。我已经迫不及待想要尝试一下了。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#108-2020.04.06.md b/Reports/2020/#108-2020.04.06.md
new file mode 100644
index 000000000..dd8ed2e88
--- /dev/null
+++ b/Reports/2020/#108-2020.04.06.md
@@ -0,0 +1,115 @@
+# 老司机 iOS 周报 #108 | 2020.04.06
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🐎 [通用购买现可包含 Mac App](https://developer.apple.com/cn/news/?id=03232020b&from=timeline&isappinstalled=0)
+
+[@水水](https://www.xuyanlan.com):现在,可以在通用购买中包含 app 的 macOS 版本,让用户只需购买一次,即可在 iOS、iPadOS、macOS、watchOS 和 Apple tvOS 上使用您的 app 和 App 内购买项目。为此着手准备,只需在 Xcode 中为您跨平台的 app 绑定相同的 bundle ID,并在 App Store Connect 中为通用购买设置好 app 记录。
+
+## 新手推荐
+
+### 🐢 [字符串比较中 NSNumericSearch 选项的工作原理](https://blog.harrisonxi.com/2019/02/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83%E4%B8%ADnsnumericsearch%E9%80%89%E9%A1%B9%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)
+
+[@极速男孩](https://github.com/ztlyyznf001):比较版本号是我们开发中常见的需求,在字符串中我们经常会使用到 NSNumericSearch 对当中的数字进行比较,本文主要介绍了在各种不同情况下字符串通过 NSNumericSearch 比较的结果和从中得到原理。
+
+## 文章
+
+### 🌟 🐢 [Apple 操作系统可执行文件 Mach-O](https://ming1016.github.io/2020/03/29/apple-system-executable-file-macho/)
+
+[@J_Knight_](https://www.weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1/):Mach-O 在 Mach 内核的操作系统(macOS,iPadOS 和 iOS)中使用。学习它有助于理解程序是如何加载到这些系统和如何执行的,也有助于了解符号查找,函数调用堆栈符号化等等。本文结合代码,从 Mach-O 的构建方法,如何组织,如何工作,导入和导出的方法,对其做了比较详细的介绍。对于想学习 Mach-O 的读者来说,本文是一篇可以初步了解 Mach-O 的文章。
+
+### 🌟 🐎 [字节跳动为什么选用 Flutter:并非跨平台终极之选,但它可能是不一样的未来](https://mp.weixin.qq.com/s/biRl-SCXro3U_96X9N2UBg)
+
+[@looping](https://github.com/looping):本文是 InfoQ 对字节跳动移动平台部 Flutter 架构师、知名博客 Gityuan 博主袁辉辉采访内容的整理,主要有分析了大家看好 Flutter 以及字节跳动选择 Flutter 的原因,还分享了公司内部在 Flutter 实践和推广过程中遇到的一些问题和阻力,最后也提出了他个人对跨平台技术的一些看法,这些都可以作为我们在做跨平台技术选型时的参考。
+
+### 🐕 [A Look Into ArgumentParser](https://www.fivestars.blog/code/a-look-into-argument-parser.html?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B448)
+
+[@xiaofei86](https://weibo.com/xuyafei86):最近,苹果开源了由 Swift 实现的用于解析命令行参数的 [Swift Argument Parser](https://github.com/apple/swift-argument-parser)。在了解基本使用后,本文将带你深入探究 ArgumentParser 的内部实现,了解 ParsableCommand 协议和四个属性包装器背后隐藏着的复杂性。通过本文,你可以了解到 Swift 团队为实现优雅接口所付出的巨大努力,并希望你也可以欣赏这些优雅设计。
+
+### 🐕 [iOS 端矢量图解决方案汇总(SVG 篇)](https://dreampiggy.com/2020/03/30/iOS端矢量图解决方案汇总(SVG篇)/)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):SVG 作为目前在 Web 上最流行的矢量格式,在 iOS 端的支持可以说是一言难尽。文中列举了几个目前已有的实现,可以说是各有优劣,具体使用何种方案还要根据自己的实际需要来选择。
+
+### 🐕 [全网最详!暗黑模式在 Trip.com App 的实践](https://mp.weixin.qq.com/s/oU13hMQ2MJIYZoJWC74EMQ)
+
+[@红纸](https://github.com/nianran):本文是携程团队对于适配 **Dark Mode** 的实践总结,从视觉设计、设计方案(颜色映射及插画设计)等角度来阐述 **Dark** 跟 **Light** 在设计上的区别。最后配套有 iOS/Android/RN 三端的适配方案可供开发大大们进行参考。
+
+往期周报中的两则相关内容推荐给大家:Office 开发组件 [DarkModeKit](https://github.com/microsoft/DarkModeKit) 和开发适配相关的 [How To Adopt Dark Mode In Your iOS App 🌙](https://www.fivestars.blog/code/ios-dark-mode-how-to.html)
+
+### 🐕 [Kotlin/Native and Xcode integration insights](https://medium.com/@mateuszmatrejek/kotlin-native-and-xcode-integration-insights-357b8747a1c8)
+
+[@老峰](https://github.com/gesantung):Kotlin/Native 是一种基于 LLVM 将 Kotlin 代码编译成本地二进制文件的技术,它可以在没有虚拟机的情况下运行。本文介绍了在 Xcode 集成 Kotlin/Native 工具集实现,从而实现 iOS 调用 Kotlin 公共业务代码库的具体操作过程,感兴趣的读者可以进一步了解。
+
+### 🐕 [静态插桩的方式来实现 Hook Method](https://juejin.im/post/5e74bc39f265da576a57a293)
+
+[@Parsifal](https://github.com/ParsifalC):[99 期周报](https://juejin.im/post/5e1c04626fb9a03013306396#heading-5)推荐过美团欧阳大哥关于「静态拦截 iOS 对象方法调用的简易实现」一文,该文从另一个新颖的角度“静态库会将自己引用的外部符号单独保存在一张表中”出发,提出了 Method Hook 的新思路。本篇文章则基于这个理论完成了实践。文中作者总结了几点实践过程中遇到的问题,包括对静态库和目标文件的理解、Python 实现的坑等方面,值得我们借鉴。
+
+> 本文由作者 [maniackk](https://github.com/maniackk) 自荐。
+
+## 工具
+
+### [Echo](https://github.com/didi/echo)
+
+[@EyreFree](https://github.com/EyreFree):Echo 是一款简单易用、插件化易扩展、大屏显示和操作的客户端研发调试工具,可以实时查看 App 各类数据(网络请求、日志、埋点等),也可以无须改动代码快速修改预览 App 的效果。相比其他 Debug 工具,它还具有以下优势:
+
+- 大屏幕:显示效果更优,不影响原 App 的用户操作,使用体验更好;
+- 扩展性:内置通用模板及插件机制可快速扩展新功能,只需关注业务数据即可,降低新功能扩展成本;
+- 聚合型:收敛客户端研发调试工具为一体,提高 RD 和 QA 同学的效率;
+- 缓存机制:插件自带缓存机制,出现问题时即使脱离大屏,后续也可快速连接排查定位。
+
+## 代码
+
+### 🐎 [TextureSwiftSupport](https://github.com/TextureCommunity/TextureSwiftSupport)
+
+[@JimQ](https://github.com/waz0820):脸书大厂出品的 [Texture](https://github.com/TextureGroup/Texture) 采用者众多,SwiftUI 风格的 Texture 现在可以尝试了(非官方),基于 Swift 为 SwiftUI 引入的新特性 [Function builders](https://github.com/apple/swift-evolution/blob/9992cf3c11c2d5e0ea20bee98657d93902d5b174/proposals/XXXX-function-builders.md)。
+
+## 音视频
+
+### [道长三十:工科生如何去美国读研?](https://talk.swift.gg/62?from=timeline&isappinstalled=0)
+
+[@张嘉夫](https://github.com/josephchang10):ggtalk 这期的嘉宾是目前在美国工作的[故胤道长](https://www.weibo.com/soapyigu?refer_flag=1005055013_),总节目时长接近五个小时,按照内容分为三期。第一期道长主要和大家聊聊在 CMU 读研的过程,从准备、申请到入学之后的各种经历。
+
+### [ATP 371: Chris Lattner 访谈](https://atp.fm/episodes/371)
+
+Chris Lattner 大神再一次作客 ATP,这次聊的话题有:
+
+- Swift for TensorFlow
+- MLIR(本期的标题来源)
+- Swift 统治世界
+- SwiftUI & Combine
+- Swift ABI Stability
+
+这期节目跟上次一样也是非常欢乐,聊 MLIR 之前 Chris 还问主持人这个话题对他来说会不会太过极客?🤣
+
+> There's another project called MLIR. Have you heard of anything about that? Do you want to talk about that? Or is that too geeky for John Siracusa?
+
+总的来说这期节目非常推荐收听,另外没有听过上次访谈的读者,也直接可以看道长整理的文字版 [Chris Lattner 访谈录](https://zhuanlan.zhihu.com/p/31189342)。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#109-2020.04.13.md b/Reports/2020/#109-2020.04.13.md
new file mode 100644
index 000000000..4037ba652
--- /dev/null
+++ b/Reports/2020/#109-2020.04.13.md
@@ -0,0 +1,78 @@
+# 老司机 iOS 周报 #109 | 2020.04.13
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🐎 [Using Closures to initialize properties in Swift](https://www.donnywals.com/using-closures-to-initialize-properties-in-swift/)
+
+[@anotheren](https://github.com/anotheren):本文介绍了如何使用闭包来初始化存储属性,特别是使用 `lazy var` 来延迟初始化,你甚至可以在闭包中“安全”地使用 `self`。闭包将原本分散在程序各处的代码合理地组合到一起,推荐尝试。
+
+[@zvving](https://twitter.com/zvving):值得注意的是,`lazy var` 这种方式并不能做到 thread-safe,使用时有必要考虑到这点。更多的 Swift 资源竞争相关知识可以再阅读下 92 期周报推荐的 [Thread Sanitizer explained: Data Races in Swift](https://github.com/SwiftOldDriver/iOS-Weekly/blob/f457fc59fdbc7fa4df4325bd30a1dbffa8f9626a/Reports/2019/%2392-2019.11.25.md#-thread-sanitizer-explained-data-races-in-swift) 一文。
+
+### 🐎 [tintColor](https://sarunw.com/posts/tintcolor/)
+
+[@水水](https://www.xuyanlan.com): tintColor 是 UIView 中返回颜色的变量,如果未定义这个颜色,则返回系统的默认色(亮蓝色),就比如你不定义一个按钮的文字颜色,则你会看到默认的蓝色。并且通过将 tintColor 设置到视图控制器的视图上,您可以轻松更改应用程序的外观。更多关于 tintColor 的使用方法具体可以查看文章~
+
+## 文章
+
+### 🌟 🐢 [揭秘 APM iOS SDK 的核心技术](https://mp.weixin.qq.com/s/oChCjP_S1NVsBeh_sui4PQ)
+
+[@J_Knight_](https://github.com/knightsj):本文参考了听云、OneAPM 和 Firebase Performance Monitoring 等 APM SDK,并结合代码分享了几项 APM 核心技术的实现:
+
+1. 页面渲染时间监控
+2. 启动时间监控
+3. 网络监控
+ 1. NSURLSession(NSURLSessionDataTask,NSURLSessionUploadTask,NSURLSessionDownloadTask 的 所有API)
+ 2. 响应时间(发送请求开始到服务端的相应到达客户端的时间间隔)
+
+具体的实现方式可以参考文中的详细代码,对我们自己实现这些监控项目会有帮助。
+
+### 🐕 [看完这一篇,再也不用担心 Git 的“黑魔法”](https://mp.weixin.qq.com/s/wWgapBH1YRxLuf2CuZhKBw)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):标题起的有点魔幻,其实本文算是对 Git 的一些基本命令做了一个粗略的概述,目的是抛砖引玉,让大家对 Git 有一个基本的认识。大家可以作为参考以便使用时查阅。
+
+### 🐕 [Understanding Swift's ObjectIdentifier](https://swiftrocks.com/understanding-swifts-objectidentifier)
+
+[@Damonwong](https://github.com/Damonvvong):ObjectIdentifier 是 Swift 中一个比较冷门的类型。这里的冷门并不是指作用不大,而是日常使用不多。在 Swift 内部,ObjectIdentifier 承载着重要的作用,是运算符 === 实现的根本。也可以作为 metatypes 相互比较的工具。(默认的 metatypes 不遵循 Hashable)。这篇文章主要是稍微简单的介绍了一下 ObjectIdentifier 是什么,ObjectIdentifier 的原理以及如何使用 ObjectIdentifier 来提高我们 App 的性能。
+
+### 🐕 [Configuring the Main Thread Checker](https://bryce.co/main-thread-checker-configuration/)
+
+[@老峰](https://github.com/GesanTung):本文是作者关于 Main Thread Checker 系列的第一篇,详细讲解了 Main Thread Checker 配置项如 MTC_MAX_HIT_COUNT(Main Thread Checker 停止之前,从后台线程调用给定方法的次数)等,另一篇着重讲 Main Thread Checker 实现原理,感兴趣的读者可以进一步研究。
+
+### 🐎 [探索?WhatsApp应用名称中的隐藏符号](https://mp.weixin.qq.com/s/192iBBMtOmss4Yo-_3x_Fw)
+
+[@五子棋](https://github.com/satanwoo):本文是作者在一次偶然研究过程中发现一种特殊的字符,可以确保在复杂的从右至左的过程中保持名称显示的正确性。很简短的一篇文章,但是却很有趣,建议一读。
+
+## 代码
+
+### [Thrio](https://github.com/hellobike/thrio)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):flutter_boost 已经是 Flutter 混合开发体系一个有着举足轻重的框架了,但目前社区里似乎除了 flutter_boost 并没有其他可替代方案,最近哈啰出行团队开源了自家的 Flutter 混合开发框架 [Thrio](https://github.com/hellobike/thrio),更加轻量,入侵性更小,也不失为一个不错的选择。搭配[这篇](https://mp.weixin.qq.com/s/6PMjjF7Jqx1WnJWWRpRRyA)一起食用更佳。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#110-2020.04.20.md b/Reports/2020/#110-2020.04.20.md
new file mode 100644
index 000000000..db7aa9bf1
--- /dev/null
+++ b/Reports/2020/#110-2020.04.20.md
@@ -0,0 +1,168 @@
+# 老司机 iOS 周报 #110 | 2020.04.20
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [GitHub is now free for teams - The GitHub Blog](https://github.blog/2020-04-14-github-is-now-free-for-teams/?from=timeline&isappinstalled=0)
+
+GitHub CEO Nat Friedman 宣布已面向全体 GitHub 用户和团队提供不限制协作人数的私有仓库,并宣称 GitHub 的全部核心功能现已对所有人免费提供。
+
+去年 GitHub 宣布私有仓库免费,同时提供 3 个免费协作人数的名额,如果需要更多的协作人数,则需要付费。但从现在开始,任何团队都可以免费使用不限制协作人数的私有仓库。
+
+## 新手推荐
+
+### 🐢 [为什么使用汇编可以 Hook objc_msgSend(上)- 汇编基础](https://mp.weixin.qq.com/s/ty8Pt56EQ3sKiIfYypZ1fA)
+
+[@J_Knight_](https://www.weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1/):本文讲解了 ARM64 的汇编基础知识,其中包括:
+- iOS 的内存分区及栈区;
+- ARM64 中的寄存器及其含义;
+- 开辟和释放栈空间以及什么是"爆栈";
+- 方法调用时的栈空间表现;
+- 函数栈基于寄存器的回溯思路方案;
+- stp 命令解释;
+
+通过学习本文的这些知识可以为学习 Hook 的汇编方案做准备,而且对于想学习汇编的读者可以作为汇编的入门知识来学习。
+
+## 文章
+
+### 🐢[Contact Tracing](https://nshipster.com/contact-tracing/)
+
+[@享耳先森](https://github.com/iblacksun):为应对 COVID-19,苹果和谷歌宣布将在未来几个月内部署联系人追踪功能,声明中两家公司分享了这一技术的规范草案。在这篇文章中,[Matt](https://nshipster.com/authors/mattt/) 介绍了是苹果公司提出的 ContactTracing 框架,简单来说:ContactTracing 会为设备生成随机代码,利用蓝牙技术进行广播并记录所有近期接触过的设备。当某个用户被确诊了,卫生机构将请求得到 Ta 的随机码并进行登记,设备会间隔的向卫生机构进行比对,万一与名单中的设备接触过则提醒用户尽早需求医治。
+
+### 🐕 [Why iOS Developers Feel Stuck In Their Careers & What To Do](https://medium.com/essential-developer-ios/why-ios-developers-feel-stuck-in-their-careers-what-to-do-d800a50470a2)
+
+[@莲叔](http://aaaron7.github.io/):看这个标题就知道这并不是一个技术文章。iOS 从出现到现在已经超过 10 年时间,已经并不算一门很新的技术了。同样的,iOS 工程师们也逐渐从新手到了老手,当然,也有一部分只是成了工作很多年的新手。但不管是谁,iOS 领域的同行似乎都持续在焦虑之中,从 16 年开始的创业浪潮退烧导致大量创业公司关门带来的移动就业萎缩,到现在的大数据时代,作为前端、客户端工程师所能为业务创造的价值似乎相对有限。作为结果,“iOS 没人要了”似乎一直是笼罩在大家头上的一片乌云。
+
+从这篇文章来看,似乎国外的 iOS 同行也或多或少在面临相同的问题,感觉到了瓶颈。文章有两个核心观点:
+1. 焦虑的本质是急功近利,对于获得回报所投入的时间不够实事求是,我们应该要关注 long term success,即短期会让你比较痛苦的方向,而不要醉心于 short term success,能够给你一些立竿见影的成就感那种。 其实也就是延迟满足。
+2. 目前的就业市场反应, 软技能(Leadership、情商、沟通能力等)和技术能力本身同样重要。
+
+其实观点不是新观点,但能 serious 的拿出来讨论,对于同行们肯定是好处,能够让大家更加重视这个问题。这里提一点,很多软技能:如 leadership,大家可能会觉得我不当 leader 是不是就不用 care,事实上不是,即便不带人工程师也可以通过体现 leadership 去正面的影响自己的合作方、客户和老板和自己的看法和态度,形成正向的循环。文章里面还有更多的相关讨论,有兴趣的同学可以看看。
+
+
+### 🐢 [iOS 优化篇 - 启动优化之 Clang 插桩实现二进制重排](https://juejin.im/post/5e97c3c751882573b86f9d00)
+
+[@looping](https://github.com/looping):本文首先讲述了二进制重排的基本原理,然后尝试 clang 插桩(编译期静态插桩)的方式来解决抖音团队遗留下来的 [基于静态扫描+运行时 trace 的二进制重排方案不能进行 100% 的符号覆盖问题](https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q),并通过实际工程来探索实现了启动时期所需的方法符号全覆盖的二进制重排方案。对通过二进制重排来优化应用启动感兴趣的同学可以好好学习研究一番了。
+
+### [一个易迁移、兼容性高的 Flutter 富文本方案](https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247485159&idx=1&sn=76d1d0d4603a5a2ae0dfaa037cdb22c6&chksm=fd54d2f6ca235be009b651e8ad3efa1ec8fa3fa8dc6331cde86afb395388168e1bebf3455d87&token=761182588&lang=zh_CN#rd)
+
+[@老驴](https://www.weibo.com/6090610445):闲鱼团队不愧是最早实践 Flutter 的,踩了无数的坑,也总结了无数经验。本文就是闲鱼团队根据自己的需求,对 Flutter 中富文本的做了一套易迁移高兼容的方案。富本文也一直是跨平台方案的难点,有富文本方面需求的同学不妨来学习一下。
+
+### [细化 Flutter List 内存回收,解决大 Cell 问题](https://mp.weixin.qq.com/s/Mcfj3lRR8VJACxsjjIiVsA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):何谓大 Cell 问题?在基于 Native List 的渲染方案中,都会遇到大 Cell 问题。这个问题最直接的结果就是:导致内存过高。在 Flutter 里同样有这个问题,本质原因都是因为 List 进行回收的单位是 Cell,而不是 Cell 中的图片。本文详细介绍了手淘团队通过细化 Flutter List 的回收能力,在 Cell 回收的基础上,可以做到以图片为单位进行回收。
+
+### [FluentDarkModeKit 微软的暗黑模式适配框架](https://juejin.im/post/5e82a0d0e51d4546b70d3c9e)
+
+[@红纸](https://github.com/nianran):FluentDarkModeKit 原名 DarkModeKit,本文是该库的源码分析文章。开发者通过方法设置 Light 跟 Dark 对应图片跟颜色。DarkMode 会使用中间类(DMDynamicImageProxy/DMDynamicColorProxy)将其存储,在使用过程中,将所有事件转发到对应模式下颜色或者图片。
+
+> 推荐人:[ztlyyznf001](https://github.com/ztlyyznf001)
+
+### 🐕 [Swift Logging](https://nshipster.com/swift-log/)
+
+[@四娘](https://kemchenj.github.io/):当 App 或者服务上线之后,出了问题最有效的 Debug 手段之一就是查看日志,那么该如何构建一套可靠的日志系统呢?这周 NSHisper 带来的是 swift-log 的介绍,推荐感兴趣的同学阅读。
+
+### 🐕 [用Dart语言来写异步程序](https://mp.weixin.qq.com/s/wkNW6HrQmoHla--xrAPbBQ)
+
+[@老峰](https://github.com/gesantung):在 iOS 开发中用过 Promise 对 async await 异步编程概念并不陌生,本文作者详细介绍了 Dart 中的 Main Queue, Event Queue、Microtask Queue 异步执行顺序及相互关系。
+
+### 🐕 [iOS 浅谈GPU及“App渲染流程”](https://juejin.im/post/5e80b49751882573be11b138)
+
+[@邦Ben](https://weibo.com/linwenbang):该文大致概括了 GPU 的工作原理,以及对比了 iOS,WebView,ReactNative,Flutter 的渲染流程,但是都比较概括,如果感兴趣的可以另外找文章继续深入了解。
+
+### 🐕 [Flutter 究竟是如何渲染的?](https://juejin.im/post/5e931cd0e51d4546f5790806)
+
+[@AidenRao](https://weibo.com/AidenRao):本文从原理层面讲解 Flutter 渲染架构、渲染策略及渲染工作流水线。文章简单易懂,配合作者的另一篇文章 [iOS 浅谈GPU及“App渲染流程”](https://www.jianshu.com/p/8b0572f2c23a) 阅读,能快速的对 Flutter 的渲染原理有一定了解。
+
+## 工具
+
+### 🐕 [iOS线程数量监控工具](https://github.com/maniackk/KKThreadMonitor)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):一个用来监控整个 App 的线程数量和瞬间新建的线程数量的工具,当数量不合理的时候,就打印所有的线程堆栈,便于分析造成的原因。可参考阅读对应的[博客](https://juejin.im/post/5e92a113e51d4547134bdadb),文中详细介绍了开发这个工具的核心逻辑。
+
+### 🐕 [DocTest:将单元测试代码置于注释中](https://github.com/SwiftDocOrg/DocTest)
+
+[@EyreFree](https://github.com/EyreFree):DocTest 提供了一种在文档注释中添加 Swift 代码示例并和预期结果的方法,并且可以自动测试,就像单元测试一样。DocTest 通过与 Swift REPL(Read Eval Print Loop) 交互来实现测试代码的执行,依靠标准输入传递每个代码语句,并通过标准输出或标准错误读取其结果。示例如下:
+
+```swift
+/**
+ Returns the sum of two integers.
+
+ ```swift doctest
+ add(1, 1) // => Int = 2
+ ```
+*/
+func add(_ a: Int, _ b: Int) -> Int { ... }
+```
+
+### 🐎 [swift-outdated](https://github.com/kiliankoe/swift-outdated)
+[@kemchenj](https://github.com/kemchenj):在使用 Cocoapods 的时候我们每隔一段时间就会用 `pod outdated` 来查看哪些依赖可以升级了,但 Swift Package Manager 却没有这个功能,所以社区里就有人自己写了一个:
+
+```shell
+$ swift outdated
+
+----------------------- ----------------- --------- --------
+ Name Requirement Current Latest
+----------------------- ----------------- --------- --------
+ version 2.0.0..<3.0.0 2.0.0 2.0.0
+ files 4.0.0..<4.1.0 ⬆️ 4.0.2 ⬆️ 4.1.1
+ shellout 2.3.0..<3.0.0 2.3.0 2.3.0
+----------------------- ----------------- --------- --------
+```
+
+## 代码
+
+### 🐎 [MPITextKit](https://github.com/meitu/MPITextKit)
+文本控件是我们日常开发使用最多的控件之一。系统的 UILabel 由于是在主线程渲染,在一些情况下不能满足性能要求,所以后续也有 YYText 这样的框架出现。不过由于 YYText 已经有一段时间没有维护了,这里推荐它的一个代替方案,MPITextKit 。MPITextKit 具有下面这些特性:
+
+- 兼容 UILabel API
+- 支持 AutoLayout
+- 基于系统原生 TextKit, 所以能够使用所有系统文本属性,例如:NSAttachmentAttributeName, NSStrikethroughStyleAttributeName, NSUnderlineStyleAttributeName 等等
+- 附件支持 UIImage、UIView、CALayer
+- 支持截断文本设置
+- 支持异步渲染
+- 支持排斥路径
+- 支持文本选中
+- 支持文本布局 debug
+
+### [SwiftyBeaver](https://github.com/SwiftyBeaver/SwiftyBeaver)
+
+[@张嘉夫](https://github.com/josephchang10):便捷、安全、多彩、灵活、轻量的日志输出类,支持 Swift 3, 4 & 5。在开发阶段支持 Xcode 控制台或直接输出 log 文件,发布后可以将日志加密并输出到 SwiftyBeaver 平台。此外,SwiftyBeaver 还提供了一个免费 [Mac App](https://swiftybeaver.com/),用来浏览、搜索和过滤日志。
+
+## 内推
+
+### 杭州 - 阿里巴巴淘系技术基础平台:高级无线工程师(P6)/ 无线专家 (P7)
+
+- iOS架构、底层方向
+- iPad、新特性方向
+- 业务开发和架构方向(iOS/Adnroid)
+
+感兴趣的欢迎加微信了解具体要求。VX: damonwong2。也可以直接发送简历到 coderonevv@gmail.com
+
+### 老司机推荐
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#111-2020.04.27.md b/Reports/2020/#111-2020.04.27.md
new file mode 100644
index 000000000..dddfdd9de
--- /dev/null
+++ b/Reports/2020/#111-2020.04.27.md
@@ -0,0 +1,164 @@
+# 老司机 iOS 周报 #111 | 2020-04-27
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🚧 [Apple 正在网页版的 iWork 里尝试使用 ObjC + WebAssembly 实现部分功能](https://mjtsai.com/blog/2020/04/17/iwork-10-in-webassembly/)
+
+[@looping](https://github.com/looping):苹果开发人员在其 [Twitter](https://twitter.com/lrz/status/1250455566213877760) 上透露,最近上线的网页版 iWork 10.0 里,部分功能是从原生 App 的 C++ / ObjC 代码改为使用 WebAssembly 编译后用到网页上的。虽然目前并没有找到更多资料,但也是可以感觉出苹果在跨平台开发上的一些新的尝试和相关思路。
+
+## 新手推荐
+
+### 🐎 [Flutter 技能篇: debug 看程序启动 | 开发者说·DTalk](https://mp.weixin.qq.com/s/hqCJglkdZi6W6fK1r5tZeg)
+
+[@邦Ben](https://weibo.com/linwenbang):本文适合刚接触 AndroidStudio 的 flutter 新手来看,详细说明了 debug 调试的一些基础功能,以一个简单的报错例子一路演示,自行跟着操作一遍,也可以顺便了解一下渲染流程。如果你使用 vscode 的话,也可以类比一下,都差不多。
+
+flutter 渲染流程参考文章:
+[Flutter渲染机制—UI线程](http://gityuan.com/2019/06/15/flutter_ui_draw/)
+
+## 文章
+
+### 🐎 [如何断点到函数的return](https://mp.weixin.qq.com/s?__biz=MzUxMTkwNDg0OQ==&mid=2247484659&idx=1&sn=775d9f018330360a4aeda18709f5869e&chksm=f96dd9cdce1a50dbf0d755c041d3ecd63c208c4817f69634acafb38e0e1b383cdea12931c943&mpshare=1&scene=1&srcid=&sharer_sharetime=1587606656735&sharer_shareid=ba950e64c9e1fd56aad199c82bacc05d#rd)
+在开发断点调试中,假如有这样一个场景:有一个很长的函数,里面有很多个 return ,而我们想快速断点到执行的是哪一个 return ,这时候怎么做比较好呢?单步执行或 return 处挨个断点?这两个方法虽然可以生效,但是却有些麻烦。本文介绍了更方便的方法,通过 LLDB 去快速定位,对我们日常开发而言,是一个很实用的小技巧。
+
+### 🐎 [Testing push notifications on the iOS simulator](https://www.avanderlee.com/workflow/testing-push-notifications-ios-simulator/)
+
+[@张嘉夫](https://github.com/josephchang10):如果能够在 iOS 模拟器中测试推送通知,会让远程推送功能的开发更加容易,通常需要迭代许多次才能验证实现的功能是否达到预期。在 Xcode 11.4 之前,我们只能用 NWPusher 等第三方应用和真实的设备才能测试 Rich Notifications 等功能,虽然效果也不错,但迭代速度还是不如使用 iOS 模拟器。从 Xcode 11.4 开始,我们只要使用一条新增加的 simctl 命令就能在模拟器中测试推送通知,这篇文章会为你介绍实现的具体细节,包括使用三种不同的方式来触发远程推送通知。
+
+
+### 🐕 [Optionals in Swift Objective-C Interoperability](https://fabiancanas.com/blog/2020/1/9/swift-undefined-behavior.html)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文介绍了在 Objective-C 定义的 nonnull 属性(对象),在做 Swift 桥接后的使用上会产生的问题。作者举了 NSCalendar 和 NSArray 等例子并结合了 ``_unconditionallyBridgeFromObjectiveC`` 的方法的源码进行了讲解。有类似做法的读者可以阅读本文来检验一下自己在使用上是否会出现问题。
+
+### 🐕 [SE-0281: @main: Type-Based Program Entry Points](https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md)
+
+[@四娘](https://kemchenj.github.io):在 ArgumentParser 发布了之后,大家也想要类似于 @UIApplicationMain 这样的注解去声明入口函数,并且 windows 平台支持多种入口函数类型,此时 main.swift 就无法很好地满足使用。
+
+SE-0281 就是为了解决这些问题而出现的,提案的内容也非常简单,可以使用 @main 注解声明入口函数:
+
+```swift
+@main
+struct MyProgram: ApplicationRoot {
+ static func main() { ... }
+}
+```
+
+这个提案已经通过并且完成了实现,预计将会在 Swift 5.3 里发布。
+
+### 🐕 [复杂业务如何保证Flutter的高性能高流畅度?](https://mp.weixin.qq.com/s/iXFa9C68gUHr7PL8NHnZUA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):高性能高流畅度一直是 Flutter 团队宣传的一大亮点, 但是随着业务的复杂度持续上升,那么有一个矛盾的问题出现了:这类页面的性能可能还不如 Native 的表现!这是为什么?是我们的姿势不对?[本文](https://mp.weixin.qq.com/s/iXFa9C68gUHr7PL8NHnZUA)由咸鱼团队,他们也遇到了同样的困惑,并抽丝剥茧,从原理层面带你逐步定位并解决这类问题。
+
+### 🐢 Xcode Build Time Optimization
+
+- [Xcode Build Time Optimization 1](https://www.onswiftwings.com/posts/build-time-optimization-part1)
+- [Xcode Build Time Optimization 2](https://www.onswiftwings.com/posts/build-time-optimization-part2)
+
+[@JimQ](https://github.com/waz0820):本“Xcode 优化构建时间”系列分为上下两篇,上篇讲指标衡量,下篇讲优化措施。
+
+- 指标衡量:
+ - 衡量什么
+ - 干净构建的时间
+ - 增量构建的时间
+ - 衡量构建时间
+ - Xcode 构建报告
+ - Xcode 构建报告摘要
+ - 类型检查警告,为耗时超过指定检查时间的任何函数或表达式生成警告
+ - 编译器诊断选项,编辑器内置了多种诊断选项,可用于分析构建
+ - 测量 Targets 的构建时间,使用 [xcode-build-times](https://github.com/PaulTaykalo/xcode-build-times-rendering) 命令工具来了解要构建或可以并行构建的 Targets
+ - 使用 [XCLogParser](https://github.com/spotify/XCLogParser) 汇总指标,它是 Xcode 生成的 xcactivitylog 的日志解析器,可提供有关项目中每个模块和文件的构建时间、警告、错误和单元测试结果的大量见解,且可以 HTML 的形式可视化输出
+ - 自动化
+- 优化措施:
+ - 构建设置优化
+ - 源代码改进
+ - 查找编译缓慢的代码,可使用工具 [Build Time Analyzer](https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode)
+ - 减少重建工作
+ - 在单独的文件中定义实体
+ - 正确使用访问修饰符
+ - 删除未使用的代码
+ - 预构建依赖,使用预构建的动态框架和库来提高构建效率
+ - 代码 vs Xibs/Storyboards,构建时间的差异并不明显
+ - 项目增强
+ - 改善运行脚本阶段
+ - 采用模块化架构,以并行构建 Targets
+ - 第三方构建系统
+
+### 🐕 [Cross-Pollination](https://nshipster.com/cross-pollination/)
+[@AidenRao](https://weibo.com/AidenRao):有很多好想法,从被批评到整合进苹果产品中,如:
+- Windows 上的应用程序切换 ⌥ ⇥(macOS 上 ⌘ ⇥)
+- Android 的黑暗模式(已在 iOS 13 中添加)
+- Java 和其他语言的泛型(Swift 的核心功能, 后来添加到 Objective-C)
+- JSX 风格的 dsl 声明性 UI(SwiftUI 中的函数构建器)
+
+但在苹果公司这么做之前,为什么我们认为这些好主意是异端的?如果你将竞争技术的存在,视为善恶斗争,自豪的去宣布”Pure Swift”或“100% 无 JavaScript”时,如果不是通过一系列的权衡来评估出的解决方案,那只是一种效忠,这种效忠,并不能让你很好的完成所有的工作。
+
+## 工具
+
+### [Debugging superpowers with FLEX](https://alejandromp.com/blog/debugging-superpowers-with-flex/)
+
+[@享耳先森](https://github.com/iblacksun):FLEX 是 Flipboard 团队出品的 App 调试工具,在开发过程中集成 FLEX 可以监控网络请求、查看 UI 树、查看沙盒文件等,注意:FLEX 不能包含在 Release 环境中,否则审核可能被拒。
+
+### [ResilientDecoding](https://github.com/airbnb/ResilientDecoding)
+
+[@极速男孩](https://github.com/ztlyyznf001):ResilientDecoding 是一个弹性的解码工具,他可以对可选,数组,字典或者符合本宝所提供的 ResilientRawRepresentable 协议的自定义类型类型进行解码。
+
+### [啄木鸟 iOS 开发工具](https://github.com/alibaba/youku-sdk-tool-woodpecker)
+
+[@红纸](https://github.com/nianran):啄木鸟 iOS 开发工具是来自于优酷团队的 APP 内 Debug 工具集合,其包含了常见的 UI 检查、JSON 抓包、CPU 占用、Crash 监听等 17 项功能。能够不依赖电脑联调,直接获取运行时数据快速定位 Bug,提升开发效率。与其他开发工具不同,其多了方法监听跟 po 命令,运行期间能调用任意方法。
+
+### [XcodeColorSense2](https://github.com/onmyway133/XcodeColorSense2)
+
+[@水水](https://www.xuyanlan.com):一个能在 Xcode 中直接预览16进制颜色值效果的 Xcode 插件。无需找其他方式查验颜色是否正确啦!安装和使用方式都很简单,有需要的读者可以试试哦~
+
+### [X-SwiftFormat](https://github.com/ruiaureliano/X-SwiftFormat)
+
+[@EyreFree](https://github.com/EyreFree):Swift 代码格式化工具,可集成到到 Xcode 中使用,满足大部分常见的代码格式化需求,可通过 GUI 配置中心管理格式化规则,当然也可以直接编辑 `.swift-format`。可通过配置快捷键快速启用,很方便,值得一试。
+
+### [Flr:一个出色的Flutter资源管理工具](https://juejin.im/post/5e514a76518825494f7df5f5)
+
+[@老驴](https://www.weibo.com/6090610445):Flr,读作 Flutter-R,是一个由网易严选智造团队研发的,用于管理 Flutter 资源的开发工具。Flr 可以帮助 Flutter 开发者在修改项目资源后,自动为资源添加声明到 pubspec.yaml 以及生成 r.g.dart 文件。Flr 还提供了三种不同的工具来满足各种需求,包括了 Android studio plugin, CLI 和 VSCode extension。有兴趣的同学可以看看,鉴于最近 Flutter 大火,即便不用学习一下源码也是不错的。
+
+> 推荐人:[YorkFish](https://github.com/YK-Unit)
+
+## 代码
+
+### 🐕 [Lasso - iOS architectural pattern and framework](https://github.com/ww-tech/lasso)
+[@zvving](https://github.com/zvving):遵循 redux 思想的 iOS 架构实现。用 Screen 实现最小 redux 模块,通过 Flow 组合配置 Screens。整体实现简洁清晰,代码质量很高,是不错的架构学习资源,应用于实际项目可能过于理想化。
+
+## 内推
+
+### 杭州 - 阿里巴巴淘系技术基础平台:高级无线工程师(P6)/ 无线专家 (P7)
+
+- iOS架构、底层方向
+- iPad、新特性方向
+- 业务开发和架构方向(iOS/Adnroid)
+
+感兴趣的欢迎加微信了解具体要求。VX: damonwong2。也可以直接发送简历到 coderonevv@gmail.com
+
+### 老司机推荐
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#112-2020.05.11.md b/Reports/2020/#112-2020.05.11.md
new file mode 100644
index 000000000..0fedfee2b
--- /dev/null
+++ b/Reports/2020/#112-2020.05.11.md
@@ -0,0 +1,146 @@
+# 老司机 iOS 周报 #112 | 2020-05-11
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [Apple 将于 6 月 22 日起召开虚拟全球开发者大会](https://www.apple.com.cn/newsroom/2020/05/apple-to-host-virtual-worldwide-developers-conference-beginning-june-22/)
+
+受今年新冠疫情的影响,早些时候苹果就已经宣布今年的 WWDC 会以线上形式继续进行,而现在正式官宣明确了时间为 6 月 22 日。这是第 31 届开发者大会,而今年的 WWDC 又是以全新的线上形式举行,相信也会带来全新的体验。
+
+> 忘了 WWDC 19 讲了些啥?欢迎查收周报编辑们参与编辑的专题特辑 - [WWDC 19 内参](http://xiaozhuanlan.com/wwdc19)。
+
+### [Flutter 1.17 发布](https://medium.com/flutter/announcing-flutter-1-17-4182d8af7f8e)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 2020 年的第一个稳定版本发布了🎉🎉🎉,这次的新版本主要以增强稳定和修复历史 Bug 为主。在 iOS 端支带来了 Metal 的支持,使得性能大幅提升,同时对 Flutter 的包体积做了不小的优化,新组件的增加等等。不想看英文的同学可以看[中文版](https://mp.weixin.qq.com/s/5O7I3irCU-xnX-kluTh93Q), 同样推荐一起发布的 [Dart-lang Release Note](https://medium.com/dartlang/announcing-dart-2-8-7750918db0a)。
+
+## 文章
+
+### 🌟 [一次关于 Swift 在 iOS 生态圈里的现状调研](https://mp.weixin.qq.com/s/Ib48PWpKJNALlNoL4lm4-g)
+
+> SketchK 的一篇数据调研笔记,可以帮助大家看清当前国内 iOS 开发形式。
+
+总的来说,国外 Swift 社区活跃度已经比 Objective-C 高了,国内大厂也在推进,具备 Objective-C 与 Swift 混编能力,如果你还没上车,现在买票吧。
+
+### 🌟 🐢 [百度小程序框架性能优化实践](https://mp.weixin.qq.com/s/F3kYYW5_Iu7ny0p3Rzp3Dw)
+
+在移动互联网时代,众多的跨平台、动态化方案,其本质都是在寻找 NA 和 H5 之间的平衡。从渲染层面上,可分为 NA 渲染(RN、Flutter 等),以及 H5 渲染(小程序)。在一个平台型的 APP 里,目前业界最广泛使用的方案就是小程序,因为它可以有效降低生产者和用户的使用成本。小程序作为 H5 渲染流派,灵活性已经被证实,所以性能一直是最受关注的技术点。本文介绍了百度小程序在性能优化方面的实践,从框架启动、小程序包下载、小程序包加载以及渲染等 4 个方面进行了全面的优化。
+
+### 🌟 🐕 [我是如何让微博绿洲的启动速度提升30%的](https://mp.weixin.qq.com/s/SUHaGD1T2Vce4Ag-qgxtgg)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):启动速度是 App 给用户的第一印象,对用户体验来说至关重要。本文主要讲述对微博绿洲 App 的启动优化并阐述优化原理,主要从以下两个方面入手:
+
+- 动态库转静态库, 优化了 dylib loading time
+- 通过二进制重排,让启动需要的方法排列更紧凑,减少了 Page Fault 的次数
+
+### 🐕 [Flutter 势头正盛 | 2020 春季速递](https://mp.weixin.qq.com/s/DS8lAkqtK_Qp37o8ISlthA)
+
+[@邦Ben](https://weibo.com/linwenbang):Flutter 如今已经发布了 1.17 稳定版本,迭代速度还挺不错的。该文大体介绍了一下目前的应用情况,例如:使用最多的国家前五是:印度、中国、美国、欧盟和巴西;在 Play Store 上 Flutter 应用约 5w 个。还介绍了亚洲以外的最大的数字银行 Nubank 选择了 Flutter 的原因(有视频)。有兴趣可以点进去了解了解。
+
+### 🐎 [The big Facebook crash of 2020 and the problem of third-party SDK creep](https://rambo.codes/posts/2020-05-07-the-big-facebook-crash)
+
+[@张嘉夫](https://github.com/josephchang10):Facebook SDK 引发了大规模应用崩溃,原因是 Facebook 服务器向其 SDK 发送了错误的数据,并导致 SDK 中的代码崩溃,进一步导致运行该 SDK 的 app 终止运行。这篇文章提出了第三方 SDK 可能带来的问题,由于它们是在编译时链接的动态库,会让 Facebook、Google 等数据收集、挖掘公司对这些 app 拥有控制能力。Facebook 导致的应用崩溃问题就是该能力的体现,他们彷佛拥有了一个 “kill app 开关”。随后作者提出了两种技术解决方案,第一种方案是在不使用 Facebook SDK 的情况下实现 Facebook 登录,另一种方案则是将这种类型的 SDK 和主 app 的代码通过“沙盒”进行隔离。最后作者还提出了人为解决方案,例如限制市场部门向 app 添加第三方数据分析代码的权力。
+
+### 🐕 [拆!对比详解 Flutter Widget 和 CSS,你关心的布局原理都在这儿了](https://mp.weixin.qq.com/s/ZjrcYN6Asq1RpdgTrCUbiw)
+
+[@looping](https://github.com/looping):本文对比了 Flutter Widget 和 CSS 布局原理的差异,客观地分析了两者的优缺点,并且对它俩的优势能否互补也做了进一步的探讨评估,同时还分享了实践过程中遇到的一些问题和解决方案,对这块技术感兴趣的同学可顺其思路好好研究一番。
+
+### 🐕 [围观 GitHub 重磅推出的四大新功能](https://juejin.im/post/5eb4287a5188255fd54de601)
+
+[@红纸](https://github.com/nianran):近期 Github 推出了四项新功能,以帮助开发社区协同工作:
+
+- Codespaces: GitHub 中完整的开发环境,云编辑器 + 云托管的开发环境
+- GitHub Discussions: 开发者新的对话空间,issue 跟 PR 随时都可能会被关闭,但是 discussion 不会被关闭,可以用来维护 FAQ 或者协作文档
+- Code scanning and secret scanning: 利用 Code scanning 对每一次 **git push** 进行安全漏洞扫描,结果会直接体现在 PR 上。Secret scanning 可以监视私有仓库中的已知 secret 格式,并在发现它们时立即通知开发人员。
+- GitHub Private Instances: 这是一个面向企业客户的全新的、全托管选项,提供增强的安全性、合规性和策略功能。
+
+### 🐕 [History of Auto Layout constraints](https://sarunw.com/posts/history-of-auto-layout-constraints/)
+
+[@EyreFree](https://github.com/EyreFree):本文介绍了 Auto Layout 自 iOS 6 引入后如何发展至今的过程,通过举例方式让读者直观感受到苹果如何一步步解决 Auto Layout 的约束代码冗长性问题。在您阅读完本文之后,您可能会考虑淘汰第三方布局库,并开始直接使用标准 API。
+
+### 🐢 [一道 Block 面试题的深入挖掘](https://juejin.im/post/5eaa2a87e51d454db7436726)
+
+[@JimQ](https://github.com/waz0820):又到了复习 Block 源码(~~找工作~~)的时间,作者从一道 Block 面试题出发,深入源码为大家剖析 Block 存储域,Block 捕获的变量传递类型,__block 修饰过的变量传递类型及其在 Block 中的存储域变化,并结合 __weak 说明符,探讨如何解除循环引用,避免内存泄露。
+
+### 🐕 [Realm.Object 与 NSObject 的转换中 swift 协议妙用的体现](https://mp.weixin.qq.com/s/zR9M9hewQjnVUyShOxJyHA)
+
+[@anotheren](https://github.com/anotheren):Realm 是一个跨平台的移动数据库引擎,在实际业务中,我们一般会把业务模型和 Realm 的存储模型分开。本文介绍了如何设计协议及其默认实现来快速完成 `NSObject` 到 `Realm Object` 的相互转换。对于还处在大量混编阶段的团队,这是一个不错的案例。
+
+### 🐎 [如何快速列出 App 的所有 +load 方法](https://mp.weixin.qq.com/s/6O3G72-Pdx60zrvots5-3g)
+
+[@水水](https://www.xuyanlan.com):一个基于 lldb 的 breakpoint 命令快速列出 App 的所有 +load 方法的实用小技巧,大家可以收藏起来,万一要用到呢~
+
+## 工具
+
+### [opentrace-ios](https://github.com/opentrace-community/opentrace-ios)
+
+[@极速男孩](https://github.com/ztlyyznf001):opentrace-ios 是在 iOS 上实现[ BlueTrace 协议](https://bluetrace.io/)的一个开源 APP。BlueTrace 一开始是新加坡政府开发的一个便于公共卫生机构使用低功耗蓝牙对 COVID-19 的接触者进行追踪的工具,后来这个协议背影用到了全球。同样这个 APP 有安卓版本,具体可以查看[链接](https://github.com/opentrace-community/opentrace-android)。
+
+## 代码
+
+### 🌟 [TrampolineHook](https://github.com/SatanWoo/TrampolineHook)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):TrampolineHook 是一个可以替换和拦截目标函数的框架。它可以用来查看任意函数的耗时和调用链路以及帮助实现日志功能等等。其流程设计是:
+
+- 把需要替换的原方法 IMP A 取出来,保存起来。
+- 给这个原方法塞一个动态分配的可执行地址 B。
+- 当执行这个原方法的时候,会跳转到 可执行地址 B。
+- 这个 B 经过一段简短的运算操作,可以获取到原先保存的 IMP A。
+- 在跳转回 IMP A 之前,统一拦截函数先做些想做的事情,比如检查是不是主线程调用等等。
+
+而且在该流程下,可以保证参数寄存器、返回地址等不会错乱。读者也可以从下面的三篇文章(框架作者原创)来看一下该框架的从思路到实现的演进过程:
+
+- [基于桥的全量方法Hook方案 - 探究苹果主线程检查实现](http://satanwoo.github.io/2017/09/24/mainthreadchecker1)
+- [基于桥的全量方法 Hook 方案(2) - 全新升级](http://satanwoo.github.io/2020/04/22/NewBridgeHook/)
+- [基于桥的全量方法 Hook 方案(3)- TrampolineHook](http://satanwoo.github.io/2020/04/26/TrampolineHookOpenSource)
+
+### 🐕 [SwiftTrace](https://github.com/johnno1962/SwiftTrace)
+
+[@xiaofei86](https://weibo.com/xuyafei86):SwiftTrace 是用来追踪 Swift 和 Objective-C 中 non-final 类的方法调用的框架,它是 [Xtrace](https://github.com/johnno1962/Xtrace) 的 Swift 版本,通过将 Swift 类的函数指针替换为指向唯一汇编语言 “Trampoline” 入口点的指针来完成 Hook。通过 SwiftTrace 除了可以追踪类、实例、协议,还可以为成员函数创建切面,以在执行函数实现之前或之后调用一个闭包,在闭包中你甚至可以修改传入的参数或返回值。
+
+### 🐕 [Localize](https://github.com/freshOS/Localize)
+
+[@老峰](https://github.com/gesantung):Localize 是一个很小的 Swift 实现的运行脚本,来提升本地化工作效率。主要包含:清除空格,按 Key 排序、检测未使用对的 Key、检测缺失的 Key、检测未翻译的 Key、检测冗余的 Key 等功能,使用简单只要在 Build Phases 配置 Run Script 即可,在国际化工作中有类似需求的同学可以研究一下。
+
+## 音视频
+
+### [71: “Polymorphic interfaces” with special guest Dave Abrahams](https://www.swiftbysundell.com/podcast/71/)
+
+[@四娘](https://kemchenj.github.io/):Swift by Sundell 的播客访谈这期请了一个**重量级嘉宾 Dave Abrahams,他之前是 C++ 委员会的一员,参与过 C++ STL 和 Boost 的早期开发**,后来在 Apple 参与了 Swift 的开发,现在在 Google 做 Swift For Tensorflow 的开发。(如果大家记得 WWDC 讲 Swift POP 的那个 Session,讲者就是他)
+
+这次聊了他早期的 C++ 开发经历和 Swift 标准库的一些设计决策,包括王垠在[Swift 语言的设计错误](http://www.yinwang.org/blog-cn/2016/06/06/swift)吐槽过的 Value Semantic Array,这个决定当时在 Swift 团队内部也引起了成员的强烈反对,对这段故事感兴趣的人非常推荐收听这期播客。
+
+## 内推
+
+> 北京 / 成都 - 抖音:应届 / 高级 / 专家
+> iOS、安卓、Server 都有大量 HC,欢迎
+> - 应届学生,一起和大佬学习撸码姿势。
+> - 熟练老手,一起做有挑战的事情。
+> - 行业专家,一起在抖音这个平台,实现更大个人价值。
+>
+> 保证每一封简历,我都跟进进度,给与反馈。有任何想了解的,可以加我微信: jingmu1994,也可以直接发送简历到 raozhizhen@gmail.com
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#113-2020.05.18.md b/Reports/2020/#113-2020.05.18.md
new file mode 100644
index 000000000..16c48dcc7
--- /dev/null
+++ b/Reports/2020/#113-2020.05.18.md
@@ -0,0 +1,120 @@
+# 老司机 iOS 周报 #113 | 2020-05-18
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Flutter web 最新进展: 发掘更多可能!](https://mp.weixin.qq.com/s/NGqF2OTvsV1A2KLiMXE2PQ)
+
+[@老驴](https://www.weibo.com/6090610445):Google 又来更新 Flutter Web 的进展啦。在最新的版本中,Flutter 已经提供了 PWA 的支持,也有越来越多的插件开始提供对 Web 的支持,同时 Flutter 也进一步改进了 Web 的调试与测试。
+
+虽然 Flutter Web 支持还是处于 beta 阶段,但是,Google 正在努力一步一步提升 Flutter 的表现,也希望广大开发者也能加入进来,一起完善 Flutter Web。
+
+## 新手推荐
+
+### [Settings Bundles Management in Xcode](https://swiftsenpai.com/xcode/settings-bundles-management/)
+
+[@极速男孩](https://github.com/ztlyyznf001):Settings Bundles 支持开发者在 iOS 设置中加入一些自定义的内容。本文主要介绍了如何通过 shell 脚本来在设置中根据不同的 Configuration 或者不同的 Targets 来加入不同的内容。
+
+
+## 文章
+
+### 🌟 🐕 [TrampolineHook 学习笔记](https://blog.dianqk.org/2020/05/11/trampolinehook-study-notes/)
+
+[@五子棋](https://github.com/satanwoo):虽然这个库是我写的,但是没想到竟然有大神这么详细的剖析了里面的每一方面。太赞了,必须推荐。
+
+### 🌟 🐕 [超详解析 Flutter 渲染引擎|业务想创新,不了解底层原理怎么行?](https://mp.weixin.qq.com/s/xxdgoEBIC3Bg4OCOZcm-aQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):小编强烈推荐在用 Flutter 的小伙伴仔细阅读这篇文章,本文由手淘技术产出,从渲染引擎层面详细分析了一个控件是如何展示到屏幕上的,细致入微。文末简要地提了一下,手淘在 Flutter 上的一些探索,也是社区内常提到的把 Flutter 引擎作为小程序的渲染引擎👍。
+
+### 🐕 [What’s new in Swift 5.3?](https://www.hackingwithswift.com/articles/218/whats-new-in-swift-5-3)
+
+[@享耳先森](https://github.com/iblacksun):Swift 5.3 即将发布,本文给你介绍 Swift 5.3 的新特性,最显著的两个就是 多尾随闭包(`Multiple trailing closures`) 与 多重异常捕获(`Multi-pattern catch clauses`),其余特性请阅读原文。
+
+- 5.3 以前尾随闭包只能作于最后一个 `closure` 类型参数,对于有多个 `closures` 参数的情况,也不建议使用尾随闭包,Swift 5.3 开始将支持多 `closures` 参数使用尾随闭包模式。
+- 以前一条 catch 语句中只能匹配一种 error,5.3 开始将支持多个 error
+
+ ```
+ do {
+ let result = try checkReactorOperational()
+ print("Result: \(result)")
+ } catch TemperatureError.tooHot, TemperatureError.tooCold {
+ print("Shut down the reactor!")
+ } catch {
+ print("An unknown error occurred.")
+ }
+ ```
+
+### 🐕 [Flutter 在 PLUS 业务中的探索和实践](https://mp.weixin.qq.com/s/eJxmeAJ0ljmbPbgNVkGttQ)
+
+[@looping](https://github.com/looping):本文介绍了京东 PLUS 会员业务团队入坑 Flutter 的原因,以及当时需要探索和解决的问题调研结论,并且详尽地描述了 Flutter 在 PLUS 业务中的实践过程,这对正在研究 Flutter 的同学是一份很好的学习交流资料。
+
+
+### 🐕 [WKWebView 默认缓存策略与 HTTP 缓存协议](https://juejin.im/post/5df75e3a6fb9a016266459da)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):WKWebView 默认缓存策略完全遵循 HTTP 缓存协议,苹果并没有做额外的事情。WKWebView 默认缓存策略流程总结如下:
+
+ * 1. 是否有缓存,没有则直接发起请求,有则进行下一步
+ * 2. 是否每次都得进行资源更新校验(响应头是否有 Cache-Control:no-cache 或 Pragma:no-cache 字段),不需要则进入 3,需要则进入 4)
+ * 3. 缓存是否过期(响应头,Cache-Control:max-age、Expires、Last-Modified 启发式缓存),没过期则使用缓存,不发起请求,过期了则进入 4
+ * 4. 客户端发起资源更新校验请求(请求头,If-Modified-Since: Last-Modified 值、If-None-Match: ETag 值),如果资源没有更新,服务器返回 304,客户端使用缓存;如果资源有更新,服务器返回 200和资源
+
+
+> 推荐阅读: [可能是最被误用的 HTTP 响应头之一 Cache-Control: must-revalidate](https://zhuanlan.zhihu.com/p/60357719)
+
+### 🐕 [The different categories of Swift protocols](https://www.swiftbysundell.com/articles/different-categories-of-swift-protocols/)
+
+[@EyreFree](https://github.com/EyreFree):本文作者提供了一种新的 Protocol 分类设计思路,即根据它们所属的类别来区分它们。概括地说,作者将协议分为四个类别:
+
+- 动作使能器:使我们能够对每种符合类型执行统一的操作。它们通常具有以 `able` 结尾的名称,例如 `Equatable`;
+- 需求定义:使我们可以将需求形式化为某种对象,例如 `Sequence`、`Numeric` 和 `ColorProvider`;
+- 类型转换:协议用于让各种类型声明它们可以转换为另一种类型,或者可以通过原始值或文字进行表达(例如 `CustomStringConvertible` 或 `ExpressibleByStringLiteral`);
+- 抽象接口:充当可以多种类型实现的统一 API,从而使我们可以按需快速替换实现代码而无需改动调用方代码,封装第三方代码或在测试中模拟某些对象。
+
+你是否认可这种分类方式呢?或许看完本文你能够有自己的看法。
+
+### 🐕 ["零"学习成本:使用 Web 标准开发动态化 Flutter 应用](https://mp.weixin.qq.com/s/57CprMfvTtIeq6AdgcDdcw)
+
+[@邦Ben](https:weibo.com/linwenbang):该文介绍了阿里的一个 Kraken 项目,该项目核心是用 Web 标准进行开发,Flutter 进行解析渲染。简而言之就是,HTML -> Flutter Render,基本有也可以理解为小程序的模式,最大的特点就是使用 W3C 标准规范,Web 童鞋入坑成本低。同时也介绍了其配套工具和一些性能特性,但是还没开源,可以作为一个思路进行参考。
+
+
+## 工具
+
+### [How to add a shield on the App Icon of beta builds](https://diamantidis.github.io/2020/05/10/add-shield-on-the-app-icon-of-beta-builds)
+
+[@红纸](https://github.com/nianran):如果你还在烦恼装了太多测试包,却不能直观看出测试包版本/构建信息的话。不妨尝试下本文中的这个工具 [「Badge」](https://rubygems.org/gems/badge/versions/0.8.5),其允许你在 App 的 Icon 中添加你指定的版本信息。集成也非常方便,可以通过 Xcode 中的 Run Script Phase 或者通过 Fastlane 中对应的 badge 插件进行集成。
+
+## 内推
+
+> 上海 - 字节跳动:TikTok iOS/Android/前端/后端工程师
+>
+> TikTok是目前全球最火爆,国内出海最成功的短视频App,全球累计下载接近20亿次。
+>
+> 目前团队规模落后于需求增长,非常缺人,经验不限,应届生老司机专家都欢迎。
+>
+> 简历发送至 martin.lv@bytedance.com
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#114-2020.05.25.md b/Reports/2020/#114-2020.05.25.md
new file mode 100644
index 000000000..a5b90c92d
--- /dev/null
+++ b/Reports/2020/#114-2020.05.25.md
@@ -0,0 +1,126 @@
+# 老司机 iOS 周报 #114 | 2020-05-25
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## 新手推荐
+
+### 🐕 [CS193p Spring 2020 (Developing Applications for iOS using SwiftUI) 开始更新](https://cs193p.sites.stanford.edu/)
+
+[@极速男孩](https://github.com/ztlyyznf001):斯坦福大学的 CS193p 课程是针对 iOS 开发所推出的一个基础教程。在2020年春季的更新中,加入了在去年 WWDC 中推出的 SwiftUI 的内容。更多的内容可以看[这里](https://cs193p.sites.stanford.edu/about-cs193p) 。
+
+## 文章
+
+### 🐕 [一波 N 折的携程酒店 Swift-Objc 混编实践](https://mp.weixin.qq.com/s/N6ToEkN9c-2_rIvkv4o9hA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):在 WWDC2019 大会上,随着 Swift5.0 发布之后,沉寂多年的 Swift 终于走上了快速发展的道路。iOS 开发语言的重心已经在悄悄倒向 Swift,本文即在讲述携程酒店在引入 Swift 混编带来的各种问题及解决方案,可供开发者们借鉴参考。
+
+### 🐕 [The Future of Swift on the Server](https://www.timc.dev/posts/future-of-server-side-swift/)
+
+[@莲叔](http://aaaron7.github.io/):自从 IBM 在 Swift 上打了退堂鼓后,Server-side Swift 社区受到了不小的打击。大家纷纷猜测会不会这个命题已经不再成立。这篇文章带来了不少的好消息,甚至认为 2020 将会是 Server-side Swift 的利好年,其中最主要就是 Swift6 的 feature 中绝大多数都直接或间接的和 Server-side 有关或者利好。还有 Swift 的核心团队迎来了 Tom Doron 和 Saleem Abdulrasool, 一个是 SwiftNIO 的负责人,一个在尝试把 Swift 移植到 Windows,这些迹象都说明 Swift 的核心团队对于让 Swift 跳出 Apple 生态的决心。其他还有不少令人振奋人心的消息,具体建议大家直接看文章。
+
+### 🐕 [Building a Design System for iOS](https://www.ramshandilya.com/blog/design-system-intro/)
+
+[@张嘉夫](https://github.com/josephchang10):为了便于设计师和工程师之间的沟通协作,作者为 iOS App 构建了一个设计系统,并在这个系列文章中介绍了他的经验,包括排版、颜色和动画等部分。设计系统能够定义产品的设计语言,包含可重用的组件,有明确的设计标准,可以将它们组合在一起来构建任意一款 app。采用设计系统的优势是可以提高设计的一致性、提高团队工作效率、方便辅助功能的开发,此外组件的可重用性还扩大了设计的应用范围。
+
+### 🐕 [更方便、更强大: Flutter package 生态系统更新](https://mp.weixin.qq.com/s/y_lOfxlYlG6nM-4xduQ4Aw)
+
+[@邦Ben](https://weibo.com/linwenbang/):Flutter 这类新技术出现,最大的缺陷之一就是配套生态弱。近期,Google 为了提升 Flutter package 生态系统的可信度,增加了发布者认证和评分。根据各项指标评选出 270 个项目赋予 Favorite 徽章。这意味着,有 Favorite 徽章的三方库,你可以相对放心的使用。同时,Flutter 团队和英国的 Invertase 合作进行推进 Google Flutter 插件的优化(例如 firebase)。综上,这意味着 Flutter 生态会进一步得到改善,随着参与人数的日益增多,将会越来越好。
+
+### 🐕 [Implementing design system components on iOS](https://medium.com/chili-labs/implementing-design-system-components-on-ios-6afe873ea586)
+
+[@享耳先森](https://github.com/iblacksun):Native View 如何进行组件化抽象并复用一直是个难题,作者通过一个实例介绍他的思路,并提供了 demo 项目。作者将可能复用的 View 抽取成 components,并提供对应的 ViewModel,同时,ViewModel 可以组合实现不同的 Protocol 完成诸如选中等事件分发。
+
+### 🐕 [Fish-Lottie:纯 Dart 如何实现一个高性能动画框架?](https://mp.weixin.qq.com/s/4h6szVmDyiC5RjbLRC9ZZw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Lottie 是一个由 Airbnb 开源的横跨 Android,iOS,Web 等多端的一个动画方案,它以 JSON 的方式解决了开发者对复杂动画实现的开发成本问题。最近闲鱼开发团队在 Flutter 端实现了 Lottie - fish-lottie 。本文详细地介绍了 Lottie 架构以及 fish-lottie 实现思路👍。
+
+### 🐎 [Verge — Start “store-pattern” state management before beginning Flux in UIKit iOS app development — preparation starting SwiftUI](https://medium.com/eureka-engineering/verge-start-store-pattern-state-management-before-beginning-flux-in-uikit-ios-app-development-6c74d4413829)
+[@zvving](https://github.com/zvving):本文是 Verge 上手指南:从一个数据驱动页面的小型业务场景出发,介绍如何引入 Verge 提供良好的业务代码隔离。
+
+> [Verge](https://github.com/muukii/Verge) 是 Flux 架构的又一 iOS 实现,设计与 Vuex 基本一致,View 同时兼容 UIKit 及 SwiftUI,事件绑定支持 RxSwift 及 Combine。
+更多内容请参考 [Verge-Docs](https://muukii-app.gitbook.io/verge/)
+
+### 🐢 [震惊!生产力提效 300% 的秘诀全公开](https://juejin.im/post/5ec0d6b4f265da7b950569a9)
+
+[@JimQ](https://github.com/waz0820):工作要高效,方法很重要,这是一篇写给技术人的个人工作学习管理的方法论。如果你对精力管理、多层次的工作/学习计划、番茄工作法、定额工作法、批处理、多任务并行、图层工作法这些概念一知半解,快到碗里来吧。值得一提的是,本文不只讲方法其然,还讲其所以然,逻辑体例清晰,排版重点突出,配上作者本人真实场景的思维导图,是一篇深度好文,不是标题党。
+
+### 🐢 [iOS Rendering 渲染全解析(长文干货)](https://juejin.im/post/5ec35cc55188256d92438174)
+
+离屏渲染使用不当常常会导致屏幕卡顿,造成不好的用户体验,所以通常我们会尽量避免使用离屏渲染,例如减少圆角剪裁。但除了减少圆角剪裁,还有什么方式可以避免离屏渲染?以及离屏渲染使用过多为什么会造成卡顿?本文从计算机的渲染原理开始介绍,分析了屏幕成像和卡顿,然后讲到 iOS 中的渲染框架,最后引入离屏渲染这一问题,非常系统地让我们 iOS 的渲染原理有个比较深入的认知。
+
+### 🐕 [大话 Socket](https://mp.weixin.qq.com/s/sVbWrWaq5P0kHxNhMVqzWA)
+
+[@水水](https://www.xuyanlan.com):要了解Socket首先要了解 TCP,而 Socket 是抽象出来的使用 TCP/UDP 的概念模型,屏蔽掉了晦涩的底层协议的实现,是一个接口。文本以图文趣味的方式带读者了解 TCP 的三次握手和四次挥手。相信你读完会让你对 TCP 有更好的理解。
+
+## 工具
+
+### [Introducing Piranha: An Open Source Tool to Automatically Delete Stale Code](https://eng.uber.com/piranha/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):最近,Uber 开源了可自动删除无用代码的工具 Piranha。Uber 使用特性标记(Feature Flags)来做 A/B Test 和灰度发布,当这些功能完成测试或发布后就产生大量的无用代码,从而为项目带来技术债务。Piranha 通过扫描源代码来删除无用功能标志相关的代码,从而使代码库更干净,更安全,性能更高且更易于维护。Uber 已经在 Android 和 iOS 中使用 Piranha,并已使用它删除了大约两千个过时的功能标记及相关代码。感兴趣的读者可以阅读原文了解 Piranha 的实现,遇到的困难,以及在 Uber 自动化流程中的应用。
+
+## 代码
+
+### [Nuke 9](https://kean.github.io/post/nuke-9)
+
+[@老峰](https://github.com/gesantung):Nuke 9 是一个 Swift 版的图片加载库,Github 拥有近 5k Star,它有详细的文档,简洁的 API,支持更多的图片格式,使用全新的图片处理图形解码协议,支持图片预加载,更重要的是有高效的性能,比较遗憾的是目前仅支持 iOS 11+。
+
+### [SwiftCoroutine](https://github.com/belozierov/SwiftCoroutine)
+
+[@四娘](https://kemchenj.github.io):一个 Swift 协程的第三方库实现,提供了 Future 和 Channel 等功能:
+
+```swift
+// 在主线程执行协程
+DispatchQueue.main.startCoroutine {
+
+ // 返回 CoFuture<(data: Data, response: URLResponse)>
+ let dataFuture = URLSession.shared.dataTaskFuture(for: imageURL)
+
+ // 挂起协程 await CoFuture 的结果,并且不会阻塞线程
+ let data: Data = try dataFuture.await().data
+
+ // 把 data 转成 UIImage
+ guard let image = UIImage(data: data) else { return }
+
+ // 在 global queue 执行耗时任务,在不阻塞线程的同时 await 结果
+ let thumbnail: UIImage = try DispatchQueue.global().await { image.makeThumbnail() }
+
+ // 在主线程将 image 设置给 UIImageView
+ self.imageView.image = thumbnail
+}
+```
+
+## 音视频
+
+### [macOS 10.15: Slow by Design](https://sigpipe.macromates.com/2020/macos-catalina-slow-by-design/)
+
+[@老驴](https://www.weibo.com/6090610445):在379 期的 ATP 中讨论了他们在升级了 macOS 10.15 之后明显感觉系统变慢。本文的作者就根据这个去排查问题的根源,找出解决方案,并记录下其中的每一步。
+
+不知道有多少人感知到了这个问题的存在,如果你对系统底层感兴趣的话,不妨来看看这些作者们是怎么一步一步发现问题根源并解决问题的。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#115-2020.06.01.md b/Reports/2020/#115-2020.06.01.md
new file mode 100644
index 000000000..3ae0db06a
--- /dev/null
+++ b/Reports/2020/#115-2020.06.01.md
@@ -0,0 +1,75 @@
+# 老司机 iOS 周报 #115 | 2020-06-01
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [LLBuild2 开发工作正式启动](https://forums.swift.org/t/llbuild2/36896)
+
+[@四娘](https://kemchenj.github.io/):LLBuild2 开发工作正式启动:
+
+- 整理 Build System,SPM,swift-driver 和 swift 编译器的职责和交互,优化整体编译架构。
+- 接入 Bazel 的 Remote Execution API,改造 SPM,探索分布式编译和缓存。
+
+## 新手推荐
+
+### 🐕 [An In-Depth Look at Blur Effect Materials on iOS](https://pspdfkit.com/blog/2020/blur-effect-materials-on-ios/)
+
+[@老峰](https://github.com/gesantung):本文以实例的形式深入详细的介绍了如何在 iOS 中实现 Blur Effect (毛玻璃模糊)效果,包括 Blur Effect Styles 各种样式在深色模式下的不同呈现,以及 Vibrancy Effect Styles 文本内容在模糊效果下的不同样式,具体参见[原文](https://pspdfkit.com/blog/2020/blur-effect-materials-on-ios/)。
+
+## 文章
+
+### 🐢 [网易支付-高性能NEJFlutter小程序动态化架构实践](https://www.jianshu.com/p/be48a3dc80fa)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):NEJFlutter 是由网易支付出品并还在持续打磨的在 Flutter 小程序动态化方向上尝试的一套技术解决方案。自 Flutter 问世以来, 以毫秒级的热重载、丰富的可定制 Widget、难以置信的UI渲染能力、原生级的UI体验等特性迅速风靡。但尽管其渲染性能优异、跨端一致性强,但依然没有解决传统移动端开发中的痛点-无法动态化(热更新)。网易支付团队的动态化方案,在参考 MXFlutter 后,保留 了Flutter 作为视图层优秀的特性(高性能/高一致性/高能效)加上动态脚本语言作为逻辑层,来实现整套方案的动态化。目前该方案还在灰度阶段,广大开发者可以共同完善这个项目并加以使用。
+
+### 🐕 [一个十年 iPhone 使用者的「重新体验 iPhone」之旅](https://imtx.me/blog/the-journey-of-reexperiencing-the-iphone/)
+
+[@张嘉夫](https://github.com/josephchang10):作者图拉鼎在这篇文章中总结了十年来围绕着 iPhone 体验的变化,从单独使用 iPhone 到现在使用 iPhone + Apple Watch + AirPods Pro 的复合全方面体验,具体包括无缝的设备迁移体验、无法抗拒的大屏体验、通勤路上的沉浸世界、双卡双待带来的双倍保险、Hand-free 的居家小能手 Siri、移动设备运动史、从「通讯设备」到「健康助理」、让随手拍变成专业拍、解锁 MacBook 等方面。作者认为这些体验构成了一个个生动的生活场景,让生活变得更加方便,并且相信未来还会变得更加的美好和愉快。
+
+### 🐕 [[iOS]iOS11.0~13.5全系列设备越狱教程](https://mp.weixin.qq.com/s/0JuTk_iQCeYKjV3kIZMhHg)
+
+[@红纸](https://github.com/nianran):unc0ver 越狱团队在近期发布了最新的越狱工具(版本号:5.x),支持 iOS 11.0~13.5 版本的所有设备(包括最新的 iPhone 11、iPhone SE2 等),本文讲解了具体操作方法。
+近期[飘云阁](https://www.chinapyg.com/)出了《iOS应用逆向与安全之道》一书也值得大家一读,书中基于实战讲解当下的 iOS 逆向技术。
+
+### 🐕 [苹果强制要求更换启动方式的解决方案](https://mp.weixin.qq.com/s/mdReGqt5E7T8VWC2q7ImKw)
+
+[@享耳先森](https://github.com/iblacksun):[苹果要求在 6 月 30 日以后,所有的 App 必须使用 `storyboard` 作为 App 的启动图](https://developer.apple.com/news/?id=03262020b),本文介绍了 `LaunchImage` 切换到 `LaunchScreen.storyboard` 的一些常见问题,特别是黑屏问题,建议阅读。
+
+### 🐕 [A Deep Dive into the Flutter Animations package](https://medium.com/flutter-nyc/a-deep-dive-into-the-flutter-animations-package-3e26b10c43c1)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):今年二月份 Google 官方宣布 [animations](https://pub.dev/packages/animations) 作为 Flutter 中 [Material Design](https://material.io/design/motion/the-motion-system.html) 的动效系统。 [animations](https://pub.dev/packages/animations) 能够实现多种酷炫的动效,视图转换、共享轴动效、淡入淡出等,本文结合 [animations package](https://pub.dev/packages/animations) 中的几个主流动效,详细讲解 [animations](https://pub.dev/packages/animations) 的用法, 强烈推荐👍
+
+## 代码
+
+### 🐎 [LayoutKit](https://github.com/linkedin/LayoutKit)
+[@zvving](https://github.com/zvving):LinkedIn 出品的布局库,在类似 FlexBox 布局语法的基础上提供接近手写 frame 的性能,支持异步线程计算布局和结果缓存。
+
+需要留意的是:LayoutKit 在布局写法及[动画处理](http://layoutkit.org/animations/)上与 Autolayout 有较大区别。推荐对布局性能要求较高的朋友选用。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#116-2020.06.08.md b/Reports/2020/#116-2020.06.08.md
new file mode 100644
index 000000000..8c3e27b73
--- /dev/null
+++ b/Reports/2020/#116-2020.06.08.md
@@ -0,0 +1,88 @@
+# 老司机 iOS 周报 #116 | 2020-06-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🐕 [3 steps to speed up storyboard](https://fluffy.es/3-steps-to-speed-up-storyboard/)
+
+[@极速男孩](https://github.com/ztlyyznf001):storyboard 作为 iOS 的一种对 viewcontroller 的控制的方法被广泛使用,本文简单介绍了如何快速的使用 storyboard 来对你的 viewcontroller 进行管理。
+
+## 文章
+
+### 🌟 🐕 [TrampolineHook - 解决栈污染问题支持变参 Hook](http://satanwoo.github.io/2020/05/18/TrampolineHookStack/?from=singlemessage&isappinstalled=0)
+
+本文是 `TrampolineHook` 框架系列文章最新的一篇。`TrampolineHook` 是一个中心重定向框架,可以通过一个函数替换/拦截所有你想要的函数的框架。如果对这个库不了解可以先看前面的几篇文章:
+
+- [基于桥的全量方法Hook方案 - 探究苹果主线程检查实现](http://satanwoo.github.io/2017/09/24/mainthreadchecker1/)
+- [基于桥的全量方法 Hook 方案(2) - 全新升级](http://satanwoo.github.io/2020/04/22/NewBridgeHook/)
+- [基于桥的全量方法 Hook 方案(3)- TrampolineHook](http://satanwoo.github.io/2020/04/26/TrampolineHookOpenSource/)
+
+本文主要讲该库在之前实现中的一个错误,关于上下文污染的问题,本文从汇编角度比较深入的讲解了这个问题,但并不需要读者很了解汇编的内容,有兴趣的同学可以看一下。
+
+### 🌟 🐕 [移动前端开发和 Web 前端开发的区别是什么?](https://mp.weixin.qq.com/s/kPn-2y3Q_CMjwCB1c1yVTA)
+
+[@张嘉夫](https://github.com/josephchang10):前端这门技术,从诞生发展至今不过寥寥十余年。如果说前十年是 PC 前端的时代,那后十年一定是属于移动前端的时代。特别是随着网络制式的发展,移动设备在全球范围内得到了空前的普及,在前端领域,Hybird Web、React Native、Weex、Flutter 等等一系列新的移动前端技术也如同雨后春笋般冒出来。在这篇来自阿里巴巴新零售淘系技术部的文章中,作者分享了其对于「移动前端开发和 Web 前端开发」的理解,具体包括前端发展史回顾、移动前端混合技术的前世今生以及对未来回归本源的探讨。
+
+
+### 🌟 🐕 [How the SwiftUI DSL Works](https://harshil.net/blog/swiftui-dsl-function-builders)
+
+[@莲叔](http://aaaron7.github.io/):SwiftUI 算是 Swift 近几个大版本中最令人兴奋的 feature,虽然不少同学在试水后都得出了目前还不成熟的判断,但这并不影响其定位了未来的 UI 开发方式。本篇文章作者尝试聊了聊 SwiftUI 实现中的一些关键技术,主要描述了 function builder 机制,文章比较浅显易懂,内容不多,比较适合新手学习。
+
+### 🐎 🚧 [A Type-Safe FileWrapper](https://heberti.com/posts/filewrapper/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):在 Document Based Apps 中,NSDocument 作为最重要的基类,提供了自动保存、线程安全、iCloud 冲突解决等功能。NSDocument 可以持有 Data 和 FileWrapper 两种类型的文件数据。FileWrapper 为自定义文件类型的容器,本文通过示例简单讲述了 FileWrapper 的应用,有兴趣可以阅读原文了解,也可以通过苹果 [官方文档](https://developer.apple.com/document-based-apps/) 了解更多 Document Based Apps 的开发指南。
+
+### 🐎 [Dealing with memory limits in iOS app extensions](https://blog.kulman.sk/dealing-with-memory-limits-in-app-extensions/)
+
+[@老驴](https://www.weibo.com/6090610445):Notification extension 和 share extension 算是 iOS 中前两年比较火爆的话题了,这两年似乎热点过去,大家关注的也不多,苹果也没有在这块继续着力,framework 更新的也很少。
+
+这位作者就在开发中遇到了内存上限问题,Notification extension 最高只能支持 24 MB 的内存占用,而 Share extension 最多支持 120 MB 的内存占用。而开发中最有可能遇到内存上限问题的就是图片或者是视频了,作者使用了一些有意思的办法来绕过这样的限制,有兴趣的不妨来看看。
+
+### 🐕 [How We Use Feature Flagging on iOS](https://mobile.blog/2020/05/29/how-we-use-feature-flagging-on-ios/)
+
+[@老峰](https://github.com/gesantung):Feature Flagging (又名 Feature Toggle、Flip 等)是一种允许控制线上功能开启或者关闭的方式,通常会采取配置文件的方式来控制。本文作者以 WordPress 为例讲解了通过 配置 Build Configurations 等在 iOS 中实现 Feature Flags,WordPress-iOS 是个开源项目,感兴趣的读者可以点[这里](https://github.com/wordpress-mobile/WordPress-iOS)阅读源码。
+
+### 🐎 [Decode and Flatten JSON with Dynamic Keys Using Decodable](https://swiftsenpai.com/swift/decode-dynamic-keys-json/)
+
+[@四娘](https://kemchenj.github.io/):有时候后端下发的 JSON 文件会采取动态 key 的形式,那在 Codable 里该如何实现呢?这篇文章就介绍了如何动态 key 的结构该如何解析以及封装的方式。
+
+## 代码
+
+### 🌟 [InterposeKit](https://github.com/steipete/InterposeKit)
+
+[@EyreFree](https://github.com/EyreFree):InterposeKit 是一个可以帮助我们快速、优雅地在 Swift 中进行 Swizzle 的库,它的作者是 Peter Steinberger,你可能对这个名字没什么印象,但你可能听过他的另一个开源库 —— Aspects。InterposeKit 是用纯 Swift 5.2 编写的,有完备的文档并经过了全面的测试。它可以用于 Objective-C 实例方法和被 `@objc dynamic` 修饰的 Swift 函数。推荐在 Swift 中有 Swizzle 需求的同学一试,以下是一些关键点:
+
+- Interpose 直接修改方法的实现,这比基于 `selector` 的方式要好;
+- 可以通过调用 `revert()` 轻松实现钩子的撤销;
+- 纯 Swift 实现,而不是使用低效的 `NSInvocation`;
+- 没有类型检查,虽然带来了一些 crash 风险但也更加灵活;
+- 必须手动指定结果类型两次,这是一种为了避免使用 `NSInvocation` 或汇编的折衷;
+- 当类在运行时被加载时,延迟插入。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#117-2020.06.15.md b/Reports/2020/#117-2020.06.15.md
new file mode 100644
index 000000000..da05491ca
--- /dev/null
+++ b/Reports/2020/#117-2020.06.15.md
@@ -0,0 +1,89 @@
+# 老司机 iOS 周报 #117 | 2020-06-15
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [苹果公布史上最大规模的 WWDC20 阵容](https://www.apple.com/newsroom/2020/06/apple-reveals-lineup-for-its-biggest-ever-worldwide-developers-conference/)
+
+[@享耳先森](https://github.com/iblacksun):WWDC 已经进入第 31 个年头,WWDC20 将于 6 月 22 至 26 日以前所未有的虚拟方式将全球超过 2300 万的苹果开发者社区聚集在一起,将成为迄今为止规模最大的 WWDC。
+
+Keynote 主题演讲在北京时间 23 日凌晨 1 点开始,对于中国的观众来说,主题演讲也将在腾讯、爱奇艺、Bilibili 和优酷上进行直播。同时,超过 1000 名苹果工程师将在 Developer Forums 回答问题并参与技术讨论,开发者可以发布自己的问题,直接向苹果专家学习。
+
+## 文章
+
+### 🌟 🐕 [iOS 架构谈:剖析 Uber 的 RIB 架构](https://mp.weixin.qq.com/s/8mkPa-5IdddJ10I_sAMK-A)
+
+[@老驴](https://www.weibo.com/6090610445):这是一篇由 Uber 工程师撰写,知识小集团队翻译的对 Uber RIB 构架的解析文章。RIB 从很多年前 Uber 切换 Swift 开始使用,到今天已经存在了很长时间了,应该可以说算是一种经得住考验的构架。如果很多年前你对 RIB 构架的理解没有很深入的话,也许你今天再回头来看,就会有更深的理解。
+
+还记得2,3年前,构架风潮兴起的时候,几乎所有的公司的,所有的团队都在搞自己的构架。然而,经历了时间的考验,并不是所有的构架最后都存活了下来。谈点个人看法:所有的构架都应该以自己的业务需求为出发,为了构架而构架,那就是耍流氓了。这个角度上去说,也许很多年以后,再回头去看,说不定觉得 MVC 才是更好的选择呢?
+
+### 🌟 🐎 [Flutter 卡顿问题的监控与思考](https://mp.weixin.qq.com/s/-BTEkHYeh_tHqJY2UNI_xw)
+
+[@极速男孩](https://github.com/ztlyyznf001) : 卡顿问题一直是开发中比较关注值得关注的问题。本文首先介绍了如何去判断卡顿以及卡顿的原理,然后从修改 Dart SDK, AOT 模式下采集堆栈(暂停线程),AOT 模式下采集堆栈(通过信号)这三种不同的解决方案,并比较了三中不同方案各自的优劣势。
+
+### 🐢 [如何在模块化/组件化项目中实现 ObjC-Swift 混编?](https://juejin.im/post/5edd8ec16fb9a0480067d37d)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):在单一 target 的项目中,ObjC 和 Swift 可以直接通过桥接文件 bridging header 实现混编,但如果是在多个 target 或 library 或 framework 中,是不能使用 bridging header 的,这时候如何实现混编呢?文中详细记录了在混编过程中的踩坑历程,可供大家参考借鉴。
+
+推荐阅读:[一波 N 折的携程酒店 Swift-Objc 混编实践](https://mp.weixin.qq.com/s/N6ToEkN9c-2_rIvkv4o9hA)
+
+### 🐕 [iOS 中的网络调试](https://juejin.im/post/5ee07f45f265da76ce5795aa)
+
+[@looping](https://github.com/looping):本篇文章不仅详细地介绍了我们所熟悉的一些网络调试工具和原理,而且还经过实践给出了一个不会影响原有网络请求,又能拿到所有网络请求回调的方法。在阅读过程中我们会进一步了解到作者能通过学习借鉴开源框架、官方示例等的设计原理,为解决问题带来新思路,不断地优化演进成最终方案,非常值得肯定和学习。
+
+### 🐢 [在block内如何修改block外部变量?](https://mp.weixin.qq.com/s/VFzTBCiFcbPHqWAnsDtT4A)
+
+[@水水](https://www.xuyanlan.com) : 如果面试被问:在 block 内如何修改 block 外部变量? 你会如何回答呢?如果你不清楚没关系,本文简洁明了的带你了解底层原理,值得一读。
+
+### 🐎 [版本管理工具及 Ruby 工具链环境](https://mp.weixin.qq.com/s/s2yJEb2P0_Kk-rIpYBi_9A)
+
+[@红纸](https://github.com/nianran):来自瓜神的**「CocoaPods 历险记」**系列第一篇,本文介绍了版本管理工具以及 Ruby 工具链环境。从中我们可以学习几个不同的版本管理工具的差异,以及 Cocoapods 作为包管理工具如何控制 iOS 项目中各个依赖库版本信息。另外瓜神通过实操 Bundler 管理工程的全流程,详细介绍了如何控制 Gem 的版本信息,以及如何使用 rbenv 管理对应的 ruby 版本。
+
+### 🐕 [Swift Pointers Overview: Unsafe, Buffer, Raw and Managed Pointers](https://www.vadimbulavin.com/swift-pointers-overview-unsafe-buffer-raw-and-managed-pointers/)
+
+[@anotheren](https://github.com/anotheren):指针是 Swift 语言中最复杂的功能之一,本文成体系地介绍了 Swift 中的 19 种指针,并详细解答了它们是什么,何时使用以及从中可以得到什么。如果你对音视频感兴趣,那么你在和底层接口(主要是一些 C API)打交道的过程中是绕不开指针的,快去了解一下吧。
+
+## 工具
+
+### [Swift Package Index](https://swiftpackageindex.com/)
+
+[@EyreFree](https://github.com/EyreFree):随着 Xcode 11 中开始集成 Swift Package Manager,越来越多的第三方库也添加了对 SPM 的支持,切换到 SPM 已经逐渐成为可能。`swiftpackageindex.com` 是一个对支持 SPM 的 Swift 库的索引,即一个 SPM 库搜索引擎,它目前是一个非官方的、由开源社区维护的项目。它的实现原理很简单,数据是依靠人工录入的,即当有人将开源库提交到主列表中时(有需要提交的库?[点这里](https://swiftpackageindex.com/add-a-package)),此站点会立即对它进行完全克隆,并且每隔几个小时进行一次轮询,以便在索引中看到的信息始终反映最新的库版本,而不需要库作者执行任何操作。选择正确的依赖关系不仅仅是找到满足您需要的代码,挑选高质量的库是很困难的,`swiftpackageindex.com` 软件包索引可以帮助您更好地决定依赖关系,快来尝试一下吧!
+
+## 代码
+
+### [全新技能,FDottedLine](https://juejin.im/post/5ede002ef265da76e81a4226)
+
+[@邦Ben](https://weibo.com/linwenbang):Flutter 官方库并没有提供方便的实现虚线的库(其实就是生态还比较弱)。FDottedLine 这个库则提供了灵活构建虚线效果的组件。如果有虚线需求的童鞋,不妨使用一下。
+
+- 同时支持水平、垂直两个方向的虚线
+- 支持创建虚线形状
+- 提供超简单的方式为 Widget 添加虚线边框
+- 支持创建灵活的虚线边角效果
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#118-2020.06.22.md b/Reports/2020/#118-2020.06.22.md
new file mode 100644
index 000000000..fc647f0b1
--- /dev/null
+++ b/Reports/2020/#118-2020.06.22.md
@@ -0,0 +1,90 @@
+# 老司机 iOS 周报 #118 | 2020-06-22
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## 通知
+
+为了更好的筹备 `WWDC2020 内参`,老司机周报将暂时停止更新一周。
+
+## 新闻
+
+### [WWDC 20 将于北京时间本周 6 月 23 日凌晨举行](https://developer.apple.com/wwdc20/)
+
+WWDC 2020 将要在 6 月 23 日凌晨 1 点钟以线上发布会的形式举行,这是首次以线上直播的方式和大家见面。
+据“知情人”爆料,这次 WWDC 也会发布一款 ARM 的 Mac 电脑,同时还会把 iOS 系统重新命名为 iPhone OS,可以说非常值得期待了。
+
+**同时,今年老司机周报依旧会和知识小集合、SwiftGG以及头条技术部门一起来创作《WWDC20 内参》,各位读者可以关注一下~**
+
+> 《WWDC 内参》是指根据 WWDC Session 内容,去除闲聊的内容,根据自己的实际开发经验,总结一篇文章。
+>
+> 往年的 WWDC 内参活动供参考,[WWDC17 内参](https://xiaozhuanlan.com/wwdc17),[WWDC18 内参](https://juejin.im/post/5b1d284df265da6e572b3d87),[WWDC18 内参(补)](https://xiaozhuanlan.com/wwdc18),[WWDC19 内参](https://xiaozhuanlan.com/wwdc19)
+
+### [全新的 Apple 开发者论坛](https://developer.apple.com/forums/) 与 [App Store Connect 现已可用](https://appstoreconnect.apple.com/)
+
+[@张嘉夫](https://github.com/josephchang10):WWDC 2020 开幕在即,本周 Apple 对 Apple 开发者论坛和 App Store Connect 用户界面进行了改版,采用了全新的设计,使用起来更便捷美观,提供更简明的界面导航,并对移动设备提供了更好的支持。在 WWDC 2020 期间,开发者论坛会成为开发者社区和上千名 Apple 工程师一起探讨新技术、解答疑问的最佳场所。
+
+## 新手推荐
+
+### 🐎 [Easy way to detect a retain cycle in a view controller](https://sarunw.com/posts/easy-way-to-detect-retain-cycle-in-view-controller/)
+
+[@Parsifal](https://weibo.com/parsifalchang):循环引用导致的内存泄漏问题是 iOS 开发者最经常碰到的性能问题之一,通常我们可以使用苹果官方的性能检测工具 Instruments - Leaks 帮助我们排查和定位。最原始的方式可能是在 VC 的 dealloc 方法中输出打印页面已经被释放的日志。社区中也有开发者提供了便利的第三方工具,如微信读书出品的较为广为人知的 [MLeaksFinder](https://github.com/Tencent/MLeaksFinder) 通过在 VC 被 pop 或 dismiss 时检测其自身及其子视图是否正确释放来实现,再比如 [PLeakSniffer](https://github.com/music4kid/PLeakSniffer) 在 VC 释放后利用心跳机制来推测子视图是否被正常释放。
+
+本文则提供了简单使用符号断点的方式来辅助检测 VC 是否被释放。这个方式无侵入性,也不需要编写任何代码,但局限性在于只能在跑工程的使用。
+
+## 文章
+
+### 🐕 [国内大厂在移动端跨平台的框架接入分析](https://juejin.im/post/5ed45cf2e51d457858775d01)
+
+[@AidenRao](https://weibo.com/AidenRao):本文通过对国内各大厂旗下知名的应用进行分析,统计各大厂在移动跨平台开发领域的接入情况,同时分析 Android 端应用的 arm 框架、 kotlin 和 androidx 的使用状态。当你需要向老板或者产品提供一些数据参考时,这份数据统计也许能帮助到你。
+
+### 🐕 [渲染流水线系列 -- 光栅化策略对比](https://mp.weixin.qq.com/s/xuJ_-QpgrjVhuUKpINVn_g)
+
+[@looping](https://github.com/looping):本文对渲染流水线几种光栅化策略的优劣势进行了对比,同时重点讨论了光栅化的性能问题,感兴趣的同学可以翻看了解下。对光栅化不熟悉的话,可以看该系列的另一篇 -- [光栅化简介](https://mp.weixin.qq.com/s/qhCRkmzrLe7Osr_em2BmrA)。
+
+### 🐎 [Modularity. Boundaries](https://dmtopolog.com/modularity-1-boundaries/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):在代码中,我们一直都在处理不同子系统之间的边界。它发生在不同的抽象级别上。Functions, classes, modules, frameworks, layers 都是封装的实体,它们通过不同类型的边界与另一个世界分开。本文讲述了如何通过边界与模块化来保持关注点分离,构建不同类型的项目。感兴趣的同学可以阅读。
+
+### 🐢 [Toggling iOS Render Debug Options Without a Computer](https://bryce.co/on-device-render-debugging/)
+
+[@水水](https://www.xuyanlan.com):我们经常用 Instruments 来调试渲染性能比如:Color Blended Layers 或 Color Offscreen-Rendered, 那有没有不需要 Instruments 就能调试的方式呢? 本文作者通过提供了一个方案来让开发者通过设备来调试渲染性能,如果你对代码感兴趣,或者想在自己的设备上尝试,可以在 [GitHub - RenderDebugPreferences](https://github.com/bryce-co/RenderDebugPreferences) 上找到该项目。
+
+### 🐕 [Introducing Swift AWS Lambda Runtime](https://swift.org/blog/aws-lambda-runtime/)
+
+[@莲叔](http://aaaron7.github.io/):前面有一期提到了 Server-side Swift 仍然可期,其中一个利好消息就是 SwiftNIO 的负责人,Tom Doron 加入了 Swift 的 core team。很快 Tom Dorom 就带来了一个新的开源项目:Swift AWS Lambda Runtime。简单的说,通过 Swift 来编写 Server-less Function 来部署在 AWS Lambda 上,这对于创业公司使用 Swift 技术栈无疑是一大利好,毕竟 AWS Lambda 已经越来越受初创型公司的欢迎。本篇文章就是 Tom Doron 所发,介绍了该项目的基本情况。
+
+## 工具
+
+### [因为知道了30+款在线工具,我的工作效率提升500%!](https://juejin.im/post/5ee6f0b1e51d4578762019af)
+
+[@红纸](https://github.com/nianran):文中列举了 30+ 款在线工具,基本都是大家耳熟能详的几个著名的网站,有兴趣的同学可以稍微扫一眼。有些网站还是可以 Mark 一下的。
+
+> PS:在文章的评论区发现了另外一款[导航工具](https://github.com/xjh22222228/nav)([在线阅览地址](http://nav.xiejiahe.com/#/index?page=1&id=5&_=1592796130661))其收录了更多的网站地址,供大家参考。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#119-2020.07.13.md b/Reports/2020/#119-2020.07.13.md
new file mode 100644
index 000000000..809fb4236
--- /dev/null
+++ b/Reports/2020/#119-2020.07.13.md
@@ -0,0 +1,137 @@
+# 老司机 iOS 周报 #119 | 2020-07.13
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**热烈欢迎周报团队的第 33 个编辑 - [@JonyFang](https://github.com/JonyFang)!他是 TIME 时间卡 App 的开发者,目前就职于本来生活网 P2C 项目组。**
+
+## 新手推荐
+
+### 🐎 [Benefits of using throwing functions (try) - Swift's most underrated feature?](https://swiftrocks.com/benefits-of-throwing-functions-try-swift-underrated-feature)
+
+[@zvving](https://github.com/zvving):Swift 新手面对 `do-try-catch` 常望而却步,调用时使用 `try?` 轻率处理,对外提供错误处理时一般使用 Result 返回错误,Throwing 几乎不是一个可选项。
+本文作者认为 `do-try-catch` 可能是最被低估的 Swift 语言特性,并给出合理使用错误处理的建议:
+
+- Result & Throwing 都可以作为函数返回错误处理的方式
+ - 需要业务方显式处理 Error 时,推荐 Result
+ - 业务方不关心错误,期望更外层处理时,推荐 Throwing
+ - 一个方法内有多种类型错误需要返回时,只能选择 Throwing
+- XCTestCase 对 Throwing 有很好的支持:Case 书写可以更聚焦于自身逻辑
+- Result 与 Throwing 可以方便的相互转化
+
+关于错误处理文中未提及的几点也值得留意:
+
+- 虽然语法相似,但 `swift-try-catch-error`(错误处理) 与 `objc-try-catch-exception`(异常处理)并不相同
+ - Objc 中异常处理因为性能和安全问题,不推荐使用
+ - [Swift 中的错误处理](https://swiftgg.gitbook.io/swift/swift-jiao-cheng/17_error_handling#handling-errors)不涉及解析调用栈,性能好非常多,可以和 return 语句相媲美,推荐灵活选用
+- Swift 中错误处理也要留意资源清理的工作,[推荐通过 defer 完成](https://swiftgg.gitbook.io/swift/swift-jiao-cheng/17_error_handling#specifying-cleanup-actions)
+
+## 文章
+
+### 🐕 🌟 [Flutter 上的内存泄漏监控](https://juejin.im/post/5ee748df5188251f8649a226)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 所使用的 dart 语言具有垃圾回收机制,有垃圾回收就避免不了会内存泄漏, 内存泄漏的检测在各个端都是 Debug 的重头,iOS 侧的 Instruments , Android 侧的 LeakCanary ,本文将会带你实现一个 Flutter 可用的 LeakCanary。
+
+### 🐕 🌟 [Apple Clip 技术详解](https://juejin.im/post/5ef41c9b6fb9a07e6143b0d0)
+
+[@享耳先森](https://github.com/iblacksun):苹果在 WWDC2020 上发布了 App Clip,本文从产品定位及实现细节上介绍了 App Clip 的方方面面,还与 `PWA`、`Instant Apps`、`小程序` 进行横向比对,推荐阅读。
+
+### 🐕 [干货 | 携程 RN 渲染性能优化实践](https://mp.weixin.qq.com/s/3F8TOEdbiNX7SvXcy38Qrg)
+
+[@looping](https://github.com/looping):本文从理论方案、操作过程以及实用工具三个方面系统地总结介绍了携程在 React Native 渲染优化方面的实践经验,同时部分优化理论也同样适用于 H5 与 Native 平台。希望这篇文章能为对跨平台性能优化感兴趣的小伙伴带来一些实际的帮助与启发。
+
+### 🐢 [iOS Memory 内存详解](https://mp.weixin.qq.com/s/YpJa3LeTFz9UFOUcs5Bitg)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):为了从根本上更好地理解和分析 iOS 系统上的内存特性,我们要了解一般操作系统的内存管理、iOS 系统内存和 app 的内存管理。本文主要内容的目录如下:
+
+- 操作系统的内存机制
+ - 冯.诺伊曼结构
+ - 存储器的层次结构
+ - CPU寻址方式
+ - 虚拟内存
+ - 内存分页
+
+- iOS 内存机制
+
+- iOS 系统内存占用
+ - clean memory & dirty memory
+ - compressed memory
+ - 内存占用组成
+
+- iOS app 内存管理
+ - iOS app 地址空间
+ - 引用计数
+ - 循环引用
+ - weak 和 unowned
+ - 不会导致循环引用的情况
+
+- OOM 崩溃
+ - jetsam机制
+ - 如何检测OOM
+ - OOM的常见情况
+
+- 内存分析
+
+### 🐕 [The Origins of Objective-C at PPI/Stepstone and Its Evolution at NeXT](https://dl.acm.org/doi/abs/10.1145/3386332?fbclid=IwAR0osl29GyKY9x3nFJE8bxYtDm5TnN4k0YOmqavny3uW5BaoL-Sk34xxOJs)
+
+[@莲叔](http://aaaron7.github.io/):OC 毫无疑问是移动互联网时代最有影响力的编程语言之一。我们都知道 OC 是 NeXT 主要编程语言,随着 NeXT 被苹果收购后就成为苹果主推的编程生态,但其实 OC 并不是 NeXT 发明的。OC 的前身叫 Object-Oriented Pre-Compiler(OOPC),其作用是将 Smalltalk 语言转换为 C 语言。当时正处在“软件危机”的时代,关于如何更好的提升开发效率的研究如火如荼,OOPC 也是其中的一个研究项目。关于 OC 的发展值得回味的地方还有很多,有兴趣的同学可以看一下这篇由 OC 原作者和 NeXT 退休工程师共同撰写的关于 OC 发展历史的论文,非常详细的列举了不同时代的 OC 的迭代,可以看到不同的 feature 分别都是在什么样的背景下被发明出来的,对于未来怎么用好这些 feature 也非常有帮助。
+
+### 🐕 [动手实现一个精简的动态布局 DSL](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAwMzc1NzU3Nw==&action=getalbum&album_id=1410655476664303616&subscene=159&subscene=158&scenenote=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzAwMzc1NzU3Nw%3D%3D%26mid%3D2247483732%26idx%3D1%26sn%3D0b3a6c988190e8e87e62f97abac03d88%26chksm%3D9b370232ac408b241791b1172b8d19c90cc9f5ecb218cad39759fcd447df811c8172497ed6ab%26scene%3D158%23rd#wechat_redirect)
+
+[@老峰](https://github.com/gesantung):AutoLayout 是目前 iOS 上常用的布局方案,而它的本质也是通过 Cassowary 求出元素具体的位置与大小。这个系列作者将基于 Flex 布局算法,打造一个基于 C++ 的跨平台布局 DSL,实现一个精简动态布局引擎。那怎么才能让数据动起来呢?React Native 是通过 javascript 来实现数据动态化的,而这个系列作者基于编译器前端技术实现一个自定义的脚本,利用 C++ 实现一个精简的脚本解释器完成数据动态化。Flex + Script 实现元素的布局计算,再通过原生渲染。对自定义动态布局 DSL 感兴趣的读者不妨阅读。
+
+### 🐕 [Flutter 中的图文混排与原理解析 | 开发者说·DTalk](https://mp.weixin.qq.com/s/Scl4lP-sgesti74pZH4efg)
+
+[@极速男孩](https://github.com/ztlyyznf001):图文混排是在开发中比较常见的需求,在 flutter 中我们主要通过在 Text.rich 中添加 TextSpan 和 WidgetSpan 来实现,我们可以通过 WidgetSpan 来添加任何你想要的 Widget,包括 Image 和 Card 等。这篇文章主要通过分析 RichText 的源码,看到 flutter 如何通过 MultiChildRenderObjectElement 来管理当中的 Widget,并如何一步步的如何去绘制这些 Widget 的。
+
+### 🐕 [iOS Jailbreak Principles 0x02 - codesign and amfid bypass](https://mp.weixin.qq.com/s/WyjWk9vrVAscDggX8GDNbQ)
+
+本文是 **iOS Jailbreak Principles** 系列文章的最新一篇。前面的文章介绍了从内核漏洞到 tfp0,再到 rootfs 系统可读写。但到这为止,我们能做的事情还是比较有限的,为了做更多事情需要控制系统的 binary 或者分发自己的 binary 到系统,而为了做到这样,则必须绕过 codesign 机制。本文分析了 iOS 12 以后的 codesign 机制,随后从 amfid 入手分析了其绕过方案和实施过程。
+
+### 🐎 [@StateObject 和 @ObservedObject 的区别和使用](https://onevcat.com/2020/06/stateobject/)
+
+[@JonyFang](https://github.com/JonyFang):今年 SwiftUI 补完了不少内容,其中状态管理方面是一个重要的话题。对于那些从外界接受 ObservableObject 的 View,究竟是使用 @ObservedObject 还是 @StateObject,需要根据情况和需要确定。像是那些存在于 NavigationLink 的 destination 中的 View,由于 SwiftUI 对它们的构建时机并没有做 lazy 处理,在处理它们时,需要格外小心。本篇博客文章展开介绍了 @StateObject 和 @ObservedObject 的区别和使用。
+
+### 🐕 [iPadOS 鼠标的设计哲学](https://mp.weixin.qq.com/s/z1ZVYXjNGutoovth5-lL-Q)
+
+[@张嘉夫](https://github.com/josephchang10):作者王禹效在这篇文章里详细分析了 Apple 是如何为 iPadOS 设计鼠标功能的,包括与传统桌面操作系统鼠标在逻辑、显示和设计上的区别,以及 Apple 做出这些改变的原因。作者认为其实 Apple 不是什么魔法师,只是在设计时认真的去为用户做考量,愿意在这些别人不在意的细节上投资。一点点积累之后,就有了自己独特的用户体验。
+
+### 🐎 [iOS Crash 分析攻略](https://mp.weixin.qq.com/s/hVj-j61Br3dox37SN79fDQ)
+
+[@老驴](https://www.weibo.com/6090610445):淘系技术出品的一篇关于 Crash 的文章。从基础到深入的介绍 Crash 日志渠道、Crash 捕获的原理、看懂 Crash 日志、Crash分析方法。这些东西可能在平时的开发中已经被 crash kit 工具所处理,很多时候大家并不会去深究其中的原理和含义。而这篇文章就很好的补充了这些。
+
+其中的一些 debug 技巧很实用,在开发中也可以尝试着实践一下。总之,这是一篇不错的从入门到精通类的文章,值得一读。
+
+## 音频
+
+### 🐕 [网恋奇遇记 :偶遇杀猪盘之我能反杀](https://www.xiaoyuzhoufm.com/episode/5efeafa36d76607427547473)
+
+网络一线牵,珍惜这段缘;时间套路深,网恋需谨慎。
+
+这期播客讲述了一个程序员使用网恋交友应用后遇到“爱情骗子”的故事,厉害的是小哥凭借执着的正义感最后成功追回骗款,还增加了额外收入。希望通过这期节目可以提高大家对网恋的警惕性。前 5 分钟主播们在日常寒暄,着急的朋友可以从 5 分钟后开始直接进入。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#120-2020.07.23.md b/Reports/2020/#120-2020.07.23.md
new file mode 100644
index 000000000..959ff6f48
--- /dev/null
+++ b/Reports/2020/#120-2020.07.23.md
@@ -0,0 +1,129 @@
+# 老司机 iOS 周报 #120 | 2020-07-20
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**热烈欢迎周报团队的第 34 个编辑 - [@Damien](https://github.com/ZengyiMa)!Damien 目前就职于携程国际基础平台。**
+
+## WWDC20
+
+本周在周报公众号上我们推送了 5 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- 🌟 [WWDC 2020 Session 10041 - What's new in SwiftUI](https://mp.weixin.qq.com/s/uwDTHvfQtsikDDSJyEkVcQ)
+- 🌟 [WWDC2020 10646 - What's new in Web Inspector](https://mp.weixin.qq.com/s/tidA4bwYz3C5qNGrOtTaKQ)
+- 🌟 [IAP 订阅服务的生命周期和最佳实践](https://mp.weixin.qq.com/s/9cG9TPFxDbtSD3hqTqimLA)
+- 🌟 [介绍 Xcode 中 StoreKit 测试](https://mp.weixin.qq.com/s/m2twCCn5G4o0cTeWUKDn_w)
+- 🌟 [在 SwiftUI 中创建复杂功能](https://mp.weixin.qq.com/s/T_N1VE2UJrRwKqVTfXDT4w)
+
+## 新闻
+
+### 🐎 [Github 徽章 +1:Arctic Code Vault Contributor](https://github.blog/2020-07-16-github-archive-program-the-journey-of-the-worlds-open-source-code-to-the-arctic/)
+
+[@JonyFang](https://github.com/JonyFang):GitHub 在今年已经将 21TB 的开源代码封存到北极圈中,通过特别设计的胶卷以及北极代码保险柜(GitHub Arctic Code Vault),这些代码预计将能够保存 1 千年,而这项代码封存工作已经在 2020 年 7 月 8 日完成。 GitHub 还设计了一个特别的徽章,来感谢有贡献的开发者,当开发者所贡献的代码,被选择封存到北极,在其个人页面便会显示 Arctic Code Vault 徽章。另外,GitHub Archive Program 还与 Project Silica 合作,Project Silica 开发了可储存云端规模资料的媒体,透过超高速雷射光技术,改变玻璃材料的结构,将资料储存在石英玻璃中。 GitHub 提到,因为石英玻璃是一种耐用的储存材质,可将资料保存上万年,具有抗电磁干扰、抗水和抗热的特质,是开源程式理想的储存媒体,目前 GitHub 利用这项技术封存了 6 千个最受欢迎的存储库。
+
+> 中文的译文可以参考这篇:[你的 Git 代码已成功入驻北极圈,至少保存 1000 年](https://mp.weixin.qq.com/s/61dD_RyExzs6EGvQIN_z2Q)
+
+## 新手推荐
+
+### 🐎 🌟 [Flutter widgets 快问快答 | 第一期](https://mp.weixin.qq.com/s/rBNAs1r5j0DzlhOeRu9H0A)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):这是 Google 官方做的一个比较有意思的教程,这是一系列的,在 B 站持续更新,有助于新接触 Flutter 的同学快速了解 Widgets 及各种酷炫的用法,强烈推荐新手刷一下,每个视频讲解都很短,[传送门](https://space.bilibili.com/64169458/channel/detail?cid=131083)。
+
+## 文章
+
+### 🐕 🌟 [iOS14 隐私适配及部分解决方案](https://mp.weixin.qq.com/s/CJML-2YUv6sqEEnI8rI0Bw)
+
+[@享耳先森](https://github.com/iblacksun):隐私一直是 iOS 系统的重中之重,在刚刚结束的 WWDC 2020 ,苹果向我们展示了新的 iOS14 系统。iOS14 的适配,很重要的一环就集中在用户隐私和安全方面。本文介绍了 iOS 14 系统隐私方面的调整以及开发者如何跟进适配,涉及以下方面的调整:
+
+- 相册增加 Limited
+- 地理位置增加模糊定位
+- 局域网信息
+- 剪贴板
+- 相机和麦克风
+- IDFA
+
+### 🐕 🌟 [iOS 14 苹果对 Objective-C Runtime 的优化](https://mp.weixin.qq.com/s/vSw98xbpEe4pjtBfqFNGAw)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):尽管 `Swift` 势头凶猛,但 `Objective-C` 也依然在发挥着自己的余热。在 `WWDC 2020` 中,`Apple` 针对 `Objective-C` 中的 `Runtime` 做了三项优化:
+
+- 类数据结构变化:节约了系统更多的内存
+- 方法地址的优化:节约了内存,并且提高了性能
+- `Tagged Pointer` 格式的变化:提高了 `msgSend` 性能
+
+### 🐢 🌟 [美团外卖 Flutter 动态化实践](https://mp.weixin.qq.com/s/wjEvtvexYytzSy5RwqGQyw)
+
+[@xiaofei86](https://weibo.com/xuyafei86): 动态化是 Flutter 无法避开的话题。本文从 Flutter 的特点讲起, 阐述了美团外卖团队在整个 Flutter 动态化上探索的心路历程,还有设计理念、核心原理以及业务应用的经验。本文的视角也不局限于框架本身,更多思考了在解决问题的过程中技术团队需要做的事情,希望能对大家有所启发和帮助。
+
+### 🐎 🌟 [构建健全的空安全](https://mp.weixin.qq.com/s/rgVJn928fyGunNO5kDKnSA)
+[@Damien](https://github.com/ZengyiMa):空值错误是最常见的错误之一,Dart 团队为了让开发者构建更安全的程序,带来了空安全的计划。本文将会从设计原则、语法介绍、易用性、兼容性等方面来介绍 Dart 团队在构建空安全计划的努力。空安全计划的推出不仅可以让你程序更安全而且还可以在编译器的优化下提升 19% 的性能。从事 Dart & Flutter 相关领域的同学必读文章。
+
+### 🐢 [A Best in Class iOS App](https://www.swiftjectivec.com/a-best-in-class-app/)
+
+[@AidenRao](https://weibo.com/AidenRao):作者维护了一个列表,去支持列表里提到的每一个细节,帮助你使 APP 变得更好,它涵盖五个部分:
+
+- 辅助功能:最好的应用,为每个人的使用而设计,例如支持视力辅助功能 Voice Over,足够高的色彩对比度(至少 7:1)。
+- 平台技术:去支持苹果提供的新特性,例如暗模式,iPadOS 的多任务处理。
+- 用户体验:好的用户体验让人无需思考,一切理应如此。例如使用正确的音频设置并优雅地响应音频中断,所有可点击的界面元素至少为 44*44 大小。
+- 设计:这部分列出了经过深思熟虑的设计规范。例如使用正确的系统边距(layoutMarginsGuide,safeAreaLayoutGuide 等)。
+- App Store:App Store 展示资料经过精心的设计,例如创建预览视频,对关键词和类别进行仔细研究。
+
+### 🐕 [Our Transition to React Native](https://blog.khanacademy.org/engineering/our-transition-to-react-native/)
+
+[@looping](https://github.com/looping):本文介绍了将 Khan Academy(可汗学院)的应用迁移到 React Native 的原因,其中遇到的挑战,以及整体迁移过程。同时也讨论了在混编、国际化等问题上的解决方案。最后提出了个人对 RN 的一些看法,目前自己团队技术现状和对今后的展望。推荐有正在做类似技术迁移和对长期跨平台技术演进感兴趣的同学阅读参考。
+
+### 🐕 [Flutter 和桌面应用的最新进展](https://mp.weixin.qq.com/s/AfgT7jqv4m0YjFRIF5HhbA)
+
+[@极速男孩](https://github.com/ztlyyznf001):flutter 的目标是全平台的语言,包括移动端桌面端和 Web 的应用。在最新的 dev 分支中,flutter 已经开始提供了对 mac app 的支持,本文主要介绍了 flutter desktop 的最新进展。flutter desktop 在新版本中主要优化了桌面端的键盘和鼠标输入体验,提供了 Windows 的外部函数的支持,通过通用接口的方法提供 Windows 和 Linux 插件的支持,并在 Windows 中提供较好的兼容性。值得注意的是 Windows 和 Linux 在 master 的 Channel 上可用,而 macOS 只在 dev 的 Channel 上可用,macOS 版本虽然较为稳定,但不推荐在生产环境使用。
+
+### 🐕 [You Should All Build This Custom Instrument for Your App](https://blog.cocoafrog.de/how-to/2020/06/20/You-should-all-build-this-custom-instrument.html)
+
+[@四娘](https://kemchenj.github.io/):Instruments 是一个强大的调优工具,在 18 年的时候 Xcode 10 就重写了 instruments 的核心,让我们可以更加便捷地进行自定义,作者通过一个测量网络请求时间的例子介绍相关的操作步骤和 API。
+
+### 🐎 [探索WebAssembly实现iOS热修复/第一篇/WebAssembly快速上手](https://mp.weixin.qq.com/s/YGY7M1PjXEujAKoIOnCWtQ)
+### 🐎 [探索WebAssembly实现iOS热修复/第零篇/前言](https://mp.weixin.qq.com/s/U0q4n71VhIe6AawPtNVTzg)
+
+[@五子棋](https://satanwoo.github.io): 作者基于 libffi + WebAssembly 实现了一套 iOS 热修复的框架,整体思路比较清晰,对于想要了解 Objective-C Runtime 的同学来说是一个不错的文章。本文是系列第一、二篇。
+
+
+### 🐕 [Metal新特性:大幅度提升iOS端性能](https://mp.weixin.qq.com/s/cJocn4bLXsO2336Cha9woA)
+
+[@莲叔](http://aaaron7.github.io/):WWDC20 推出了非常多关于 Metal 的专题,足以可以苹果对于推广这项新的 GPU 计算框架的决心。本文较为系统的介绍了其中的主要内容,主要包括以下章节
+- 【Harness Apple GPUs with Metal】
+- 【Optimize Metal apps and games with GPU counters】
+- 【Build GPU binaries with Metal】
+- 【Debug GPU-side errors in Metal】
+- 【Gain insights into your Metal app with Xcode 12】
+
+内容涵盖了功能介绍、性能优化,Debug 技巧和相关工具等。对于 iOS 渲染类栈的同学建议学习。
+
+## 工具
+
+### [是时候扔掉 Postman 了,Apifox 真香!](https://xie.infoq.cn/article/ae84a97dcda218e46cd885e8d)
+
+[@Parsifal](https://github.com/ParsifalC):Apifox 是一款集成了 Postman 的接口调试、Swagger 的接口文档管理以及 Mock 的假数据模拟三个功能的工具,目前正在开放内测,厌烦了在各个工具间切换的朋友可尝试。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#121-2020.07.27.md b/Reports/2020/#121-2020.07.27.md
new file mode 100644
index 000000000..3ef93a47b
--- /dev/null
+++ b/Reports/2020/#121-2020.07.27.md
@@ -0,0 +1,103 @@
+# 老司机 iOS 周报 #121 | 2020-07-27
+
+
+老司机技术周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 6 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [SwiftUI 的可视化编辑工具](https://mp.weixin.qq.com/s/cRCdRtdVVCbHLbZNzuLB_w)
+- [打造更容易 Preview 的 SwiftUI 应用](https://mp.weixin.qq.com/s/lHMMvvVKbLxZ_tisQIVLsQ)
+- [SwiftUI 中的 App 要领](https://mp.weixin.qq.com/s/Pog25zL_essR47p57FBElw)
+- [为小组件构建 SwiftUI 视图](https://mp.weixin.qq.com/s/MC14yFDO2Y2tKje9gM1ibg)
+- [如何用 SwiftUI 写一个独立的 App?](https://mp.weixin.qq.com/s/eFqci9voCoMjlZ5B2PfAHQ)
+- [十年过去了,Swift 发展的怎么样了?](https://mp.weixin.qq.com/s/ABGp6l3WVBn4QjjDg0qIOA)
+
+## 文章
+
+### 🐕 🌟 [Apple Widget:下一个顶级流量入口?](https://mp.weixin.qq.com/s/ujZfU1CEQ1EfqoO8UR_kSg)
+
+[@EyreFree](https://github.com/EyreFree):Widget 是 Apple 在 WWDC20 推出的新的桌面内容展现形式。Widget 的出现,让 iOS 系统的桌面有了破局,更多产品能够有机会借助 Widget 来丰富自己产品的内容表达。本文对 Widget 的特点、刷新方式、Widget 和 SwiftUI 的关系、Widget 的展示形式等进行了全面的介绍,并进行了总结与展望,对 Apple Widget 感兴趣的同学千万不要错过!
+
+### 🐕 🌟 [有赞移动热修复平台建设](https://mp.weixin.qq.com/s/u4l4DXoijR4ZkGlqL3DRcA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):本文主要介绍了有赞的热修复平台,及在搭建过程中遇到的一些问题。以 Android 端为例,目前有赞的热修是基于 Tinker 自建的后端服务 + Android SDK 实现的。有赞热修复平台,是结合有赞移动团队实际开发过程遇到的问题,逐步解决逐渐完善的,读者可以结合自身团队打造合适的热修复管理平台。
+
+### 🐕 🌟 [猿辅导 iOS 精准测试实践 - Objective-C 与 Swift 混编工程精准测试探索](https://mp.weixin.qq.com/s/14hmLWNXAh1FKZT5NI5QsQ)
+
+[@Damien](https://github.com/ZengyiMa):文章从质量保障问题出发抛出「精准测试」的概念,进一步深入到如何在 iOS 移动端使用 LLVM Code Coverage 方案来实现覆盖率的检测,以及深入挖掘了 LLVM Code Coverage 覆盖率的实现原理。最后作者分享了猿辅导在落地精准测试体系的探索和实践经验,为业界的覆盖率检测方案提供了新思路。
+
+### 🐎 [WWDC20 Summary](https://kean.blog/post/wwdc20-summary)
+
+[@张嘉夫](https://github.com/josephchang10):[WWDC20](https://developer.apple.com/wwdc20/) 结束后,世界各地的团队正在积极地适配 Apple 平台里最新、最棒的技术。设计和产品团队通常专注于产品,不一定会密切关注来自平台的最新技术。而另一方面,开发者的主要关注点则是各个技术 session。因此,很多情况下没有人会直接对平台的演进负责,这也导致来自平台的新技术可能需要花上几个月、几年才能适配。不论是开发者还是设计师,只有少数的 geek 才会关注平台的每一项更新,因此作者制作了一份[总结 WWDC20](https://kean.blog/assets/wwdc20-summary.key.zip) 的 Keynote 幻灯片(只涵盖 iPhone 和 iPad),以便让您的产品和设计团队获悉来自平台的所有技术更新。
+
+### 🐕 [What should you know about a navigation history stack in iOS 14](https://sarunw.com/posts/what-should-you-know-about-navigation-history-stack-in-ios14/)
+
+[@老峰](https://github.com/gesantung):iOS 14 导航栏新特性,返回上一级页面时,长按返回按钮,会出现选择返回到第几级页面菜单,更加人性化。本文主要介绍了适配这个 feature 时处理长标题,自定义标题,无标题等场景时需要注意的问题,适配 iOS 14 的同学可以了解一下。
+
+### 🐎 [我们重新设计了 pub.dev,不来试试?](https://mp.weixin.qq.com/s/NodeZQs4Krkmcz_bOfjOAQ)
+
+[@极速男孩](https://github.com/ztlyyznf001):pub.dev 对 flutter 开发者来说是重要的查找包的工具。google 最近对他进行了更新,是我们更方便的找到优质的 package 。进一步优化了 pub.dev 的评分体系,从而更能通过评分判断一个 package 的质量。并对多平台通过筛选和标签做了进一步的区分,方便我们快速的找到正确的平台支持。
+
+### 🐎 [WasmPatch 开源,又一个 iOS 热修复框架](https://mp.weixin.qq.com/s/4W2NNfvsgsaUQg0Q7SsSZg)
+
+[@五子棋](https://satanwoo.github.io): 作者基于 libffi + WebAssembly 实现了一套 iOS 热修复的框架,整体思路比较清晰,对于想要了解 Objective-C Runtime 的同学来说是一个不错的系列文章。
+
+### 🐕 [Swift Code Injection using dyld_dynamic_interpose](http://johnholdsworth.com/dyld_dynamic_interpose.html)
+
+[@四娘](https://kemchenj.github.com):Injection 是一个代码注入工具,可以在不重启 App 的情况下让代码修改生效(也就是俗称的热刷新),在最早的 Objective-C 版本里,这件事情很简单,只要在加载完 dylib 之后调用 Runtime API 进行替换即可。
+
+问题在于 Swift,最早 Swift 1.0 发布之后,作者只能使用修改 vtable 的方式去修改 non-final 的函数,但 struct 和 enum 的声明和函数派发一直是个问题。
+
+在最近发布的 InjectionIII 里这个问题终于得到了解决,作者在 Twitter 的讨论里发现了一个 dyld 的私有 API `dyld_dynamic_interpose`,这个 API 可以在加载 dylib 时便捷地替换掉函数实现,在此基础上作者还添加了 SwiftUI 的支持,感兴趣的同学可以看一下。
+
+### 🚧 🐎 [Streamoji - Custom Emoji Library for iOS UITextView](https://dev.to/cardoso/introducing-streamoji-custom-emoji-library-for-ios-4g65)
+
+[@xiaofei86](https://weibo.com/xuyafei86): 自定义表情符号是一种有趣的方式,可以给你的 App 带来更多的活力和可定制性。它们在一些最流行的 App 中都有使用,比如 Slack、Discord 和 Twitch。然而,iOS SDK 并没有为自定义 Emojis 提供直接的支持。现在,使用新的开源库 [Streamoji](https://github.com/GetStream/Streamoji) 只需几行代码就可以将它们添加到自己的 App 中。
+
+你可以通过 gif、png、unicode 来定义表情,用 UITextView 来渲染他们,还可以控制显示质量并与文本大小自动匹配。如果感兴趣,通过 [Slackmojis](https://slackmojis.com) 找到更多有趣的表情并应用到你的 App 中吧。
+
+### 🐕 [Handling deeplinks in iOS 14 with onOpenURL](https://www.donnywals.com/handling-deeplinks-in-ios-14-with-onopenurl/)
+
+[@JonyFang](https://github.com/JonyFang):Xcode 12 beta 3 最新消息,SwiftUI 在 iOS 14 中为 deeplink 的处理新增了 onOpenURL 方法。开发者可以在视图上注册一个 URL 处理,以便这些视图可以根据需要来响应 URLs。这让 deeplink 的处理变得更加灵活,对项目解耦也有很大的帮助,与过去在 AppDelegate 和 SceneDelegate 中处理 URL 的方式有了很大的不同。
+
+## 代码
+
+### [Exposure Notification](https://developer.apple.com/exposure-notification/)
+
+[@老驴](https://www.weibo.com/6090610445):Apple 和 Google 合作的新冠病毒接触历史 API 已经上线有一段时间了,Apple 和 Google 也给这个 Framework 制作了文档。有兴趣的话可以来看看 Apple 和 Google 是怎么实现这个 API 的。
+
+强烈建议搭配 nshipster 的 [Contact Tracing](https://nshipster.com/contact-tracing/) 来看,这篇文章我们在之前也做过推荐。
+
+### [OCRunner](https://github.com/SilverFruity/OCRunner)
+
+[@Parsifal](https://github.com/ParsifalC):以 [JSPatch](https://github.com/bang590/JSPatch) 为代表的基于 JSCore 系列热修复方案接连被苹果审查后,社区近几年也涌现了不少其他的实现思路。在开源社区这块,比较多的是利用自定义轻量级 OC 解释器配合 `libffi` 来实现,比如 [OCEval](https://github.com/lilidan/OCEval),以及这个 [OCRunner](https://github.com/SilverFruity/OCRunner)。
+
+> 本开源代码由 [SilverFruity](https://github.com/SilverFruity) 自荐。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#122-2020.08.03.md b/Reports/2020/#122-2020.08.03.md
new file mode 100644
index 000000000..9eefe906a
--- /dev/null
+++ b/Reports/2020/#122-2020.08.03.md
@@ -0,0 +1,102 @@
+# 老司机 iOS 周报 #122 | 2020-08-03
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🌟 🐕 [详解 WWDC 20 SwiftUI 的重大改变及核心优势](https://mp.weixin.qq.com/s/hp1nMopK_XBkFT7zp3gCfA)
+
+[@zvving](https://github.com/zvving):在苹果统一平台的大方向下,SwiftUI 不仅是用来替代 UIKit 的布局引擎,也是统一苹果所有终端视图的『终极方案』。在这个背景下,不难理解 SwiftUI 2.0 大量的内容更新。
+
+本文汇总了其中的重大改变,并介绍 SwiftUI&Swift 在淘宝的落地情况。都 0202 年了,如果你的团队还没开始用 Swift,是不是该反思一下?😄
+
+### 🌟 [ 我们用 Flutter 写了一套全新的 Flutter 开发者工具](https://mp.weixin.qq.com/s/4mcFo3z8DhCDkEMX7IPmww)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Dart DevTools 是由官方团队产出的 Flutter 开发工具,日前官方团队用 Flutter 重新构建了 Dart DevTools ,目前已经在最新版本的 Flutter 插件中集成。在重构原有工具的基础上新增了不少新工具,比如 Layout Explorer , Networking View 等。强烈建议正在使用 Flutter 开发的同学仔细研究一番。
+
+### 🐢 [PRODUCT THINKING · 产品沉思录](https://index.pmthinking.com/PRODUCT-THINKING-a601a12335044f349a22caf57f274c27)
+[@zvving](https://github.com/zvving):老朋友 [少楠(Plidezus)](https://mp.weixin.qq.com/s/Pj4VHdUQNYMqRAQ9uX5-jA)是资深产品经理、设计师、连续创业者,还曾开过超市、做过外卖。同时,他更是充满好奇的互联网玩家:三年前,少楠发起并持续建立了这个数字后花园——**产品沉思录**。从人物集、产品历史、到跨界、认知与思维,不一而足,其中有不少很难收集的珍贵资料。
+
+本期把产品沉思录推荐给大家,在这个后花园闲逛一会儿,相信你会发现诸多宝藏。
+
+## 文章
+
+### 🐕 [Swift 5.3 又更新了什么新奇爽快的语法?](https://mp.weixin.qq.com/s/pQiLyl572fSgMX1Fq3RDhw)
+
+[@享耳先森](https://github.com/iblacksun):Swift 从 WWDC14 发布至今,已经经过了五年多的迭代,5.3 随着 WWDC20 一起发布,看过相关 Session 的同学一定对 `[SE-0279] Multiple trailing closure` 印象深刻。本文作者给大家列出了 Swift 5.3 的一些改动点,同时对 Swift 的现状与未来,作者也给出了他自己的一些看法。
+
+### 🐕 [Core Image:iOS 图像处理技术追踪](https://mp.weixin.qq.com/s/VeRohpOm_Wo6TNJ4IOTCAA)
+
+[@anotheren](https://github.com/anotheren):Core Image 是 Apple 平台上最实用的图像处理技术,并在各个平台上都提供了大量现成的工具以快速实现图片/视频的处理。本文介绍了在 WWDC20 中,苹果官方针对 Core Image 技术在三方面做的优化:Core Image 对视频/动图的支持、基于 Metal 构建 Core Image (CI) Kernel 以及 Core Image 的 Debug 支持。
+
+### 🐕 [iOS 大解密:玄之又玄的 KVO](https://mp.weixin.qq.com/s/0Yfb-FYorH5GZ3ZB6bMCUQ)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):说到 KVO,不少人都知道其本质是基于被观察的实例的 isa 生成一个新的类并在这个类的 extra 空间中存放和 KVO 操作相关的关键数据,然后这个新的类以一个中间人的角色借助 extra 空间中存放各种数据完成复杂的方法调度。但是如果仿照系统的 KVO 来实现一套自定义的 KVO,你会发现各种诡异的 bug。本文从汇编层面向大家介绍了 KVO 的本质并提供了相关 bug 的解决方法,其分析和解决问题的思路很是值得我们借鉴。
+
+### 🐕 [WWDC:无线网络优化实践,带来哪些启发?](https://mp.weixin.qq.com/s/R3jMJqNSFkjRtXGePPHKQA)
+
+[@Damien](https://github.com/ZengyiMa):本文从问题背景、实现原理、实践经验和业务价值角度出发深入介绍了 WWDC20 中推出的加密 DNS 以及受限网络中推送这 2 个新网络特性。并且在后文中介绍了手淘在新网络特性如 IPv6、HTTP/2、TLS1.3、MTCP 以及 HTTP/3 中的实践经验和落地情况,对正在做网络相关的体验优化和升级的同学提供了很好的参考资料。
+
+### 🐕 [GitHub 用对了吗?Flutter 团队分享如何管理大型开源项目](https://mp.weixin.qq.com/s/zo7i232oCQexyegioB7kxA)
+
+[@老峰](https://github.com/gesantung):Flutter 作为近年热度非常高的跨端开源项目之一,从开发者那里收到了大量的反馈,以及海量的 issue。本文主要分享了 Google Flutter 团队使用 GitHub 管理维护大型开源项目的经验,包括使用 GitHub 管理海量 issue,issue 标签化优先级排序方案,通过 issue 完结率衡量项目运行状况,如何清理积压的 issue 等。
+
+### 🐢 [连续 3 年最受欢迎:Rust,香!](https://mp.weixin.qq.com/s/TPV6uG7StvSQIj3lxufU0Q)
+
+[@tom510230](https://xiaozhuanlan.com/u/6682065345):本文全面地介绍了 Rust 语言的语言特性,包含以下几个 issue
+- 性能:对比下来完胜 go 和 python,这个网上一直有人做 profile,感兴趣的同学可以找到很多的佐证,最大的原因是因为 Rust 的 runtime 不需要 JIT 之类的机制,编译后的 bitcode 即可直接运行
+- 内存安全性:所有权规则类似一个单引用计数的机制,考虑一下如果内存一直只有一个变量(所有者)能够操作的话,自然没有内存竞争的问题
+- 变量生命周期:编译器会自动发现潜在的野指针问题,要修正了以后才能够编译通过
+- 线程安全:在 Rust 中,线程间的数据共享是通过很“别扭”的方式来完成的,可以理解为就是显式获取,显式释放,显式转移所有权,然后才能完成多线程通信,但是这样子却可以通过代码逻辑,保证了不会出现多线程访问边界资源导致的多线程崩溃问题
+- 开发效率:看了以上的描述,可以大概看出来编写合理的 Rust 代码,需要很高的入门门槛,调试工具的缺失也一直是 Rust 被人诟病的问题
+- 跨平台:因为轻量级运行时的关系,所以 Rust 嵌入到各种语言的运行环境都没有什么压力
+- 社区生态:很弱,Stack Overflow 上面基本都是问问题居多,基础组件也有很多缺失,需要自己发明轮子
+
+总体而言,国内大规模使用 Rust 的公司,目前公开分享的,除了[字节跳动](https://www.infoq.cn/article/OH79WEaK7Z3S2XaVO*BV)以外,还有就是在[区块链](https://xie.infoq.cn/article/ba4877ebb2ae379cda30ec136)领域中的高性能表现了,期待后续随着越来越多大厂的加入,Rust 会变得越来越香
+
+### 🐕 [Flutter 季度调研结果分享 | 开发者的选择](https://mp.weixin.qq.com/s/3NAa-uNSZ-KmGsZoVgKs3Q)
+
+[@EyreFree](https://github.com/EyreFree):Flutter 团队每季度进行一次为期十天的问卷调研,以听取大家使用 Flutter 的体验。本文分享了今年 5 月启动的第九次季度调研的结果,包含了围绕 Flutter 的使用情况、代码示例、Flutter 应用性能、编写 package 等主题的调研结果,对目前 Flutter 在全球的使用情况有了一个比较直观的反映。虽然 Flutter 团队可能无法直接回答每一条评论,但开发者的需求和评论每天都会影响团队的决策,希望有越来越多对 Flutter 感兴趣的朋友能够参与到 Flutter 生态的建设中来。
+
+## 代码
+
+### [如何实现一行命令自动生成 Flutter 插件](https://mp.weixin.qq.com/s/MKQAcYwJ4kiYg-Z8UeddkQ)
+
+[@邦Ben](https://weibo.com/linwenbang):首先,这个插件是基于 DartNative 框架衍生出来的辅助代码生成工具,用于提高开发 DartNative 框架开发效率,因此不能单独使用。所以如果对 DartNative 还不了解,那请先看下下方两个链接。简而言之,就是通过 `antlr` 进行分析 Native 语言(Objective-C, JAVA, Swift, Kotlin 等)得到 AST ,最后生成 Dart 代码(当然,你可以手写 ~)。对于不使用 DartNative 的读者来说,也可以了解一下工作原理,这类工具在基础工程效率方面或许可以给你带来不少启发。
+
+参考阅读:
+
+- [DartNative Github Repo](https://github.com/dart-native/dart_native)
+- [用 Dart 来写 Objective-C 代码](https://mp.weixin.qq.com/s?__biz=MzA5NzMwODI0MA==&mid=2647765287&idx=1&sn=219d4f944b22c0381b1c9e301b5bbd40&chksm=8887ca18bff0430ee847b4f5820f42b79c664a054fd7c149a5e5498f2d96b46f12cb63ca49e7&scene=158#rd)
+- [告别 Flutter Channel,调用 Native API 仅需一行代码!](https://mp.weixin.qq.com/s?__biz=MzA5NzMwODI0MA==&mid=2647767683&idx=1&sn=77c7d56ee5c3c141209424a138b94f72&chksm=8887c1bcbff048aa2e0a077893338ef79c630b833d19bcf73beb40a42cbc835b3f159a24504e&scene=158#rd)
+
+### [jVirus/swiftui-2048](https://github.com/jVirus/swiftui-2048)
+
+[@JonyFang](https://github.com/JonyFang):一个很棒的 SwiftUI 开源项目,使用了纯 SwiftUI 2.0 编写了经典的 2048 游戏,同时支持 iOS 和 iPadOS,也可以轻松拓展以支持 macOS。另外,作者对 iPad 纵向和横向的屏幕旋转也做了切换支持。对于想学习 SwiftUI 的读者,这是一个可以拿来作为参考的示例项目~
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#123-2020.08.10.md b/Reports/2020/#123-2020.08.10.md
new file mode 100644
index 000000000..377cd67b6
--- /dev/null
+++ b/Reports/2020/#123-2020.08.10.md
@@ -0,0 +1,137 @@
+# 老司机 iOS 周报 #123 | 2020-08-10
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 4 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [App Clips 探索之旅](https://mp.weixin.qq.com/s/_Uc2EBTk26IjZzS9GmVJ-g)
+- [SwiftUI 编程指南](https://mp.weixin.qq.com/s/smQmdXF-3VkHQnUV3G8Z3w)
+- [App Clips 开发设计指北](https://mp.weixin.qq.com/s/yBBIkBdwvhJMSWsDnJJMsA)
+- [为其他商户构建 App Clips](https://mp.weixin.qq.com/s/2_pmJ0JFtAP0nbSoEj8V9g)
+
+## 文章
+
+### 🌟 🐕 [Flutter 1.20 正式发布,新特性解读](https://mp.weixin.qq.com/s/Ua-463pSzEUiwl4WZMW5bw)
+
+[@邦Ben](https://linwenbang.weibo.com):Flutter 1.20 正式发布,带来了不少新特性,Flutter 的更新速度还是非常让人满意。
+
+- 图标字体摇树优化(即删除你未使用的图标字体,降低体积)
+- 提供 SKSL 预热功能,优化动画效果(需要设置)。
+- 优化了鼠标命中测试,提高 web 性能。
+- Dart 2.9 优化了 utf-8 解码器,在低端 ARM 设备上,英语文本的解码速度也提升至近 200%,而中文文本更是提升至 400%。
+- 支持 Android 和 iOS 自动补全功能。
+- 更新了 InteractiveViewer 组件(用于平移、缩放、拖拽以及大小调整等)。
+- 更新 Meterial Slider、RangeSlider、TimePicker 以及 DatePicker.
+- AboutDialog 用于显示所有用到的 package 的 licenses
+- pubspec.yaml 新格式,主要是指定特定平台
+- VSCode 集成 Dart DevTools(可以不打开网页了)。
+- DevTools 支持网络分析。
+- VSCode 重命名或者移动自动更新对应引用。
+- Channel 生成器(Pigeon),通过 Dart 声明,工具生成 Channel 三端通信代码。
+- 还有很多的 bugfix 以及一些新特性处理。
+
+除了性能优化之外,特别推荐关注一下 Pigeon,可以节省下不少编写 Channel 的时间。
+
+### 🌟 🐕 [Flutter 初学者必读的高级布局规则](https://mp.weixin.qq.com/s/t5R112IIQUc9SXwWeAgsoA)
+
+[@Damien](https://github.com/ZengyiMa):本文通过 29 个示例来展示了 Flutter 高级布局规则并且总结 Flutter 布局的原理如下:
+
+1. Widget 从其父项获得自己的约束 。一个“约束”是由 4 个 double 值组成的:分别是最小和最大宽度,以及最小和最大高度。
+2. Widget 会遍历自己的 子项(Children)列表。Widget 会逐个向每个子项告知它们的约束(各个子项的约束可以是不同的),然后询问每个子项想要设置的大小。
+3. 接下来,Widget 一个个确定子项的位置(在 x 轴上确定水平位置,在 y 轴上确定垂直位置)。
+4. 最后,Widget 将其自身大小告知父项(当然这个大小也要符合原始约束)。
+
+对于 Flutter 初学者来说,这是一篇很好阐述 Flutter 布局规则的文章。
+
+### 🐢 [Verify your app’s integrity with the new App Attest API](https://developer.apple.com/news/?id=2sngpulc)
+[@anotheren](https://github.com/anotheren):新的 App Attest API 是 [DeviceCheck](https://developer.apple.com/documentation/devicecheck) 框架的一部分,可帮助防止 iOS 14 或更高版本上的应用受到安全威胁,从而减少对服务的欺诈性使用。借助 App Attest,你可以在设备上生成特殊的加密密钥,并在服务器提供对敏感数据的访问之前,使用该密钥来验证应用程序的完整性。其核心类为 [DCAppAttestService](https://developer.apple.com/documentation/devicecheck/dcappattestservice)。Apple 提供了一个系列文章来具体讲述如何使用该新特性,包括:[建立应用程序的完整性](https://developer.apple.com/documentation/devicecheck/establishing_your_app_s_integrity);[验证连接到服务器的应用程序](https://developer.apple.com/documentation/devicecheck/validating_apps_that_connect_to_your_server);[评估欺诈风险](https://developer.apple.com/documentation/devicecheck/assessing_fraud_risk);[准备使用 App Attest 服务](https://developer.apple.com/documentation/devicecheck/preparing_to_use_the_app_attest_service)。
+
+### 🐎 [Dependency Injection via Property Wrappers](https://www.kiloloco.com/articles/004-dependency-injection-via-property-wrappers/)
+
+[@四娘](https://kemchenj.github.io/):依赖注入是一种解决高低层级抽象耦合的方式,这篇文章介绍了在 Swift 里如何简单地实现这种模式,并且使用 `@propertyWrapper` 优化它的语法:
+
+```swift
+struct ContentView: View {
+ @Inject var dependency: MyDependency
+
+ var body: some View {
+ Button("Tap Me", action: dependency.doSomething)
+ // prints "Next level injection 💉" when tapped
+ }
+}
+```
+
+### 🐢 [Swiftʼs Collection Types](https://harshil.net/blog/swift-sequence-collection-array)
+
+[@JonyFang](https://github.com/JonyFang):这篇文章基于 Sequence、Collection 和 Array 进行拓展,解释了一些重要协议的功能及其存在的原因。在深入探讨复杂结构之前引入了两项思考:
+- 1.如何设计 API 以达到最低要求?
+- 2.如何设计共享和专项的实现?
+
+Sequences 和 Iterators 是构建其他协议和具体类型的基础,文中做了部分介绍。最后以 Collection、BidirectionalCollecton、RandomAccessCollection、MutableCollection、RangeReplaceableCollection 的对比分析,解释了为什么存在这些协议及他们可以实现的改进。为了进一步阅读,也可以深入了解源码,尽管 Swift 本身以 C++ 编写,但标准库大部分是使用 Swift 编写的,包括[公共 API 源代码目录](http://github.com/apple/swift/blob/master/stdlib/public/core)。可以最先从 [Sequence](http://github.com/apple/swift/blob/master/stdlib/public/core/Sequence.swift) 和 [Collection](http://github.com/apple/swift/blob/master/stdlib/public/core/Collection.swift) 类型的源代码看起。
+
+### 🐕 [MessageMock:优雅的模拟 Objective-C 方法](https://mp.weixin.qq.com/s/jm2QvYqnvFCPcRPocpj9ZQ)
+
+在代码测试中,对于一些不容易获取的对象,可以虚拟(mock)出一个对象来帮助完成测试。在 iOS 中,已经有 OCMock 这样比较有名的开源框架去解决这个问题。但是 OCMock 在使用上的问题是比较繁琐麻烦,测试一个小的功能可能在使用上也比较麻烦。本文为这种场景提供了一种新的思路,基于 `objc_msgSend` 来进行方法的“模拟”和“校验”。
+
+[项目源代码](https://github.com/indulgeIn/MessageMock)
+
+### 🐕 [Self-Sizing UITableView Cells with SwiftUI](https://noahgilmore.com/blog/swiftui-self-sizing-cells/)
+
+[@zvving](https://github.com/zvving):在已有 UIKit 项目中如何 Hybrid 使用 SwiftUI,很多小伙伴都关心这个问题。作者尝试在一个略有复杂度的场景:自适应 UITableviewCell 中使用 SwiftUI。如何解决自适应高度,cell 复用?状态改变如何更新?作者对这些问题做了细致的探索,提供不错的实践参考。
+
+## 工具
+
+### [为啥 Flutter Hooks 没有受到太多关注和青睐?](https://mp.weixin.qq.com/s/L96a8Jc_HAzPdk4VYJ1Q3g)
+
+[@极速男孩](https://github.com/ztlyyznf001):hooks 最早起源于 React 当中,他可以是我们在不用写类的情况下去管理我们的 state。Flutter Hooks 并不需要掌握 React ,他可以使我们方便的在多个 widget 中共享同一套代码,他为我们提供了状态管理的另一种思路。flutter_hooks 中我们即可以只是用一个函数也同样可以创建一个类去创建一个 hook 。更多的内容可以参考 pub.dev 中的[文档](https://pub.dev/packages/flutter_hooks)。
+
+## 代码
+
+### [ConfigableCollectionView](https://github.com/miku1958/ConfigableCollectionView)
+
+[@老峰](https://github.com/gesantung):一个类似用 iOS 13 UICollectionViewDiffableDataSource + CellRegistration 配置 UICollectionView 的库, CellRegistration 封装了 DataSource 简洁 API 配置 CollectionView,DiffableDataSource 提供了高效安全数据操作 API, 对 UICollectionView 新特性感兴趣的读者可以尝试一下。
+
+>推荐人:[庄黛淳华](https://weibo.com/augcommaaugust)
+
+### [HappyCodable](https://github.com/miku1958/HappyCodable)
+
+[@EyreFree](https://github.com/EyreFree):通过使用 SourceKittenFramework 去自动生成 Codable 代码,让人更愉悦地使用 Codable,具有以下优势:
+
+- 支持自定义某个属性的 Coding Key;
+- 支持忽略掉某些不能 Codable 的属性;
+- 支持自动合成非 RawRepresentable 的 Enum;
+- Decode 时支持多个 Coding Key 映射同一个属性;
+- 便于调试;
+- 可以使用模型的默认值;
+- 支持简单的类型转换,比如转换 0/1 到 False/True, "123" 到 Int 的 123 或者反过来。
+
+>推荐人:[庄黛淳华](https://weibo.com/augcommaaugust)
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#124-2020.08.17.md b/Reports/2020/#124-2020.08.17.md
new file mode 100644
index 000000000..ab6129638
--- /dev/null
+++ b/Reports/2020/#124-2020.08.17.md
@@ -0,0 +1,129 @@
+# 老司机 iOS 周报 #124 | 2020-08-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [App Clips 的配置及链接处理](https://mp.weixin.qq.com/s/7CY_C1Y8FSlFy5mQJH5g0g)
+- [App Clip 的最佳实践](https://mp.weixin.qq.com/s/D26QI0uBa71UVQIOm2PjOg)
+
+## 新手推荐
+
+### 🐕 [深入理解 YYCache](https://juejin.im/post/6856665902655078407#heading-11)
+
+[@JonyFang](https://github.com/JonyFang):iOS 开发过程中会用到各种缓存,YYCache 也是大家所熟悉的一个缓存框架。由 YYKit 作者 @ibireme 开发,也是 YYKit 组件之一,是一个线程安全的高性能缓存框架。本篇主要是对 YYCache 内部 YYMemoryCache 和 YYDiskCache 的部分核心源码进行分析及提出了一些使用过程中的小 Tips,可以拿来借鉴使用。除了本文,也推荐看下其他的几个 YYCache 的源码分析文章。链接放到这里:
+
+- [YYCache 设计思路](https://blog.ibireme.com/2015/10/26/yycache/)
+- [YYCache 源码解析](https://juejin.im/post/6844903554214264840#heading-2)
+- [从 YYCache 源码 Get 到如何设计一个优秀的缓存](https://lision.me/yycache/)
+
+## 文章
+
+### 🐕 [一文读懂fishhook原理](https://juejin.im/post/6857699952563978247)
+
+[@五子棋](https://satanwoo.github.io):一篇写的比较清晰的 fishhook 原理的解析文章,整体流程上写的比较完善,可以作为入门 fishhook 学习的一篇文章。
+
+### 🐕 [Hook Alamofire](https://github.com/neil-wu/FridaHookSwiftAlamofire/blob/master/howto.md)
+
+[@四娘](https://kemchenj.github.io):这篇文章着重从 Swift Runtime 数据结构入手进行分析,面向 GitHub 上 3.3 万 star 的 Swift HTTP 网络库 Alamofire,实现一个基础版本的抓包工具,具备:打印 GET / POST 请求;屏蔽 SSL Pinning。过程中会介绍到 Swift 的内存布局,函数调用约定,参数传递,运行时函数调用。
+
+> 推荐人:[Neil Wu](https://github.com/neil-wu)
+
+### 🐕 [经典源码分析之 OCMock](https://juejin.im/post/6856324901419909127)
+
+[@老驴](https://www.weibo.com/6090610445):OCMock 作为 iOS 圈内老牌 Mock framework,一直都被大家广泛使用。在使用 OCMock 过程中,有时候会遇到一些比较难以理解的问题,这个时候,想要 debug 就不会是那么容易的一件事了。文章作者也是因为这样的原因,去阅读了 OCMock 的源码。而通过阅读源码,作者也发现并且总结了一些比较难以发现的使用点。如果你现在在用 OCMock 的话,不妨一读。
+
+### 🐎 [Flutter+FaaS一体化任务编排的思考与设计](https://mp.weixin.qq.com/s/y-poJ5yX4t91b88PDW1o_Q)
+
+[@Damien](https://github.com/ZengyiMa):本文是闲鱼团队 Flutter+Serverless 三端一体研发架构中任务编排相关的介绍,从如何提高 FaaS 研发体验与研发质量问题出发,通过将具体的业务流程抽象为任务的方式来进行任务编排,以及沉淀多个任务形成云端任务中台来提高研发体验。体系化的处理异常分类、捕获异常与异常监控等多种手段来提高研发质量。对研究移动端 FaaS 一体化研发模式的同学值得一读。
+
+### 🐕 [为什么使用汇编可以 Hook objc_msgSend(下)- 实现与分析](https://mp.weixin.qq.com/s/H6BmHEocf5jN78gfuY-tuA)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文介绍了使用 fishhook + 内联汇编来实现 Hook objc_msgSend 的全部实现及其内在原理,包含了以下知识点:
+
+- 什么是 Inline Hook 技术?
+- fishhook 的实现原理是什么?
+- 为什么 fishhook 可以 Hook objc_msgSend 方法?
+- 如何使用内联汇编来进行记录上下文和还原上下文操作?
+- 如何使用内联汇编通过方法地址调用方法?
+- 汇编语句模版的简单使用
+
+### 🐕 [一文看破 Swift 枚举本质](https://mp.weixin.qq.com/s/Gx7L_Ev0DV19mLYMnH-R1Q)
+
+[@xiaofei86](https://weibo.com/xuyafei86):本文通过内存结构和 SIL 对 Swift 中枚举的实现进行分析,对过程感兴趣的同学可以阅读原文了解,主要结论如下:
+
+1. 简单枚举<没有关联值>的本质就是一个整型值,整型值的大小取决于该枚举所定义的类型的数量。
+2. 给枚举添加原始值不会影响枚举自身的任何结构,设置原始值其实是编译器帮我们添加了 rawValue 属性,```init(rawValue)``` 方法 RawRepresentable 协议。
+3. 添加关联值会影响枚举内存结构,关联值被储存在枚举变量中,枚举变量的大小取决于占用内存最大的那个类型。
+4. 添加/调用"实例方法"、"类型方法"、计算属性以及实现协议的本质都是添加/调用函数。
+5. 对于没有添加关联值的枚举系统会默认帮我们实现 Hashable/Equatable 协议。
+
+### 🐕 [面向 5G 的阿里自研标准化协议库 XQUIC](https://mp.weixin.qq.com/s/rwa-xUamJtAaIBVZj3eCNA)
+
+[@looping](https://github.com/looping):XQUIC 是阿里巴巴淘系架构团队根据 IETF QUIC 标准化草案版本自研的协议库。本文对 QUIC 进行了基本的扫盲,并重点介绍了 XQUIC 的设计原理,网络传输优化,以及 Multipath QUIC 技术这几块,内容十分丰富。同时项目已经有开源计划,感兴趣的同学可以持续关注。
+
+### 🐕 [客户端稳定性优化实战,Crash率最高下降40%](https://mp.weixin.qq.com/s/jQfrxyvVtBBjUXkJuRinGA)
+
+[@Parsifal](https://github.com/ParsifalC):我们可以通过提高代码质量和健壮性来降低 App 在线上的闪退率,做到这一步一般就能将 App 的用户闪退率保持在可接受的范围。但对于淘宝这种超级 App,亦或是类似电商产品上,在活动旺季往往遇到更多的是 OOM 类型闪退(产品和交互天花乱坠的营销页面设计,各类 AR、视频等等技术应用,跨端方案的集成,都会带来额外的内存开销)。OOM 类型闪退通常难以定位和排查,相应地也比较难修复。大厂在做性能优化中,都会将 OOM 作为一个比较重要的指标考察,也产出来不少工具和方案。比如周报往期推荐的腾讯出品的 [OOMDetector](https://github.com/Tencent/OOMDetector),Facebook 的 [Reducing FOOMs in the Facebook iOS app](https://code.fb.com/ios/reducing-fooms-in-the-facebook-ios-app/) 等等。淘宝团队根据这几年的沉淀,提出了三个内存优化策略:
+
+- 精打细算,提升内存的使用率
+- 兜底容灾,尽量让应用延长生命
+- 提升内存上限,突破系统的天花板
+
+对业务的内存使用精打细算这是最直接有效的方式,控制内存使用以及降级方案都能有效减少 OOM;兜底容灾得益于 iOS 框架的优势系统已经能自动管理多余内存的释放(比如 UIImageNamed 的享元模式管理、NSCache 的 LRU 等),但 `didReceiveMemoryWarning` 往往会被我们忽略;提升内存上限,对于 iOS 侧这个只能依赖于 WKWebView 独立进程的应用了。总的来说,这是一篇淘宝团队对外总结自己内存管理策略的一篇文章,理念可以参考借鉴。
+
+### 🐕 [iOS 开发体验优化方案](https://mp.weixin.qq.com/s/f6hHl9_TLnWqB4hs99ut1Q)
+
+[@红纸](https://github.com/nianran):本文是闲鱼团队针对于其团队搭建环境、切换分支打包慢,做了体验上的几点有效优化。
+
+在解决环境搭建的问题上,闲鱼团队选择了部分 docker 化,即将包管理工具 cocoapods 和 taobaoenv 等配置 docker 化,pods 缓存内容挂在在 docker 上。由于 docker 的可移植性上的先天优势,使得开发者能够更快速的构建统一环境,解决了维护的问题。
+
+切分支后 APP 打包速度问题上,其选择了 install 前先缓存 Pods Projects 跟 Flutter 的编译产物,切换分支后,复原编译产物。
+
+> 小编注:闲鱼文中提及的 pod 版本为 1.2.0 版本,属于比较老的 pod 版本了。在 [pod 1.3.0](http://blog.cocoapods.org/CocoaPods-1.3.0/) 中,pod 增加了增量编译的更新内容,在切换分支后,会进行增量编译,理论上能解决部分闲鱼的打包速度问题。
+
+### 🐕 [As We May Code](https://nshipster.com/as-we-may-code/)
+
+[@EyreFree](https://github.com/EyreFree):本文分享了 Mattt 对于将 [语义网](https://zh.wikipedia.org/wiki/%E8%AF%AD%E4%B9%89%E7%BD%91) 应用于源代码的一些想法。语义网(semantic web)这个词这个词可能很多人没有听过,本文展望了源代码结合语义网方式进行管理后的各种优势,整体看起来比较偏向于概念,还没有实际的应用,感兴趣的朋友可以看下。
+
+## 工具
+
+### [远程输入法](https://github.com/remoboard/remoboard-source)
+
+[@老峰](https://github.com/gesantung):远程输入法是来自 [@everettjf](https://github.com/everettjf) E神的一款开源远程输入法,可以实现使用电脑给手机打字,让手机打字更快.支持 Web 、蓝牙、IP 连接,实现思路巧妙,对输入法及远程交互感兴趣的读者可以阅读[源码](https://github.com/remoboard/remoboard-source)。
+
+### [SwiftDump](https://github.com/neil-wu/SwiftDump/blob/master/README_zh.md)
+
+SwiftDump 是从 Mach-O 文件中获取 Swift 对象定义的命令行工具,类似大家都用过的 OC dump 工具 class-dump,SwiftDump专注于处理 Swift对象(当前只支持 Swift 5)。
+工具采用 Swift编写,代码简短,可以借此一窥 Mach-O 中是如何处理 Swift 相关信息的。
+
+> 推荐人 [@neil-wu](https://github.com/neil-wu)
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:
+
+如果你想**招人**,点这里:
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅: 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#125-2020.08.24.md b/Reports/2020/#125-2020.08.24.md
new file mode 100644
index 000000000..1dfb6f450
--- /dev/null
+++ b/Reports/2020/#125-2020.08.24.md
@@ -0,0 +1,139 @@
+# 老司机 iOS 周报 #125 | 2020-08-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 4 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [《Widgets 边看边写》第一部分:冒险开始了](https://mp.weixin.qq.com/s/hUcGDtdMzzgGOVHj7urTvA)
+- [《Widgets 边看边写》第二部分:Timelines 的基本使用](https://mp.weixin.qq.com/s/atlYIXjcU54kfcfAST7ttA)
+- [《Widgets 边看边写》第三部分:Timelines的进阶使用](https://mp.weixin.qq.com/s/iKrvJKWAUP5mH4jCR9BN9Q)
+- [WidgetKit 入门指北](https://mp.weixin.qq.com/s/U56NbQbHCfFDFbk_DD2W-A)
+
+## 新闻
+
+### [XCSSET Mac Malware: Infects Xcode Projects, Performs UXSS Attack on Safari, Other Browsers, Leverages Zero-day Exploits](https://blog.trendmicro.com/trendlabs-security-intelligence/xcsset-mac-malware-infects-xcode-projects-performs-uxss-attack-on-safari-other-browsers-leverages-zero-day-exploits/)
+
+[@张嘉夫](https://github.com/josephchang10):近期发现了一种非常规的、通过 Xcode 开发者项目进行传播的病毒。恶意代码会在建立本地 Xcode 项目时注入并运行,可以利用 [Data Vaults](https://support.apple.com/en-ph/guide/security/sece3bee0835/web) 的行为漏洞来窃取 cookie,还可以滥用开发者版本的 Safari。有一些在 GitHub 上分享项目的开发者受到了该病毒的影响,导致了因依赖而产生的链式攻击,因此威胁不断升级。VirusTotal 等来源也证实了该威胁的存在。这篇博客总结了对该病毒的发现,[附带的技术细节](https://documents.trendmicro.com/assets/pdf/XCSSET_Technical_Brief.pdf)包含了攻击的全部细节。
+
+### [联合验证什么鬼,苹果又出幺蛾子了!](https://juejin.im/post/6863054279583678471)
+
+[@Parsifal](https://github.com/ParsifalC):周四下午(8月20日)有登录 App Store Connect 的朋友都会发现一条莫名其妙的通知 - “您的帐户即将需要迁移为联合验证。您可以立即开始流程,或等待帐户于2020年8月28日自动迁移。”,这个无厘头的通知一度让大家一脸懵逼,本文通过一些线索结合网上的讨论,得出这是一起乌龙事件。有兴趣吃瓜的不妨看看。
+
+## 文章
+
+### 🌟 🐕 [整体把握 CocoaPods 核心组件](https://mp.weixin.qq.com/s/eyjrhPgPFdidPWO7t2SDcA)
+
+[@JonyFang](https://github.com/JonyFang):Cocoapods 作为包管理工具,随着 Apple 生态的发展不断地迭代和进化,各部分核心功能也都演化出了相对独立的组件。这些功能独立的组件,均被拆分为一个个独立的 Gem 包,而 CocoaPods 则是这些组件的集合。本文主要介绍了CocoaPods 的主要构成,及各个组件在整个 Pods 工作流的关系。
+
+可以带着这几个问题来看这篇文章:
+
+- CocoaPods 的核心模块包含哪些?
+- pod 命令是如何找到并启动 CocoaPods 程序的?
+- pod install 的流程是怎样的?
+- resolve_dependencies 阶段中的 pre_download 是为了解决什么问题?
+- validate_targets 都做了哪些校验工作?
+
+在我们知道了 CocoaPods install 的大致过程后,我们可以对其做一些修改和控制。例如知道了插件的 pre_install 和 post_install 的具体时机,我们就可以在 Podfile 中执行对应的 Ruby 脚本,达到我们的预期。同时了解 install 过程也有助于我们进行每个阶段的性能分析,以优化和提高 install 的效率。
+
+### 🐎 [Mattt 谈 WWDC 2020 - NSHipster](https://nshipster.com/wwdc-2020/)
+
+[@zvving](https://github.com/zvving):WWDC 2020 落下帷幕,虽少了现场 Bash 的啤酒 🍺 和苹果高管们的舞蹈 🕺,制作精良、节奏适中的视频和崭新的直播方式依旧足够精彩。独特又精彩,就像 2020 年本身。
+
+WWDC 2020 已落下帷幕,也许我们该像 [Mattt](https://nshipster.com/authors/mattt/) 建议的那样:走出『现实引力场』,好好睡觉、健康饮食、定期运动,照顾好自己和身边的人;在此基础上,合理地选用技术,好好工作。
+
+### 🐕 [详解 Dart 中如何通过注解生成代码](https://mp.weixin.qq.com/s/ZA62prbsM6KwnHkBT4i7yQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 本文初步探索了在 Dart 通过注解生成代码的技术,比起 java 的 apt ,没有运行时反射用起来还是有点点麻烦,需要手动执行 build,而且各种繁琐的 builder 配置,但这种技术可以给我们在解决一些例如路由,模板代码、动态代理等,多了一种处理手段
+
+### 🐕 [iOS 的自动构建流程](https://juejin.im/post/6860260103791050760)
+
+[@AidenRao](https://weibo.com/AidenRao):一个对效率有追求的公司,都应该有一套自动构建系统。
+
+- 效率上,解放出开发人员的时间。也更方便其他同事使用。
+- 保证打包的标准,避免配置或环境问题,带来的失败。把事情做对,比做快更重要。
+- 权限安全上,通过构建系统集中管理,对于使用者来说是一个黑盒。
+- 项目流程上,便于有需求时做 Daily Build 或者 自动测试。
+
+文章的这套 iOS 构建流程,经历作者 2 年的使用,基本稳定下来。介绍详细,除了可以作为搭建参考,也可以用于原理学习。
+
+### 🐢 [探索 Flutter 中线程模型/消息循环的底层逻辑](https://mp.weixin.qq.com/s/yhni2q5XfxJ6qmfcJnSlBg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 多线程模型以及线程中的事件循环机制在 OS 里都是必不可少的一部分,也扮演着非常重要的角色,主要用来做异步任务的分发与调度。本文详细讲解了 Flutter 中的线程模型与事件循环是如何实现。
+
+- 每个 Thread 对应相应的 TaskRunner,并且通过 Thread Local机制存储对应的 MessageLoop
+- 每个 TaskRunner 对应相应的 MessageLoop
+- 每个 MessageLoop 中有对应的 TaskQueue,TaskQueue 使用 priority_queue 实现
+- 每个 TaskQueue 通过 TaskQueueId 被存储在全局的 TaskQueues Map 中
+
+### 🐕 [Force-Unwrapping in Swift is NOT a Bad Thing](https://wolfmcnally.com/82/force-unwrapping-swift-not-bad-thing/)
+
+[@Damien](https://github.com/ZengyiMa): 当你在 Swift 中使用强制解包功能的时候一定是倍加小心,因为如果可选变量为 nil 将会发生运行时崩溃,为了避免崩溃而会导致过度防御性编程,这会使你的代码增加复杂度和可维护性。我们应该在代码模块功能的设计角度上去拥抱强制解包这个 Swift 提供的功能,同时尽可能消除未定义行为的影响也是 Swift 语言的设计目标之一。在本文中,作者将会通过直观的例子来展示使用强制解包的最佳实践。
+
+### 🐎 [京东商城订单模块 Swift 探索](https://mp.weixin.qq.com/s/iF5Jg17gQGSX_ngi0r4l-A)
+
+[@looping](https://github.com/looping):本文在介绍他们用 Swift 改造京东订单模块以及在改造中遇到的问题之前,对 ABI 稳定后的 Swift 变化进行了细致的分析,同时也罗列了后续技术演进的规划。可以作为在现有工程引入 Swift 的参考学习资料。
+
+### 🐕 [App Attest: (Properly!) Protecting iOS apps from Jailbreak Tweaks in iOS 14](https://swiftrocks.com/app-attest-apple-protect-ios-jailbreak)
+
+[@anotheren](https://github.com/anotheren):在 iOS 14 中 Apple 引入了 App Attest 以保护你的应用不受越狱的侵害。本文详细介绍了具体实施的流程以及作者的一些心得。
+
+### 🐢 [Hacking iOS Simulator with simctl and dynamic libraries](https://curvedlayer.com/2020/08/09/ios-simulator-plugin-simctl.html)
+
+[@老峰](https://github.com/gesantung):本文介绍了通过使用 Xcode simctl 命令、dynamic iOS libraries 等 Hook 模拟器任意 App,全文包含以下方面:
+- 介绍 simctl 概念,以及如何使用 simctl 命令
+- 介绍 Runtime Method swizzling
+- 介绍如何构建 dynamic iOS libraries
+- 介绍如何给模拟器注入自定义动态库
+
+## 工具
+
+### 🐕 [OSLog and Unified logging as recommended by Apple](https://www.avanderlee.com/debugging/oslog-unified-logging/)
+
+[@水水](https://www.xuyanlan.com): OSLog 作为 print 和 NSLog 的替代品是苹果推荐的日志记录方式。它虽有点难写,但它有自己的优点:
+- 通过编写一个小的扩展名,可以很容易地替换打印语句。将控制台应用程序与日志结合使用可以帮助您以更有效的方式调试问题。
+- OSLog 的性能开销很低,并且在设备上会进行存档。
+- 可通过 Type 设置日志等级
+- 通过 Console.app 查看和检索日志
+如果想要编写高性能的日志模块,推荐使用 OSLog,更多详细的使用方法可以阅读本文或者查看苹果文档哦~
+
+## 代码
+
+### [Flutter -如何创建炫酷粒子时钟效果!](https://juejin.im/post/6862158050237612039)
+
+[@邦Ben](https://weibo.com/linwenbang):本文为翻译稿。作者在 Google 2019 年的 `The Flutter Clock Challenge` 活动中,通过粒子动画效果的时钟获奖,该文讲述了原理。感兴趣的同学可以看看,可以说,动效优秀的作品真让人痴迷!
+
+参考链接:
+
+- [原文](https://ultimatemachine.se/articles/how-i-created-a-particle-clock-and-won-the-flutterclock-challenge/)
+- [Github Repo](https://github.com/miickel/flutter_particle_clock)
+
+同时,里面提及的一个 [The Flutter Vignettes](https://flutter.gskinner.com/) 网站也值得留意一下,里面提供了不少优秀的 Flutter 例子。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:
+
+如果你想**招人**,点这里:
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅: 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#126-2020.08.31.md b/Reports/2020/#126-2020.08.31.md
new file mode 100644
index 000000000..127c6435a
--- /dev/null
+++ b/Reports/2020/#126-2020.08.31.md
@@ -0,0 +1,93 @@
+# 老司机 iOS 周报 #126 | 2020-08-31
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 3 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [当 Widget 遇到智能化](https://mp.weixin.qq.com/s/jcZ7xJdxdLeKZRSwurc6mQ)
+- [让 Objective-C 框架与 Swift 友好共存的秘籍](https://mp.weixin.qq.com/s/hPmL2fsAfQ-moeM5TjsliQ)
+- [了解 Swift 中的数值计算](https://mp.weixin.qq.com/s/CI46VcJjm_WGQadJ8q4yIg)
+
+## 新手推荐
+
+### 🐕 [Designing Custom UICollectionViewListCell in Interface Builder](https://swiftsenpai.com/development/custom-uicollectionviewlistcell-in-ib/)
+
+[@水水](https://www.xuyanlan.com): 此前作者发布了 [UICollectionView List with Custom Cell and Custom Configuration](https://swiftsenpai.com/development/uicollectionview-list-custom-cell/) 一文,文中作者教你使用代码自定义 UICollectionViewList 和 Cell,而本文作者又手把手教你如何在 Interface Builder 中自定义 UICollectionViewListCell。对于新手朋友来说这两种方式都有必要掌握,感兴趣的读者可以进行尝试哦~
+
+## 文章
+
+### 🌟 🐕 [Ex1. CocoaPods 中的 Ruby 特性之 Mix-in](https://mp.weixin.qq.com/s/uZx4cgbsNgE2iuguAOzbow)
+
+[@JonyFang](https://github.com/JonyFang):本文从 CocoaPods 中用到的 Ruby 语法特性说起,讲述了 Ruby 中为了解决多继承问题而引入的 Mix-in 模式,并且 Ruby 也为其定义了 `module` 和 `include` 关键词的语法糖。
+
+可以带着这几个问题来看这篇文章:
+- 什么是 Mix-in,它与多继承是什么关系?
+- Mix-in 在大多数编程语言中是如何落地的?(可以说说 Swift 中的应用)
+- 多继承的缺点有什么?
+- 在 CocoaPods 中是如何使用 Mix-in 特性的?
+
+文中最后引入了 Duck Tying 程序设计思想,有兴趣可以自行研究。
+
+### 🌟 🐕 [React Native 升级指南](https://supercodepower.com/docs/react-native-upgrade/index)
+
+[@looping](https://github.com/looping):React Native 作为一款跨端框架,有一个最让人头疼的问题,那就是版本更新。类库升级最关键的一步就是配置文件的更新,确保能正常通过编译。所以本文一开始就介绍了各端项目配置的技术细节,同时还分享了自己的升级流程,并提供了 0.60 到 0.62 三个版本的升级记录做参考。相信有了这份资料的指导,对有计划升级 RN 的团队来说想必会有很大帮助的。
+
+### 🐕 [Entry Points in Swift: How @main and @UIApplicationMain work internally](https://swiftrocks.com/entry-points-swift-uiapplicationmain-main)
+
+[@EyreFree](https://github.com/EyreFree):本文介绍了 Swift 如何确定应用程序的入口点,在分析 @main 与 @UIApplicationMain 的作用原理的过程中也概括了苹果如此设计的初衷。
+
+### 🐎 [SVG image assets supported in Xcode 12](https://sarunw.com/posts/svg-image-assets-supported-in-xcode12/)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):Xcode 12 又带来了一些新特性,我们发现 Assets 已经支持 SVG 资源了,尽管最终 Xcode 还是将 SVG 转换成了 PNG,与多年来为我们服务的 PDF 格式的工作方式相同,但这个更改依然带来了一些附带好处。
+
+### 🐎 [SwiftUI betas - what changed before 1.0](https://mackuba.eu/2020/08/17/swiftui-beta/)
+
+[@Damien](https://github.com/ZengyiMa):SwiftUI 在 2019 年 WWDC 一经推出就收获了很多开发者的目光,经过一年的演变,在 2020 年的 WWDC 中 SWiftUI 得到了极大的增强。从去年到今年 SWiftUI 都有哪些变化呢?本文总结了从 SwiftUI 1.0 到现在的变化之处。对 SwiftUI 感兴趣的同学不妨一读。
+
+### 🐎 [Sharing layout information in SwiftUI](https://fivestars.blog/swiftui/swiftui-share-layout-information.html)
+
+[@xiaofei86](https://weibo.com/xuyafei86):SwiftUI 的视图布局取决于每个视图的状态。此状态由内部属性或外部上下文中的值等混合而成。在高级的自定义布局中,有时父视图也需要来自其子视图的直接或间接的信息。一个常见的例子是,父视图需要知道子视图的大小。在本文中,我们将探讨如何通过 PreferenceKey 做到这一点。
+
+## 代码
+
+### 🐎 [Codable + PropertyWrapper = ☕](https://github.com/winddpan/CodableWrapper)
+
+[@zvving](https://github.com/zvving):Codable 作为 Swift 官方推荐的序列化方案,使用时有不少痛点:
+
+- 自定义映射复杂
+- 不支持 DefaultValue
+- 类型严格,不支持降级策略:如 Int/Double 降级转换为 String
+- 同一属性不支持映射多个 CodingKey
+
+CodableWrapper 尝试解决这些问题,同时通过 PropertyWrapper 提供简洁的实现。库刚刚推出,欢迎交流反馈。
+
+> 来自作者 [winddpan](https://github.com/winddpan) 自荐
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#127-2020.09.07.md b/Reports/2020/#127-2020.09.07.md
new file mode 100644
index 000000000..52331ff74
--- /dev/null
+++ b/Reports/2020/#127-2020.09.07.md
@@ -0,0 +1,133 @@
+# 老司机 iOS 周报 #127 | 2020-09-07
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 3 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [Swift 的不安全](https://mp.weixin.qq.com/s/C8IczQKMHS0KWqWw6bsMNQ)
+- [在 Swift 里安全管理指针](https://mp.weixin.qq.com/s/eOYMO12ZImplehBdnr8ZEw)
+- [探索现代的移动网络](https://mp.weixin.qq.com/s/ds6QkVrBwcurxp3RkvZe8Q)
+
+## 新闻
+
+### [App Review process updates](https://developer.apple.com/news/?id=84w3e5bm)
+
+[@anotheren](https://github.com/anotheren):苹果正式上线了其在 WWDC20 上公布的应用审核流程优化。对于已经在 App Store 上发布的应用,除了与法律问题有关的应用外,将不再因违反准则而延迟错误修复。现在,除了对应用程序是否违反指南的决定提出上诉外,你还可以对指南提出修改建议。苹果鼓励你提交对于 App Store 和苹果开发平台的建议。
+
+### [Details for app privacy questions now available](https://developer.apple.com/news/?id=hx9s63c5)
+
+[@EyreFree](https://github.com/EyreFree):正如苹果在 WWDC20 上宣称的,App Store 产品页面将提供一个新的隐私信息部分,以帮助用户了解应用对隐私的处理。此外,从 iOS 14、iPadOS 14 和 tvOS 14 开始,当应用程序需要在其他公司拥有的应用程序或网站上跟踪用户或访问设备的广告标识符时,将需要通过权限询问弹窗来获得用户许可。
+
+## 文章
+
+### 🌟 🐕 [云音乐 React Native 体系建设与发展](https://juejin.im/post/6867722436369416206)
+
+[@looping](https://github.com/looping):本文介绍了网易云音乐团队在优化会员收银台到达率时,选择了重建整个 RN 技术体系作为长期技术演进的方案。他们从自动部署、离线预加载、RN 框架升级等几个方向进行重构,最终取得了重大突破,到达率提升到 99%。他们未来还会围绕性能、效率、监控这三大方向进行基础建设。对构建跨端开发体系感兴趣的同学,或是在维护年久失修的基础项目,在仔细阅读文章后,相信都能找到一些可供参考的思路。
+
+### 🌟 🐕 [3. CocoaPods 命令解析 - CLAide](https://mp.weixin.qq.com/s/JMG04U-7737GGlnoOKg1Fw)
+
+[@JonyFang](https://github.com/JonyFang):本篇主要介绍了 CocoaPods 提供的命令行解析器 CLAide,它负责解析我们使用到的 Pods 命令,如 `pod update Alamofire --no-repo-update --exclude-pods=SwiftyJSON` 命令执行时 CLAide 在其中起到的解析作用。作者主要描述的几个点:
+
+- 简介 Ruby 中的 Open Classes 特性,其中需要留意的是 Open Class 可以跨文件、跨模块进行访问。
+- 概述 CLAide 功能及其目录结构
+- 介绍用于构建命令行界面的基础抽象类 Command。我们添加的命令都需要继承自 Command,不同的配置得到 `abstract command` 和 `normal command`。pod 命令正是由多个 `Pod::Command < CLAide::Command` 的子类组成了 `abstract command`,通过这种方式可以达到多级嵌套命令的效果。
+- 接着以 `pod update Alamofire --no-repo-update --exclude-pods=SwiftyJSON` 为例介绍 CLAide 中 ARGV 是如何解析命令行传入的参数的。
+- 之后介绍 Command 的管理类 PluginManager 的执行流程。它会在第一次运行命令 `self.run` 时进行加载,且仅加载命令类中指定前缀标识的文件下的命令。
+- 最后,结合前面介绍的类职责及执行流程,通过创建一个 CLAide 命令来自己实现一款 🥤 贩卖机。(作者提供的 [Demo 源码](https://github.com/looseyi/BeverageMaker))
+
+### 🐕 [Abusing iOS’ Screenshot Cropping Mechanism](https://bryce.co/screenshot-cropping/)
+
+[@老驴](https://www.weibo.com/6090610445):iOS 14 系统中自带的截图工具新增了一个非常好用的小功能:工具在选择截取范围时会自动吸附屏幕上元素的边缘,方便做出更加精准的截取。这个功能之前网上有很多的猜测是怎么实现的,本文的作者就做了深入的研究,并且得出了结论。对实现原理好奇的同学们不妨来了解一下。
+
+### 🐕 [Handling view controllers that have custom initializers](https://www.swiftbysundell.com/tips/handling-view-controllers-that-have-custom-initializers/)
+
+[@张嘉夫](https://github.com/josephchang10):如果我们在开发中使用[依赖注入(dependency injection)模式](https://www.swiftbysundell.com/articles/different-flavors-of-dependency-injection-in-swift)为对象在初始化时提供外部依赖,我们通常会希望替换 `UIViewController` 等 UIKit 类自带的初始化方法,这篇文章为你介绍如何处理使用自定义初始化方法的 view controller。包括如何实现 `init(coder:)` 方法,在 iOS 13 中使用 `UIStoryboard` 的 `instantiateViewController` 方法,以及通过 `@IBSegueAction` 方法来使用 `storyboard segue` 从而避免手动创建 view controller 等以便兼容 storyboard。
+
+### 🐕 [学 AR 到底学什么?我的 AR 之路反思与展望](https://juejin.im/post/6865650326390145031/)
+
+[@莲叔](http://aaaron7.github.io/):从近年历届 WWDC 中不难发现,AR 和 ML 一直是苹果坚持的下一代的技术方向,从观感来看的话,AR 可能更加富含科技感。炫酷的效果背后,是 AR 技术包含了非常宽的技术栈。本篇文章可以说是一个不错的扫盲贴,介绍了 AR 技术体系的几个主要组成:SLAM、场景感知、3D 渲染、协作共享,并推荐了一系列学习的教材,不过文章内容停留在一个比较浅的层面,比较适合对 AR 感兴趣不知道从何开始的小白阅读,找找初步感觉。
+
+### 🐎 [多级 MVC 和项目最佳实践](https://github.com/zzyptr/App/blob/master/README.md)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):为了解决在 UIViewController 之间存在依赖的问题,作者介绍了一种新的 MVC 方案:在 UIViewController 之上引入了一组新的 MVC 关系:将 Presenter 作为容器来整合 Controller,View;View 通过 Coordinator 来向 Presenter 通信;而高一级的 Presenter 持有低级 Presenter,低级的 Presenter 通过 Coordinator 向高一级通信。结构如下:
+
+```
+RootPresenter: UITabBarController
+ ├─ HomePresenter
+ ├─ MarketsPresenter
+ ├─ TradeNavigationPresenter: UINavigationController
+ └─ WalletsPresenter
+```
+
+采用该方案的优点是可以随着业务增长不断调整的能力,感兴趣的读者朋友可以原文链接阅读。
+
+### 🐎 [Turning the ChibiStudio canvas into an App Clip for iOS 14](https://rambo.codes/posts/2020-08-29-turning-the-chibistudio-canvas-into-an-app-clip)
+
+[@Damien](https://github.com/ZengyiMa):Apple 在 WWDC20 上发布的 AppClips 在具有更小的体积的同时也有着和原生一样的用户体验,吸引了众多开发者的目光。本文的作者也将他的一款名叫 ChibiStudio 的 App 在 AppClips 上做了尝试,本文将会深入介绍 App 往 AppClips 上迁移的步骤和注意事项。正在适配 AppClips 的同学不妨一读。
+
+### 🐢 [让 Objective-C 库支持 Swift Package Manager](https://mp.weixin.qq.com/s/pU5d8j4R-4MRokbZIF9MLQ)
+
+[@老峰](https://github.com/gesantung):Swift Package Manager 已经发布四年,但目前较 CocoaPods 普及率很低,不过今年 WWDC 迎来了最要更新支持二进制分发以及资源文件。本文作者 @[君赏](https://github.com/josercc) 结合自己实际项目经验分享了 Objective-C 源码库支持 SwiftPM 以及 打包二进制闭源 XCFramework 支持 SwiftPM 的经验,对 SwiftPM 感兴趣的读者不妨阅读。
+
+### 🐢 [SF Symbols Changes in iOS 14](https://medium.com/@hacknicity/sf-symbols-changes-in-ios-14-4731937c5dc7)
+
+SF Symbols 是苹果在 WWDC 2019 介绍的一套矢量图形,iOS 14 中,苹果对 SF Symbols 进行了大量更新:
+
+- 新增近 900 个新符号(有些符号的使用受到限制)。
+- iOS 13 中的 60 个符号已被重新命名。
+- 158 个符号有多色支持。
+- 本地化支持:新增许多右到左的符号。
+- 错误修复:修复了一些与名称不匹配的图片。
+
+## 工具
+
+### [YYDebugDatabase](https://github.com/y500/iOSDebugDatabase)
+
+[@红纸](https://github.com/nianran):YYDebugDatabase 来自 [y500](https://github.com/y500) 的远端调试数据库工具,其可以通过阅览器远程调试应用内的数据库。其允许我们直接在浏览器中查看和编辑数据库,包括直接查询,更新,插入和删除数据。我们也可以下载完整的数据库,在 Mac 上进行调试。由于其基于 FMDB 进行开发,支持的数据库格式有限,只能调试 SQLite 格式的数据库。
+
+> 推荐人:[y500](https://github.com/y500)
+
+## 代码
+
+### [FlutterUnit](https://github.com/toly1994328/FlutterUnit)
+
+[@极速男孩](https://github.com/ztlyyznf001):FlutterUnit 是一个 flutter 的开源项目,集成了 flutter 中 260 个左右的组件,适合新手来学习 flutter 的时候来熟悉 flutter 中各种组件的使用。
+
+### 🐎 [Pigeon](https://github.com/fmo91/Pigeon)
+
+[@zvving](https://github.com/zvving):为 SwiftUI 提供服务端数据异步加载能力,支持可定制的缓存、序列化、分页等。
+
+整体设计借鉴 [React Query](https://react-query.tanstack.com/docs/overview):声明式语法,实现较简洁,有相关使用经验的同学推荐选用。
+
+### 🐎 [Parma](https://github.com/dasautoooo/Parma)
+
+[@EyreFree](https://github.com/EyreFree):一个可以用来在 SwiftUI 构建的应用中展示 Markdown 的组件,支持大部分常用的 Markdown 样式,可通过 SPM 集成,有需要可以试用。持续开发中,感兴趣的同学也可以尝试贡献代码。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#128-2020.09.14.md b/Reports/2020/#128-2020.09.14.md
new file mode 100644
index 000000000..a306fb33c
--- /dev/null
+++ b/Reports/2020/#128-2020.09.14.md
@@ -0,0 +1,161 @@
+# 老司机 iOS 周报 #128 | 2020-09-14
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [活用 Swift 类型推断](https://mp.weixin.qq.com/s/-kwz3m8SXOtSj36kZq3tlg)
+- [Swift Package Manager 的里程碑](https://mp.weixin.qq.com/s/fLYOky-g6k0ridGEKwsU1A)
+
+## 新闻
+
+### 🌟 [Apple 特别活动 - 秋季发布会将于本周三凌晨举行](https://www.apple.com.cn/apple-events/)
+
+[@Parsifal](https://github.com/ParsifalC):苹果今年的秋季新品发布会将于本周三(北京时间 9 月 16 日)凌晨 1 点在 Apple Park 举行,与今年的 WWDC 20 一样,此次发布会依然采用了线上视频形式,国内用户可以在爱奇艺、哔哩哔哩、腾讯视频和新浪微博观看本次直播。根据一些媒体消息,本次发布会可能不会发布 iPhone 12,不知苹果是否能带来惊喜。
+
+## 文章
+
+### 🌟🐕 [如何提高代码质量](https://mp.weixin.qq.com/s/Dl7umd-Z3QuvOwzjmy3Z4w)
+
+[@享耳先森](https://github.com/iblacksun):高质量代码简单来说就是「好看和好用」,好看是指代码可读性好,容易理解、容易维护,别人接手了不骂你;好用则指代码健壮,不容易出错,机器跑着不骂你。即使出错,也容易定位,容易止损和恢复。
+
+如何才能拥有高质量的代码,有两种途径:
+
+- 第一种途径:先有好的设计--->然后用优秀的编码去实现--->再把优秀的编码风格延续下去
+- 第二种途径:从糟糕的代码开始--->不断去重构,向优秀的设计方案和代码风格不断逼近--->再延续下去
+
+本文重点从「途径一」的角度介绍如何能产生好代码,分别从规范、实践、度量及改进几个角度深入阐述,建议阅读。
+
+### 🐕 [App Clip 离落地有多远?](https://gcsnnb.github.io/2020/09/10/App-Clip%E7%A6%BB%E8%90%BD%E5%9C%B0%E6%9C%89%E5%A4%9A%E8%BF%9C/)
+
+[@JonyFang](https://github.com/JonyFang):WWDC2020 引出了 App Clips,之前的《WWDC20 内参》已经介绍过[《App Clips 的配置及链接处理》](https://xiaozhuanlan.com/topic/5820361974)。截止这里,我们已经知道了 App Clips 所带来的利,如及时可用等。本篇从业务和技术两个角度,列出了 App Clips 真正落地可能会遇到的问题,度量的角度可以作为我们实际业务落地过程中的参考。
+
+这里列出 App Clips 落地过程中值得思考的几点:
+
+- 业务角度
+ - 国内市场线下支付的支持
+ - 国内小程序的竞争
+ - 仅支持 iOS 14+ 用户
+ - 虽然提供了多种唤起 App Clips 的方式,但触发的条件比较严苛。如 Clip Code 只能
+ 通过`系统相机`才能够唤起
+ - 对于纯线上 App 最有利的唤起方式是通过 Safari,但操作路径步骤比较多
+- 技术角度
+ - 需要针对业务做代码拆分或做足够彻底的组件化
+ - 10M App Clips 包大小的限制
+ - App Clips 不支持后台处理活动。如`后台不支持网络请求`等
+ - App Clips 的用户怎么和对应的 App 用户一样做到唯一标识和绑定
+ - App Clips 支持唤起三方 App,但三方 App 不支持唤起 App Clips。所以会影响到三
+ 方登录、三方分享、三方支付的场景
+ - 不支持企业包
+ - CocoaPods 对 App Clips 的支持还不完善
+
+### 🐕 [iOS 性能优化 - Allocations 分析内存分配](https://mp.weixin.qq.com/s/WqVZ1rFpYrvE8X-J0f35mw)
+
+[@JonyFang](https://github.com/JonyFang):开发过程中,我们有时会遇到内存分析相关的问题,本篇介绍了 Allocations 工具。Allocations 工具提供了几种内存分析的方式:
+
+- Statistics
+- Call Tree
+- Allocations List
+- Generation
+
+通过上述几种分析方式,我们可以定位找出需要进行内存优化的代码块。阅读过程中可以配合作者提供的 Demo 进行手动分析操作。Demo 地址:[https://github.com/LeoMobileDeveloper/Blogs/tree/master/DemoProjects/iOS/AllocationsDemo](https://github.com/LeoMobileDeveloper/Blogs/tree/master/DemoProjects/iOS/AllocationsDemo)
+
+### 🐎 [LeetCode Cookbook](https://mp.weixin.qq.com/s/qu_drrtR-dFtYk1xiiZ7UA)
+
+[@Damien](https://github.com/ZengyiMa):还在为如何提高算法能力苦恼吗?来看看霜神(一缕殇流化隐半边冰霜)的 LeetCode Cookbook 吧,精美的排版和简单易懂的题解帮助你的算法道路上披荆斩棘。
+
+### 🐎 [Interviewing for an iOS Design System Engineer role at Spotify](https://dev.to/funmia/interviewing-for-an-ios-design-system-engineer-role-at-spotify-485l)
+
+[@老驴](https://www.weibo.com/6090610445):你是不是还在疑惑国内外互联网公司面试的区别?你是不是还在好奇海外互联网公司面试需要哪些技能?来,这篇来自一位 Spotify 工程师的经验总结文章可以让你一探究竟。
+
+### 🐢 [Agora Talk 回顾 | 深入聊聊不一样的 Flutter](https://mp.weixin.qq.com/s/lo-jrMRKpfEr2s80BW61VQ)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):Flutter 自出道以来可以说是突飞猛进,因为它独特的底层设计和开发语言,但是作为一个跨平台框架它也是备受追捧和争议。
+
+目前 Flutter 被吐槽最多的有以下几点:
+
+- Flutter 嵌套恶心
+- 使用 dart 不使用 js
+- 混合开发比 RN 更麻烦
+- 不支持热更新
+
+但是 Flutter 也有自己独有的一些优势:
+
+- Flutter 普及迅速
+- 对 Web、Linux、Win 等平台也在快速推进
+- 在 UI 兼容性和代码复用上表现优秀
+- 对比其他跨平台框架性能更好
+
+文中不仅详细介绍了 Flutter 的槽点和优势,还分析了 Flutter 世界中一些有意思的设定,比如 Widget 和 Element 的关系,组成 Dart 层渲染闭环的其他元素等。
+
+### 🐢 [Flutter 1.20 下的 Hybrid Composition 深度解析](https://mp.weixin.qq.com/s/e4Eh3DLacBJv36bNIKIokg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 在很早期的版本中就提供了 PlatformView 来解决 View 级别的 NativeVivew 和 Flutter 混合,但 PlatformView 不管从开发体验还是性能表现都有点儿差强人意。
+
+在官方和社区不懈的努力下, 1.20 版本开始在 Android 上新增了 Hybrid Composition 的 PlatformView 实现,该实现将解决以前存在于 Android 上的大部分和 PlatformView 相关的问题,比如华为手机上键盘弹出后 Web 界面离奇消失等玄学异常。
+
+[本文](https://mp.weixin.qq.com/s/e4Eh3DLacBJv36bNIKIokg)详细的讲解了 Hybrid Composition 接入和底层原理实现。
+
+### 🐕 [Private APIs, Objective-C runtime, and Swift](https://medium.com/@victor.pavlychko/private-apis-objective-c-runtime-and-swift-ceaeefbb6e48)
+
+[@四娘](https://kemchenj.github.io):Foundation 里有一些 API 被标记为 `NS_SWIFT_UNAVAILABLE`,例如 `NSInvocation` / `NSMethodSignature`,由于它们不安全或者没办法很好地融入到 Swift 的体系里所以被标记为不可用。
+
+但有时候我们面对平台 SDK 的问题,又不得不跟这些 API 打交道,那么此时在 Swift 里如何调用并且封装这些 API 就成了一个问题,这篇文章的作者就详细地介绍了他的解决方案:
+
+```swift
+let object = NSDate()
+let objectPrivate = object as! NSObjectPrivate
+let selector = Selector("description")
+let signature = objectPrivate.methodSignature(for: selector)!
+let invocation = NSInvocationClass.invocation(methodSignature: signature)
+invocation.selector = selector
+invocation.invoke(target: object)
+var unmanagedResult: Unmanaged? = nil
+invocation.getReturnValue(&unmanagedResult)
+let result = unmanagedResult?.takeRetainedValue()
+print(result ?? "")
+```
+
+### 🐕 [iPhone 屏幕尺寸进化历程背后的 App 设计哲学](https://mp.weixin.qq.com/s/fRXCTfl_Ewt-XuOk0lSz9g)
+
+[@张嘉夫](https://github.com/josephchang10):从 2007 年发布的第一代 iPhone 到2019 年发布的 iPhone 11 系列,iPhone 的屏幕尺寸已涵盖 3.5 寸、4 寸、4.7 寸、5.5 寸、5.8 寸、6.1 寸、6.5 寸七种,传闻将于今年秋季发布的 iPhone 12 还会增加 5.4 寸、6.7 寸两种尺寸。随着时间轴的推移,iPhone 的屏幕尺寸已经变得越来越多,越来越复杂,一个 app 要适配所有的这些屏幕尺寸,在从设计、开发到推广的整个过程中都需要考虑诸多因素。在这 13 年间 iPhone 的屏幕尺寸是怎样一步步进化到此的?基于软硬一体的设计,屏幕物理尺寸的变化背后包含着怎样的进化规律?这些变化对我们朝夕相处的手机 app 又产生了什么影响?根据已有的进化规律,我们是否可以展望未来的 iPhone 还会走向何方?基于 iOS 14 Beta 中发现的新线索,我们又可以推断出 iPhone 12 的哪些更多信息呢?作者 Allen Chu 在这篇文章里对这些问题进行了探讨。
+
+## 代码
+
+### 🐎 [VAP](https://github.com/Tencent/vap)
+
+[@EyreFree](https://github.com/EyreFree):VAP(Video Animation Player)是企鹅电竞开发,用于播放特效动画的实现方案。具有高压缩率、硬件解码等优点,且同时支持 iOS、Android、Web 平台。
+
+- 相比 WebP、APNG 动图方案,具有高压缩率(素材更小)、硬件解码(解码更快)的优点
+- 相比 Lottie,能实现更复杂的动画效果(比如粒子特效)
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:
+
+如果你想**招人**,点这里:
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅
+: 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢
+(20+ mins)
diff --git a/Reports/2020/#129-2020.09.21.md b/Reports/2020/#129-2020.09.21.md
new file mode 100644
index 000000000..ad37be679
--- /dev/null
+++ b/Reports/2020/#129-2020.09.21.md
@@ -0,0 +1,173 @@
+# 老司机 iOS 周报 #129 | 2020-09-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [UICollectionView 进阶使用](https://mp.weixin.qq.com/s/TOlv7eUv-cF1PL3vXX0L6A)
+- [探索 Swift 中的日志系统](https://mp.weixin.qq.com/s/D2T9seR6LDniND5GaVrxMg)
+
+## 新闻
+
+### [Swift 5.3 正式发布](https://swift.org/blog/swift-5-3-released)
+
+[@Parsifal](https://github.com/ParsifalC):继 3 月底发布 Swift 5.2 后,Swift 5.3 终于也官宣发布了~苹果继续围绕编码体验、Swift 运行时性能和更多平台支持进行改善和优化。小集团队也为我们翻译了官方的更新概要 - [一图读懂 Swift 5.3](https://mp.weixin.qq.com/s/2BrbN-eibfsu_g2D2EN6nw),下载更新 Xcode 12 即可体验 Swift 5.3。
+
+### [苹果更新 App Store 审核指南](https://developer.apple.com/news/?id=xqk627qu)
+
+[@Parsifal](https://github.com/ParsifalC):随着 iOS 14 的发布,以及正在路上的 macOS Big Sur,苹果对 App Store 审核指南也进行了一波更新。Apple Hub 做了中文翻译,不过建议大家还是以官方为主,译文为辅 - [苹果更新 App Store 审核指南,可以给苹果爸爸的审核条款提建议了](https://mp.weixin.qq.com/s/wRvaerDQgOdkfX9c1-Vbpg)。
+
+## 文章
+
+### 🌟 🐢 [系列文章:用 Swift 实现一个 Swift Runtime](https://belkadan.com/blog/2020/08/Swift-Runtime-Heap-Objects/)
+
+[@享耳先森](https://github.com/iblacksun):这个系列的文章来自于今年愚人节的一个项目,作者让 [Mac OS 9 支持运行 Swift 程序](https://belkadan.com/blog/2020/04/Swift-on-Mac-OS-9/),其中 Swift Runtime 没有将 C++ 的实现迁移过来,而是使用 Swift 实现了一套,文章里就分享了具体的实现细节,包含了大量的 Swift 指针操作技巧。
+
+通过阅读系列文章,你应该对 Swift Runtime 会有更深的理解,推荐阅读。
+https://belkadan.com/blog/2020/08/Swift-Runtime-Heap-Objects/
+https://belkadan.com/blog/2020/09/Swift-Runtime-Type-Layout/
+https://belkadan.com/blog/2020/09/Swift-Runtime-Type-Metadata/
+
+> 作者 Jordan Rose 之前是 Swift 团队的一员,负责 bugs.swift.org 相关的工作,在去年离职。
+
+### 🌟 🐕 [分析可执行文件 Mach-O](https://juejin.im/post/6870034249026633742)
+
+[@Damien](https://github.com/ZengyiMa):本文从 Mach-O 的概念出发,深度解析了 Mach-O 的内部结构以及加载 Mach-O 的步骤,最后作者也给出了通过分析 Mach-O 之后可以应用的使用场景,对于想理解 iOS 系统底层实现原理的同学是个很好的文章。
+
+### 🌟 🐢 [Flutter 包大小治理上的探索与实践](https://mp.weixin.qq.com/s/adC-YUWd-xuUlzeAPHzJoQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 作为一种全新的响应式、跨平台、高性能的移动开发框架,在性能、稳定性和多端体验一致上都有着较好的表现。引入 Flutter 带来的包体积问题,一直以来都是个热门话题,[本文](https://mp.weixin.qq.com/s/adC-YUWd-xuUlzeAPHzJoQ)详细
+讲述了美团在处理 Flutter 包体积问题上的思考及相关的建设。
+
+
+### 🌟 🐕 [今日头条品质优化 - 图文详情页秒开实践](https://mp.weixin.qq.com/s/Xqr6rQBbx7XPoBESEFuXJw)
+
+[@JonyFang](https://github.com/JonyFang):本篇总结了头条详情页(WebView)加载优化的思路和实践。内容总结如下:
+
+- 数据建立
+ - 确定优化效果的度量为:页面加载时间
+ - 白屏检测方案:WebView 快照 -> 缩放 -> 非白色像素点检测
+ - 确定用户刷头条时真实体验的指标:95 分位值
+- 模板优化
+ - 模板拆分
+ - 公共样式 CSS 和逻辑 JS 抽离为独立模板,内置到客户端中
+ - 客户端请求接口拿到正文数据,并通过 JS 脚本注入页面完成展示
+ - 用户进入详情页加载本地模板,并行请求详情页数据并注入模板
+ - 通过一定策略预加载数据并暂存
+ - 模板预热
+ - 全流程离线化后,进行本地模板加载优化
+ - 模板合并。将 JS、CSS、图片内联到一个文件以减少加载模板时的 IO 操作
+ - 模板简化。非必要样式和 JS 异步拉取
+ - 在合适的时机在后台创建 WebView 并预加载模板,用户进入详情页时使用加载好模板的 WebView 并将内容数据通过 JS 注入页面,收到数据后前端渲染
+ - 模板复用
+ - 详情页使用同一个模板,当用户退出页面时把正文数据清空,在进入喜爱个页面时复用这个 WebView 重新注入对应正文数据
+- 网络优化
+ - CDN 加速
+ - 详情页请求特点:流量大、数据属性基本不变、用户分布广、接口数据大
+ - 将正文、标题、作者栏等主要又基本不变的内容托管到 CND
+ - 容灾
+ - 多域名备份。服务端下发多个 CDN 链接,某个访问异常时可以快速切换
+ - 快速访问。设计了详情页请求的快速动态超时策略(因子 1.5,min = 1s,max = 4s),保证在网络或服务异常时,用户快速感知到自身网络问题。
+- 渲染优化
+ - 服务端预渲染
+ - 详情页首屏内容在服务端就把所有正文的 HTML 数据组装好,服务端直出内容给客户端 WebView 渲染。
+ - 客户端渲染
+ - WebView 中非文字内容(图片、视频)通过原生组件渲染
+ - Feed 页智能加载详情页需要的多图
+- 白屏优化
+ - 网络导致的页面白屏问题,通过前面的优化策略已解决
+ - 非网络原因的白屏(WebView 占用内存过大发生的白屏),先判断是否存在数据注入,若没有进行请求重试,接着重新加载模板并注入数据。
+
+### 🐕 [一位 iOS 开发者的进阶之旅](https://mp.weixin.qq.com/s/cKuVFRPUnnScLM3y26mgIQ)
+
+iOS 开发早已经过了会写两个页面就可以拿到高薪的时代了,于是,出于兴趣也好,出于生计也罢,越来越多的 iOSer 该意识到,需要提高自己的技术能力了,毕竟面试也越来越难了不是。 那如何提高呢?本文其实是 v2ex 上面的一个帖子: "iOS 开发有什么国人写的比较好的书籍推荐?"。里面的内容大多来源于 `lujie2012` 以及其他人的一些回答,回答的内容已经不仅仅是推介书了,还包含了很多关于 iOS 学习上的问题。虽然里面个别回答或观点笔者并不是完全认同,但还是希望对这方面有困扰的同学有一点点帮助。
+
+### 🐕 [闲鱼对 Flutter-Native 混合工程解耦的探索](https://mp.weixin.qq.com/s/4Z3Bqz9sUW1Lwofx--vCjA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):闲鱼是国内第一个使用 Flutter 混合开发的大型应用,但是目前面临如下几个痛点:
+
+- Flutter 侧混合编译速度慢,Android 首次编译 10min+,iOS 首次编译 20min+
+- 混合栈编程中历史包袱导致 iOS/Android 双端返回给 Flutter 侧的数据可能存在不一致性
+- 集成模块开发效率相比模块开发较低,单模块页面测试性能数据无法展开
+
+面对这些痛点,闲鱼技术团队做了如下尝试:
+
+- 模块化开发
+- 跨进程开发
+
+尽管两个方案都可以解决编译运行时间长的问题,但通过对比分析,方案一拆分模块和维护模块时都有很高的成本,方案二拆分成本和维护成本都相对较低,但对运行环境要求苛刻。综合来看,方案二虽然有一定缺陷,却可以解决很多问题。
+
+### 🐕 [4. Podfile 的解析逻辑](https://mp.weixin.qq.com/s/f9YcS9eYS_RShLsTXS-SvA)
+
+[@JonyFang](https://github.com/JonyFang):内容主要分三部分。第一部分,简介 Podfile 配置所围绕的 Xcode 工程结构(Workspace、Project、Target 及 Build Setting)。第二部分,介绍 CocoaPods 中 CocoaPods-Core 对配置文件的解析,配置文件包括 Podfile、Podspec 及解析后的依赖锁存文件(如 Podfile.lock)。第三部分,演示在 Podfile 中对 Target 进行的嵌套使用。
+
+文章目录结构如下:
+
+- Xcode 工程结构
+ - Target
+ - Project
+ - Workspace
+ - Scheme
+- CocoaPods-Core
+ - CocoaPods-Core 的文件结构
+ - Podfile 的主要数据结构
+ - Specification
+ - TargetDefinition
+ - Podfile
+ - Lockfile
+ - Podfile 内容加载
+ - Podfile 文件类型
+ - Podfile 文件读取
+ - Ruby 格式的 Podfile 加载
+ - YAML 格式的 Podfile 加载
+ - Podfile 内容解析
+- Podfile targets 配置
+ - Target 的嵌套使用
+ - Abstract Target 的应用演示
+
+### 🐎 [The State of SwiftUI](https://steipete.com/posts/state-of-swiftui/)
+
+[@zvving](https://github.com/zvving):SwiftUI 被寄予一统 iOS macOS iPadOS tvOS 全平台界面实现的厚望。然愿望美好,现实骨感:笔者使用 SwiftUI 过程中就碰到一系列状态同步 + Crash + 卡顿问题。
+
+如果要上线 SwiftUI,可以从 iOS 平台 Widget 等较稳定的场景入手,而 macOS tvOS 跨平台场景问题多多,建议先谨慎观望。
+
+## 工具
+
+### 🐎 [GitHub CLI 1.0 is now available](https://github.blog/2020-09-17-github-cli-1-0-is-now-available/)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):GitHub CLI 1.0 版本已发布。使用 GitHub CLI 可以:
+- 从终端运行你的整个 GitHub 工作流
+- 调用 GitHub API 来编写几乎所有操作的脚本,也可以为所有命令设置一个自定义别名
+- 连接 GitHub Enterprise Server 而不只是 GitHub.com
+
+本文结合实例介绍了从 issue 到 release 工作流的使用方法,也讲解了如何使用 gh alias set 为命令创建别名;而且这些自定义的命令也可以自由组合。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#130-2020.09.28.md b/Reports/2020/#130-2020.09.28.md
new file mode 100644
index 000000000..de10c49ee
--- /dev/null
+++ b/Reports/2020/#130-2020.09.28.md
@@ -0,0 +1,101 @@
+# 老司机 iOS 周报 #130 | 2020-09-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+国庆大长假这就来了,周报也将停更两期,下一次更新会在 **10 月 12 日**,复工的首个星期一。望周知!祝大家长假愉快~
+
+## WWDC20
+
+本周在周报公众号上我们推送了 4 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [iOS 14 相册适配指南](https://mp.weixin.qq.com/s/eGHi17N-XOsZB2Bh-tZZXA)
+- [如何使用原生 Diff 能力优化 UICollectionView 性能](https://mp.weixin.qq.com/s/I-leJV9W2s2ntb1Lf4DGVA)
+- [UIKit 新进展:现代 Cell 配置](https://mp.weixin.qq.com/s/GSvenyTmmeI7O4XFLoUMlA)
+- [PhotoKit 新变化:认识新的照片选择器](https://mp.weixin.qq.com/s/YsfG8-eKwQHRlLdg41w7rQ)
+
+## 新手推荐
+
+### 🐕 [3 lesser-known ways of using Swift enums](https://sarunw.com/posts/lesser-known-ways-of-using-swift-enums/)
+
+[@EyreFree](https://github.com/EyreFree):本文介绍了 Swift 中使用枚举的 3 种鲜为人知的方法,建议有在使用 Swift 的同学都看一下,相信会有所收获。
+
+## 文章
+
+### 🌟 🐢 [Flutter 渲染引擎详解 - iOS Metal 篇](https://zhuanlan.zhihu.com/p/214099612)
+
+[@极速男孩](https://github.com/ztlyyznf001): 因为苹果即将停用 OpenGL, 所以在 flutter 1.17 版本中支持了 metal 渲染。本文主要介绍了在 flutter 中,如何完成上下文初始化,然后如何将 view 输出到 surface 中。并在最后介绍了 flutter 光栅化的过程。
+
+### 🐕 [搭建 iOS-Crash 平台实践总结](https://www.xuyanlan.com/2020/01/20/%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AAcrash%E5%B9%B3%E5%8F%B0/#more)
+
+[@水水](https://www.xuyanlan.com):我之前写过一个 [如何自建 Crash 平台](https://www.xuyanlan.com/2019/02/20/iOS-crash-report/),里面提供了一个大致的思路,这篇文章是对具体实践的一个过程记录。Crash 收集使用的是 PlCrashReporter,解析是基于 llvm8.0,已成功搭建运行近一年,还指导了另外的部门进行快速搭建。想要自己搭建 Crash 平台和自定义 Crash 信息的,可以参考本文的思路。也欢迎在老司机技术群一起进行探讨和交流。
+
+### 🐢 [The state of Swift for WebAssembly in 2020 (and earlier)](https://desiatov.com/swift-webassembly-2020)
+
+[@老峰](https://github.com/Gesantung):[SwiftWasm](https://swiftwasm.org/) 是一个开源项目旨在将 WebAssembly 后端集成到官方 Swift 编译器中,该项目仍处于最早阶段,将允许开发人员使用 Swift 编程语言来构建可在 Web 浏览器中运行的应用程序。本文作者介绍了将 Swift 代码编译为 WebAssembly 的 SwiftWasm 工具集发展历程和期间遇到的问题,以及 2020 年所做更新、未来规划和目标,对 swift-webassembly 感兴趣的读者建议阅读。
+
+### 🐎 [Windows 上也能用 Swift 编程了,官方编译工具安装包现已上线](https://mp.weixin.qq.com/s/088RdJNxa79t1Y9Q04A3Xw)
+
+[@zvving](https://github.com/zvving):Swift 支持 Windows 平台,编译器的支持只是一部分工作,更需要对基础库、调试器、测试工具等开发生态提供全面支持。
+
+至少现在,能用简短 Swift 代码编写 Windows 原生计算器程序:这是马拉松般漫长的平台支持旅程中,一个不错的开始。
+
+> 参考:[Porting by a 1000 Patches: Bringing Swift to Windows](https://www.youtube.com/watch?v=Zjlxa1NIfJc)
+
+### 🐎 [来来来,Flutter Widget 体系架构与 UI 渲染流程](https://juejin.im/post/6874737011325059086#heading-0)
+
+[@Damien](https://github.com/ZengyiMa):本文是 Flutter Widget 以及 UI 渲染的底层技术讲解文章,从 Widget 的分类不断深入到底层 UI 渲染的整套流程,有助于想了解 Flutter 底层渲染机制的同学学习理解。同时在了解了底层原理后,也可以更好的展开诸如状态管理、渲染优化,卡顿 FPS 优化等技术领域的工作。
+
+### 🐕 [探秘 App Clips](https://mp.weixin.qq.com/s/HtWQONDrOqPMR-MSqn2-eg)
+
+[@JonyFang](https://github.com/JonyFang):本文主要是对 App Clips 功能支持及开发配置的介绍。先介绍了唤起条件及用户可操作的权限开关;随后介绍 App Clips 二进制的下载和清理;接着介绍 Apple Connect、客户端、服务端需要做的相关配置;之后介绍了下 App Clips 和主 App 的数据共享及互斥关系;最后介绍了本地测试和审核相关的内容。整篇文章,精简地把 App Clips 从开发、测试、提审到用户体验完整的过程介绍了一篇。对于有 App Clips 业务开发需求的同学会有一定的参考帮助。
+
+### 🐎 [深夜暗坑 - iOS 启动图异常修复方案](https://mp.weixin.qq.com/s/giXmBAC0ft-kRB3BloawzA)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文分享了如何定位启动图渲染失败和未能更新的问题的过程以及排查的结果,并提供了替换系统缓存启动图的方案,提供了相关流程图;最后提供了该方案对缓存启动图在不同系统版本上的表现差异。
+
+### 🐕 [Memory Safety - The Swift Programming Language](https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html)
+
+[@四娘](https://kemchenj.github.io):这是 Swift 官方文档的其中一节,默认情况下,Swift 会阻止你代码里不安全的行为。例如,Swift 会保证变量在使用之前就完成初始化,在内存被回收之后就无法被访问,并且数组的索引会做越界检查。
+
+Swift 也保证同时访问同一块内存时不会冲突,通过约束代码里对于存储地址的写操作,去获取那一块内存的访问独占权。因为 Swift 自动管理内存,所以大部分时候你完全不需要考虑内存访问的事情。然而,理解潜在的冲突也是很重要的,可以避免你写出访问冲突的代码。
+
+### 🐕 [Swift 的 MemoryLayout 是如何工作的](https://ai-chan.top/hexo/2020/09/13/Swift-MemoryLayout/)
+
+[@四娘](https://kemchenj.github.io):`MemoryLayout` 是标准库里一个很神奇的类型,通过它我们可以在运行时获取到特定类型的内存布局信息,之前我们介绍过的 `HandyJSON` 和 `Runtime` 库都有使用到它,但对于它的原理的介绍文章却不是很多。
+
+这篇文章就从 Swift 编译器的视角出发,介绍了 `MemoryLayout` 的工作原理,例如从源码到 IR 的过程中如何确定类型的内存布局,如何把这些编译期的元信息变成可调用的语言接口,希望读者读完之后也可以对此有所了解。
+
+### 🐎 [JS-Native 通信的 6 种方式](https://mp.weixin.qq.com/s/_Xo6O3NoE1z9AIMJm_uSsA)
+
+[@享耳先森](https://github.com/iblacksun):本文列出了 Hybrid 架构中,JS 与 Native 通信的几种技术方案,这些方案你都了解吗?
+
+> 题外话:Hybrid 通信大多是异步方式的,不妨深入研究下,是否可以实现同步呢?
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#131-2020.10.12.md b/Reports/2020/#131-2020.10.12.md
new file mode 100644
index 000000000..211d5c5c2
--- /dev/null
+++ b/Reports/2020/#131-2020.10.12.md
@@ -0,0 +1,143 @@
+# 老司机 iOS 周报 #131 | 2020-10-12
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [还没全面替换 UIWebView?苹果又给我们续了一命!](https://developer.apple.com/news/?id=edwud51q)
+
+[@Parsifal](https://github.com/ParsifalC):早在 2014 年苹果就发布了 WKWebView 来替代 UIWebView,并且一直鼓励开发者早日完成迁移。去年苹果直接宣布将停止接受使用 UIWebView 的 新 App,同时表示在 2020 年 12 月份起老 App 如果仍使用 UIWebView 则也无法提交。**但日前苹果表示 2020 年 12 月份这个 Deadline 被延长了**,具体日期待定,对于还没切换 WKWebView 的开发者们,时间上会更充裕一些。
+
+如果你的 App 仍然未完成迁移,以下 2 篇周报收录过的文章,会有所帮助:
+
+- [mattt 关于 WKWebView 特性及如何升级 UIWebView 至 WKWebView 的建议](https://nshipster.com/wkwebview/)
+- [如何检测 App 内是否还有 UIWebView 相关内容](https://blog.kulman.sk/determining-which-frameworks-use-uiwebview)
+
+### [苹果推迟 APNs 提供商 API 适配的截止时间](https://developer.apple.com/news/?id=c88acm2b)
+
+[@Parsifal](https://github.com/ParsifalC):去年 11 月苹果开始要求开发者适配基于 HTTP/2 的 APNs 提供商 API,并且给定了一年的过渡期。这次苹果宣布这个截止时间从 2020.10.30 推迟至 2021.03.31,延长了整整 4 个月。有必要提一下,这个主要是后端推送服务的适配,主流第三方推送服务应该都已经适配了,若你们是使用的自建推送服务,那还是有必要和后端确认一下是否完成适配。
+
+### [Apple 特别在线活动 - iPhone 12 真的来了](https://mp.weixin.qq.com/s/QhoHQNfaMkKNXBD0oKRTAg)
+
+[@Parsifal](https://github.com/ParsifalC):前不久的秋季发布会,苹果让 iPhone 12 缺席了,但好饭不怕晚!这周(北京时间 10 月 14 日周三凌晨 1 点)苹果将再次举办特别在线活动,据报道此次发布会的主角便是 iPhone 12 系列产品。
+
+### [Flutter 1.22 正式发布](https://juejin.im/post/6879048672597213198?utm_source=gold_browser_extension)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 又又又发布新版本了,估计很多同学 1.20 来没捂热呢,1.22 版本发布。本次版本的升级又带来了新一轮的功能发布,性能改进和问题修复。恰逢移动平台新版本(iOS 14/Android 11)的发布季,此次的版本更新保证了 Flutter 应用在 Android 11 和 iOS 14 上的兼容性,面向 iOS 14,本次更新包括了对 Xcode 12,新 Icon 的更新以及 App Clips 功能的预览。对于Android 11,此次更新包括了多种屏幕适配以及软键盘动画的流畅性优化。
+
+## 文章
+
+### 🌟 🐕 [Flutter 性能优化的利器 —— Tracing](https://mp.weixin.qq.com/s/qlCSF7tCPbERiTm7chXNMA)
+
+[@邦Ben](https://weibo.com/linwenbang):工欲善其事,必先利其器。如果你需要分析某项功能耗时,那首先你需要解决的,如何去计算耗时,最简单的就是打 log,前后节点时间戳相减得到耗时。对付简单逻辑是没问题的,但是如果遇到像 `Flutter Engine` 这类超长流程的耗时分析,那么你不可能一点点加 log 来处理,费力不讨好。因此该文讲述了 Tracing 的使用,也就是分析耗时常用的"火焰图"。
+
+`Tracing` 是 `Chrome` 开发者工具中强大的性能分析工具之一。
+
+大致流程,通过 `Tracing` 的 API 去埋入各个点,然后生成一份复杂格式 json,最后拖进 `Chrome` 中 `chrome://tracing` 进行解析这份 json 生成一个很直观的火焰图。(一图胜千言,这句话是真的。)
+
+该文会专注在 `Flutter Engine` 中 Tracing 原理与实践,会分为原理篇与实践篇,原理篇会涉及到具体实现,实践篇主要包括如何使用、分析、定制。具体代码分析较多,直接打开看文章吧。
+
+### 🌟 🐕 [Introducing Swift Atomics](https://swift.org/blog/swift-atomics/)
+
+[@EyreFree](https://github.com/EyreFree):Apple 官方发布了一个新的可以在 Swift 代码中直接使用低级原子操作的开源软件包 `Swift Atomics`,该库为以下 Swift 类型实现了原子操作,所有这些类型均符合 `AtomicValue` 协议:
+
+- 标准符号整型(Int、Int64、Int32、Int16、Int8)
+- 标准的无符号整数类型(UInt、UInt64、UInt32、UInt16、UInt8)
+- 布尔值(Bool)
+- 标准指针类型(UnsafeRawPointer、UnsafeMutableRawPointer、UnsafePointer、UnsafeMutablePointer),以及它们的可选包裹的形式(如 Optional>)
+- 非托管引用(Unmanaged、Optional>)
+- 一种特殊双字(DoubleWord)类型,由两个 UInt 值 low 和 high 组成,提供双倍宽度的原子基元
+- 任何 RawValue 是原子类型的 RawRepresentable 类型(例如简单的自定义枚举类型)
+- 对选择原子使用的类实例的强引用(通过遵守 AtomicReference 协议)
+
+### 🌟 🐢 [【译】SE-0282 Low-Level Atomic Operations ⚛︎](https://kemchenj.github.io/2020-10-02/)
+
+[@四娘](https://kemchenj.github.io/):前一段时间 Apple 团队发布了 [swift-atomics](https://github.com/apple/swift-atomics),让我们可以通过这个 package 用纯 Swift 代码实现高性能的**无锁并发数据结构**,这里我就把它的前身 [SE-0282 Low-Level Atomic Operations](https://kemchenj.github.io/2020-10-02/) 翻译出来,希望可以帮助大家更好地理解 swift-atomics。
+
+### 🐕 [官方推荐 | 在 Flutter 中使用 TensorFlow Lite 插件实现文字分类](https://mp.weixin.qq.com/s/cdcirQCKMS3fkSnz4tL5ig)
+
+[@莲叔](http://aaaron7.github.io/):Flutter 技术目前已经逐渐被主流的移动开发者接受,几乎绝大多数大 App 都已经或多或少的拥抱了 Flutter 技术。这个趋势带来的额外收益就是插件生态越来越繁荣,甚至开发者已经把目光投向了端智能领域。本篇文章介绍了基于 tflite_flutter 插件在 flutter 侧实现一个简单的文本情绪分类器,场景还算比较有趣,但整体比较简单,偏教程。想试水端智能的小白可以看看。
+
+### 🐕 [Dark side of extensions in Swift](https://dmtopolog.com/dark-side-of-extensions/)
+
+[@极速男孩](https://github.com/ztlyyznf001):Extensions 在 Swift 中类似于 Objective-C 中的 category,但是比 category 更加灵活和强大。Extensions 可以在一些现有的类中添加一些功能,甚至包括一些没有源码的系统的类,甚至你可以对一个协议进行扩展。本文主要介绍了如何在 Swift 去使用 Extensions, 并讨论如何处理对象和他的扩展之间的边界的问题。
+
+### 🐎 [iOS 后台锁屏也能监听摇一摇?](https://juejin.im/post/6881420727371694093)
+
+[@享耳先森](https://github.com/iblacksun):直觉来说,iOS App 如果进入后台了能做的东西就非常少了,碰到「后台检测手机摇一摇」类需求时如何实现呢?作者给出了完整的研究和实现过程。
+
+### 🐎 [iOS 是如何获取夜间模式启动图缓存路径?](https://ai-chan.top/hexo/2020/09/27/iOS-Snapshots/)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文作者首先验证了通过启动图文件名是无法获取夜间模式启动图的。然后介绍了通过分析系统文件来获取夜间模式启动图的过程。具体方案是通过解析``applicationState.db``文件并通过测试找出了夜间模式启动图缓存路径。另外作者也给出了 dump ``applicationState.db`` 文件后得出的信息,有兴趣的读者可以阅读原文查看。
+
+### 🐕 [How Swift API Availability Works Internally](https://swiftrocks.com/how-availability-works-internally-in-swift)
+
+[@老峰](https://github.com/Gesantung):Swift 2.0 中引入了可用性的概念, 对于函数、类、协议等,可以使用 #available 声明这些类型依赖于特定的平台或操作系统版本。本文作者 Bruno Rocha 结合撰写 swift #unavailable evolution 的过程深入研究分享了 #available 的工作原理及实现细节。
+
+### 🐎 [Binary Frameworks as Swift Packages](https://pspdfkit.com/blog/2020/binary-frameworks-as-swift-packages/)
+
+[@四娘](https://kemchenj.github.io/):今年 Swift Package Manager 最重要的更新之一就是支持了二进制分发,PSPDFKit 第一时间就做了 SPM 的支持,也给 Swift 团队提了一些反馈意见(Bug),并且赞助 CocoaPods 团队去开发 xcframework 相关的功能,文章里简短地介绍了 SPM 的接入流程和遇到的问题,感兴趣的朋友可以看一下,在这里也感谢他们对开源社区的回馈。
+
+### [UC 内核团队再出发,打造全新 Flutter 渲染引擎 —— Hummer](https://juejin.im/post/6877716124117663757)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 可以说是近两年来最火爆的移动跨平台方案,无论是创新型应用还是老牌旗舰型应用,都在或多或少地尝试 Flutter 技术。虽然 Flutter 看起来非常美好,但是它毕竟只是一个有潜力的新生儿,有待完善的地方还很多,UC 团队对此做了大量的工作,对 Flutter 引擎的性能和相关配置工具等做了大量优化,就有了定制化 Flutter 引擎 [Hummer](https://juejin.im/post/6877716124117663757), 目前 Hummer 已经取得了不少喜人的成绩:
+
+- 混合栈开发方案优化
+- 启动及首帧性能优化
+- 自适应的 DarkMode
+- 网络库增强
+
+## 工具
+
+### [XcodeGen — Collaboration Made Easy](https://medium.com/dev-jam/xcodegen-collaboration-made-easy-9d1fdef548de?source=friends_link&sk=e13d571c9544f878a3c1510778a988c9)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):相信每一位开发者在合并代码的时候都会遇到与 .xcodeproj 文件相关的冲突,解决这种冲突并不容易。有没有比较好的方式或工具可以解决这种问题?没错,XcodeGen 可以提供很大帮助,XcodeGen 是用 Swift 编写的命令行工具。它使用文件夹结构和项目规范来生成 Xcode 项目,其中包含生成项目所需的所有信息,例如目标,方案,设置等, 同时允许我们将配置拆分为多个文件,更易于管理。尽管 XcodeGen 会改变配置项目的方式,但在大型团队工作时使用 XcodeGen 会受益良多。
+
+## 代码
+
+### 🐎 [Announcing Swift Algorithms](https://swift.org/blog/swift-algorithms/)
+
+[@zvving](https://github.com/zvving):Swift 官方新开源 Swift Algorithms 项目,旨在为 Swift 算法代码提供通用基础能力。目前包含集合 Chunked, Sampling,Rotate 等辅助方法。
+
+项目尚在早期阶段,以独立库的方式存在,初步对纳入算法标准提出建议,经过社区长期论证的算法,最终会纳入标准库。
+
+官方出品,品质保证。日常写算法比较多的同学可以先用起来。
+
+### [Swift System](https://github.com/apple/swift-system)
+
+[@xiaofei86](https://weibo.com/xuyafei86):苹果在 WWDC20 "What's New in Swift" 公布 Swift Archive 框架时,提到其文件流构造函数用到了今年引入的另一个新框架 Swift System。之后简单介绍了 Swift System 为 Apple Archive 的系统底层 API,提供更加现代、易用的系统接口,以及更加底层、通用的类型。除此之外,没有公布更多的信息。
+
+最近,苹果开源了 Swift System,并引入了对 Linux 的支持。旨在提供多平台的系统接口封装,让 Swift System 充当所有受 Swift 支持平台的系统底层接口的唯一宿主。
+
+## 赞助者
+
+[Woodpecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12): 是一款 iOS 开发调试辅助工具,提供沙盒文件、UserDefaults、视图层级在线查看和编辑等功能,在实际工作中能极大提升开发效率和幸福感!
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#132-2020.10.19.md b/Reports/2020/#132-2020.10.19.md
new file mode 100644
index 000000000..7526058df
--- /dev/null
+++ b/Reports/2020/#132-2020.10.19.md
@@ -0,0 +1,135 @@
+# 老司机 iOS 周报 #132 | 2020-10-19
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 5 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [iOS 性能优化:使用 MetricKit 2.0 收集数据](https://mp.weixin.qq.com/s/cbP0QlxVlr5oeTrf6yYfFw)
+- [iOS 持续集成:更完备的 App Store Connect API](https://mp.weixin.qq.com/s/KnryMnySoOXvf8K7kQVwmA)
+- [iOS 性能优化:优化 App 启动速度](https://mp.weixin.qq.com/s/h3vB_zEJBAHCfGmD5EkMcw)
+- [Universal Links 新变化:让触达更广更快](https://mp.weixin.qq.com/s/mnZDKVk_0B60PnX_nSzFpA)
+- [HealthKit 的新增功能](https://mp.weixin.qq.com/s/sa0yWgawgfHco9_7dQ5wyg)
+
+## 新手推荐
+
+### 🐕 [Overriding UserDefaults for improved productivity](https://www.avanderlee.com/xcode/overriding-userdefaults-launch-arguments/)
+
+[@AidenRao](https://weibo.com/AidenRao):应用内的 UserDefaults 是一个易于访问的数据存储,用于保存状态,统计信息和其他与应用程序相关的数据。我们可以通过配置启动参数覆盖 UserDefaults,无需修改代码,更改 UserDefaults 默认值,提高开发效率。
+
+### 🐕 🚧 [Setting default values for NSUserDefaults](https://sarunw.com/posts/setting-default-value-for-nsuserdefaults/)
+
+[@红纸](https://github.com/nianran):接上篇 UserDefaults 描述,我们可以通过 `register(defaults:)` 函数进行设置相关 key 的初始值,register 的设置仅会在 key 对应的 value 为 nil 的情况下才会进行设置,值得注意的是 register 并不会写入磁盘,仅仅只是运行时赋予了初始值。
+
+### 🐎 [UIButton 状态新解](https://mp.weixin.qq.com/s/nD-HV-gkKJr1MWU_agwkyg)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):UIButton 作为日常开发的常用控件,系统为我们提供了相当丰富的功能以及可定制性。本文从单一状态,到组合状态,到自定义状态层层深入了介绍了 UIButton 的状态在日常开发中的应用。只用状态来驱动 UI 一直是程序员开发中的美好设想,本文算是从一个基本控件上给出了实现参考。
+
+### 🐎 [Flutter 组件的事件传递与数据控制 | 开发者说·DTalk](https://mp.weixin.qq.com/s/mO2lT_s1s5a94KeirPpeVg)
+
+[@邦Ben](https://weibo.com/linwenbang/):Flutter 开发始终绕不过状态管理,这篇文章使用最基础的代码讲解了一下如何合理的进行传递数据和事件。非常适合入手的时候看下。
+
+文章也简单总结了:
+
+- 改变自己 state 的数据,setState 向 child 传递新数据
+- 接受 child 的事件回调
+- 向 child 更新目标数据,child 监听数据的变化,更加细节的改变自己的 state
+- 向 child 传递 controller,全面控制 child 的 state
+
+
+### 🐕 [Debugging on iOS 14 with Xcode 11](https://hybridcattt.com/blog/debugging-on-ios14-with-xcode-11/)
+
+[@J_Knight_](https://github.com/knightsj):文章分享了能让 iOS 14 在旧版本的 Xcode 上运行的方法,以及将调试器附加到正在运行的应用程序的方法。另外也结合了代码和截图分享了在没有添加调试器的情况下查看变量的方法。
+
+## 文章
+
+### 🌟 🐕 [iOS main in Assembly](https://suelan.github.io/2020/08/18/20200817-ios-main-in-assembly/)
+
+[@五子棋](https://satanwoo.github.io):首先这是一篇全英文的博客,这就很棒啦。其次作者通过分析 iOS 中的 main 函数,来逐步深入其本质是如何实现的。在剖析过程中穿插了一些基本的汇编知识,是一篇比较好的入门实践文章。
+
+### 🌟 🐕 [Crash Reporting with MetricKit](https://www.chimehq.com/blog/metrickit-crash-reporting), [Crash Reporting with MetricKit, Part 2](https://www.chimehq.com/blog/metrickit-crash-reporting-part-2), [iOS 性能优化:使用 MetricKit 2.0 收集数据](https://mp.weixin.qq.com/s/cbP0QlxVlr5oeTrf6yYfFw)
+
+[@老驴](https://www.weibo.com/6090610445):三篇关于 MetricKit 的文章,让你一次读懂 MetricKit。今年 WWDC 上,苹果把去年引入的 MetricKit 升级到了 2.0,主要新增了三种指标:CPU 指令、滚动卡顿和应用程序退出。MetricKit 作为苹果官方支持的 Metrics 工具链,也在不断的迭代完善中,相信未来,一定会在 iOS 中,有更重要的地位。
+
+### 🌟 🐕 [初探 Objective-C/C++ 异常处理实现机制](https://mp.weixin.qq.com/s/4Rcaee6kwWmrS3v_M9y0KQ)
+
+[@Leo](https://github.com/leomobiledeveloper):异常处理是语言的重要特性,Objective C 和 C++ 也不例外。日常开发中我们更多的会关注如何捕获和处理异常,很少会关注异常底层的实现原理。本文从 C++ 异常出发,从汇编和 llvm 源码的角度进行了探索和思考,介绍了 Objective C 和 C++ 的异常实现机制,除了内容上干货很多,分析的思路也值得借鉴。
+
+### 🐕 [Podspec 文件分析](https://mp.weixin.qq.com/s/CBkO-UfiPTMY5drIX_ZhKQ)
+
+[@JonyFang](https://github.com/JonyFang):在前面期的 [Podfile 的解析逻辑](https://mp.weixin.qq.com/s?__biz=MzA5MTM1NTc2Ng==&mid=2458324199&idx=1&sn=3886bbbcef3640bf97e16fcec34b451f&chksm=870e03feb0798ae84ab4b5dab26dfbe8ebbac0bca8491493fa4919f6069bfef58cd04df5ab34&scene=21#wechat_redirect)中,作者以 Xcode 工程结构作为切入点介绍了 Podfile 背后对应的数据结构,剖析了 Podfile 文件是如何解析与加载,及最终如何进行工程构建。本篇介绍了 CocoaPods-Core 中的另一个重要文件 Podspec。
+
+内容结构:
+
+- PodSpec 配置及CoC规则
+- 介绍 spec 核心数据结构
+- spec from json
+- spec from ruby
+- 实践创建一个 pod
+
+### 🐎 [Apple’s use of Swift and SwiftUI in iOS 14](https://blog.timac.org/2020/0927-state-of-swift-ios14/)
+
+[@邦Ben](https://weibo.com/linwenbang/):这篇文章主要是分析了 iOS 14.0 系统中使用有多少内置程序在使用 `Swift`(注意:只要用到一行 Swift 也会被计算)。
+
+iOS 13.1: `Swift` 141 个, `SwiftUI` 5 个。
+iOS 14.0: `Swift` 291 个, `SwiftUI` 43 个。
+
+由此可见,Apple 内部推进 Swift 逐年增大,期望 Swift 的进一步发展。
+
+### 🐕 [从渲染原理出发探究 Flutter 内存泄漏](https://mp.weixin.qq.com/s/wPxXUv58sM9Fu3WOmP4JPA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 内存的高低是评判一款app的性能优劣的重要的指标之一。如何更简单的帮助开发者分析、暴露且解决内存泄漏问题,几乎是每一个平台或框架、开发者亟需的一个的"标配"的feature。本文由闲鱼团队分享,从渲染树的角度去探寻flutter内存泄漏的方法。
+
+### 🚧 🐕 [How iOS Apps Adapt to the various iPhone 12 Screen Sizes](https://hacknicity.medium.com/how-ios-apps-adapt-to-the-various-iphone-12-screen-sizes-e45c021e1b8b)
+
+[@水水](https://www.xuyanlan.com): 在 2020 年 10 月的发布会上,苹果发布了四款 iPhone 12 机型:iPhone 12 mini、iPhone 12、iPhone 12 pro 和 iPhone 12 pro max。iPhone 12 和 12 pro 的屏幕分辨率完全相同,行为也完全相同。所以只有三个屏幕分辨率要考虑,作者列举了这几个机型以及之前的一些机型的标准缩放和显示缩放, 希望对你的机型适配有所帮助。
+
+### 🐕 [Swift deinit is (sometimes) not called for throwing or failable initializers](https://www.jessesquires.com/blog/2020/10/08/swift-deinit-is-not-called-for-failable-initializers/)
+
+[@EyreFree](https://github.com/EyreFree):当 `init?()` 失败返回 `nil` 或抛出异常时,`deinit` 并不会被调用。本文对 Swift 中这一关于 `init` 与 `deinit` 的边缘情况进行了介绍,并对这一设计的历史原因和设计初衷进行了讨论。
+
+## 音视频
+
+### 🐕 [“A huge year for SwiftUI” a WWDC20 special with Josh Shaffer and Eliza Block](https://www.swiftbysundell.com/podcast/76/)
+
+[@老驴](https://www.weibo.com/6090610445):今年苹果在 SwiftUI 上发力不少,iOS 14 当中像 Widget 这样的新功能只能用 SwiftUI 来实现,苹果想要通过这样的方式来推广 SwiftUI。这期,就有来自苹果的 Josh Shaffer 和 Eliza Block 来参与讨论 SwiftUI 今年的改动和 SwiftUI 的未来。
+
+> @[alfredcc](https://github.com/alfredcc) 推荐
+
+## 赞助者
+
+[Woodpecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12): 是一款 iOS 开发调试辅助工具,提供沙盒文件、UserDefaults、视图层级在线查看和编辑等功能,在实际工作中能极大提升开发效率和幸福感!
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 阿里巴巴淘系端智能团队招人,主要的工作是 MNN 业界知名推理引擎 / AR 美妆、渲染系统及框架设计 / AI 配套软件设施 / 服务端推荐系统。
+> Android / 渲染 / CV 算法 / 服务端 都缺人。
+> 坐标杭州北京,不 PUA,机会大,多劳多得,来就一起干,有意者加 V 号:satanwoo。
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#133-2020.10.26.md b/Reports/2020/#133-2020.10.26.md
new file mode 100644
index 000000000..bbd1c86c0
--- /dev/null
+++ b/Reports/2020/#133-2020.10.26.md
@@ -0,0 +1,109 @@
+# 老司机 iOS 周报 #133 | 2020-10-26
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**热烈欢迎社区老朋友 [Leo](https://github.com/LeoMobileDeveloper) 加入周报编辑组 目前就职于字节跳动,负责抖音 和 TikTok 基础体验优化。**
+
+## WWDC20
+
+本周在周报公众号上我们推送了 3 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [iOS 性能优化:用电池和性能 API 识别性能趋势](https://mp.weixin.qq.com/s/mX4PXtIG7eQGD1tDNKNNFw)
+- [iOS 稳定性:App 被终止的原因](https://mp.weixin.qq.com/s/l8KjyTxCJis-tFUitAj-0g)
+- [iOS 性能优化:用 Xcode Organizer 诊断性能问题](https://mp.weixin.qq.com/s/XiiQpzY7mJqdD96Lpja_4Q)
+
+## 新闻
+
+### [周报 1024 活动 & 书单推荐](https://mp.weixin.qq.com/s/h1jGebb-t4EYo8ENv2Kdhw)
+
+[@Parsifal](https://github.com/ParsifalC):上周六是 1024 程序员节,周报也给大家发了一波福利,截止现在所有抽奖活动均已结束,如果你中奖了但未收到周报微信联系,请添加「iTDriverr」私聊~另外未中奖的朋友,依然可以使用当当网优惠码自行购买,书单真的很不错!
+
+## 新手推荐
+
+### 🐎 [The Ultimate Guide to the SwiftUI 2 Application Life Cycle](https://peterfriese.dev/ultimate-guide-to-swiftui2-application-lifecycle/)
+
+[@Parsifal](https://github.com/ParsifalC):自去年 Xcode 11 与 iOS 13 发布时,苹果就引入了 `SceneDelegate` 来替代 `AppDelegate` 接管了 App 生命周期的管理。今年 WWDC SwiftUI 2.0 亮相,同时苹果也介绍了其全新的 App 生命周期管理方式。这篇文章很细致地介绍了如何使用新的 API 来进行 App 生命周期管理。
+
+## 文章
+
+### 🌟 🐢 [iOS 性能优化实践:头条抖音如何实现 OOM 崩溃率下降 50%+](https://mp.weixin.qq.com/s/4-4M9E8NziAgshlwB7Sc6g)
+
+[@Leo](https://github.com/leomobiledeveloper): OOM 率是衡量 App 整体质量的重要指标之一。目前大家普遍采用排除法来判断 OOM ,能够较为准确的判断出线上用户发生了 OOM ,但归因分析手段却比较欠缺,导致定位修复问题困难。字节跳动技术团队提出了一种基于内存快照技术的方案 - Memory Graph,其原理是在快发生 OOM 的时候 dump 内存快照,建立内存节点的引用关系,能够大幅度提高排查线上 OOM 问题的效率,在头条抖音落地后 OOM 率下降50%+。本文结构清晰,内存相关研究非常深入,是一篇值得花时间仔细阅读的好文。
+
+### 🌟 🐢 [深入理解 Dart 空安全](https://mp.weixin.qq.com/s/MEL5kokoyb0CJcjrPpo12w)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 空安全已经成为现代编程语言的一个标配,比如 Swift 中的 Optional。 空安全机制,使得我们可以更加优雅的编写判空代码,同时代码健壮性也得到了极大提升。 Dart 自然也不例外,自 Dart 2.0 以后引入了空安全机制,但少有人能完整理解,甚至于现在可以在很多 Flutter 项目中看不到相应的代码,本文由 Google Dart 团队工程师 Bob Nystrom 分享,为你详细讲解 Dart 空安全机制,强烈推荐。
+
+### 🐎 [@warn_unqualified_access](https://fivestars.blog/swift/warn_unqualified_access.html)
+
+[@xiaofei86](https://weibo.com/xuyafei86):在最近的 Swift 版本中,我们已经看到了一系列新的 attributes,如 @unknown,@propertyWrapper,@main 等。在这篇文章中,作者将带领我们了解一个少为人知的,但同样有用的旧有属性 @warn_unqualified_access。其在 Swift 2 中悄悄引入,用来帮助我们消除调用顶级函数、静态方法、实例方法时的歧义。感兴趣的同学可以详细阅读。
+
+### 🐕 [自研 iOS 热更新机制——OCPack 技术方案总结](https://mp.weixin.qq.com/s/x7c5mHJINcWpGCuHPDNNPw)
+
+[@J_Knight_](https://github.com/knightsj):本文分享了一种在 iOS 平台上的 App 动态化技术方案:OCPack。OCPack 提供的工具链可以将 .m 文件生成 .bin 格式的 patch 文件,该文件可以在一个基于 Native 环境的虚拟栈机加载并执行,从而达到动态化更新的效果。作者从编译模块、汇编模块、加载模块和执行模块来分别讲解了 OCPack 方案的实现方式,同时也介绍了该方案的优势和未来的迭代计划。
+
+### 🐎 [App 崩溃现场取变量名和其实际值对应关系(不只是寄存器)](https://juejin.im/post/6883160410736820231)
+
+`.DYSM` 是编译过程中产生的符号文件,一般用于崩溃日志的解析。许多同学已经知道在拿到 `.DYSM` 文件后如何将崩溃栈中的指令地址转换为实际代码文件及其对应行号,可是如何得到崩溃现场当前方法中各个变量名和其当前值(而不是只有寄存器)呢?因为这样也更有助于我们更快更准确地去定位问题。本文通过实践解答了这个问题,感兴趣的同学可以了解一下。
+
+> 由 [jzhang46](https://github.com/jzhang46) 自荐。
+
+### 🐕 [Evolution of the programming languages from iPhone OS 1.0 to iOS 14](https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/)
+
+[@Parsifal](https://github.com/ParsifalC):从最早的 iPhone OS 到现如今的 iOS,苹果在移动端的系统已经迭代了 14 个版本。作者写了个脚本,分别统计了 C/C++/Objective-C/Swift 以及 SwiftUI 在 iPhone OS 1.0 - iOS 14 间的使用比例,最终通过柱状图非常直观地展示了这个变迁史。以 iOS 14 为例,作者的统计结果是:
+- Objective-C:88%
+- C++:17%
+- Swift:8%
+- C:8%
+- SwiftUI:1%
+
+除了整个统计数据比较有意思,作者还很详细地整理了他是如何写这个脚本的,对于想要做类似统计的朋友来说还是很有参考意义。
+
+## 工具
+
+### [GoSwifty](https://github.com/rsrbk/GoSwifty)
+
+[@Parsifal](https://github.com/ParsifalC):一个统计项目中 Swift 和 OC 代码比例的小工具,由 Swift 编写,正在做 OC 老项目迁移的朋友可以用起来跟进重构进度。
+
+## 代码
+
+### [SYWebViewBridge](https://mp.weixin.qq.com/s/JDCyWg1AYemxbnFbvY5E9w)
+
+[@享耳先森](https://github.com/iblacksun):SYWebViewBridge 是一个 Hybrid 与 Native 通信的开源库,基于自定义 scheme 实现,目前还处于 Beta 阶段,大家可以看下具体实现思路。
+
+### [YYJSON](https://github.com/ibireme/yyjson)
+
+[@Parsifal](https://github.com/ParsifalC):由 [YYKit](https://github.com/ibireme/YYKit) 的作者 [ibireme](https://github.com/ibireme) 基于 ANSI C 编写的高性能的 JSON 库。作者对性能优化一直有比较深刻的研究,YYJSON 依然沿袭了这一特点,与主流框架对比在性能上有较明显提升。
+
+## 赞助者
+
+[Woodpecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12): iOS开发辅助工具,提供沙盒文件、UserDefaults、视图层级在线查看和编辑等功能,在工作中能极大提升开发效率,Mac App Store免费下载!
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#134-2020.11.02.md b/Reports/2020/#134-2020.11.02.md
new file mode 100644
index 000000000..221f53f15
--- /dev/null
+++ b/Reports/2020/#134-2020.11.02.md
@@ -0,0 +1,113 @@
+# 老司机 iOS 周报 #134 | 2020-11-02
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [苹果全新订阅服务通知现已在分发环境中使用](https://developer.apple.com/news/?id=an960mux)
+
+[@Parsifal](https://github.com/ParsifalC):苹果向开发者宣布,现已可在分发环境中使用新的订阅服务通知。苹果提供了用户订阅状态的实时更新通知,方便开发者更快了解自己服务的订阅情况。
+
+## 新手推荐
+
+### 🐎 [Deep Dive Into The Pubspec.yaml File](https://medium.com/flutter-community/deep-dive-into-the-pubspec-yaml-file-fb56ac8683b9)
+
+[@邦Ben](https://weibo.com/linwenbang):该文是 flutter pubspec.yaml 文件配置的详细介绍,如果刚接触的同学,可以进行了解一下各个配置项的作用。
+
+## 文章
+
+### 🌟 🐢 [Swift 发布并发功能的开发路线图](https://forums.swift.org/t/swift-concurrency-roadmap/41611)
+
+[@四娘](https://kemchenj.github.io/):并发功能在 Swift 社区一直呼声很高。终于,上周五开发组在论坛发布了开发路线图,其中的内容包括:
+
+- [async/await](https://forums.swift.org/t/concurrency-asynchronous-functions/41619)
+- [Task API 和 Structured Concurrency](https://forums.swift.org/t/concurrency-structured-concurrency/41622)
+- [Actor & Actor Isolation](https://forums.swift.org/t/concurrency-actors-actor-isolation/41613)
+- [Concurrency Interoperability with Objective-C](https://forums.swift.org/t/concurrency-interoperability-with-objective-c/41616)
+- Async handlers
+
+目前这些功能已经完成了初步设计,正在紧锣密鼓地进行实现,并且也在论坛里将草案发了出来,感兴趣的同学可以点击上面的链接查看并参与讨论。
+
+另外值得一提的是开发组打算为此优化 Objective-C 的桥接,**OC 里基于回调的 API 在导入到 Swift 时会自动合成 async 版本,并且 async/await 支持向后部署**,开发组也在 GitHub 上[提供了 API 预览](https://github.com/DougGregor/swift-concurrency-objc/pull/1/files)。
+
+### 🌟 🐢 [抖音品质建设 - iOS启动优化《原理篇》](https://mp.weixin.qq.com/s/3-Sbqe9gxdV6eI1f435BDg)
+
+[@Leo](https://github.com/leomobiledeveloper):抖音品质建设系列文章,不仅详细介绍了 iOS 13后的 dyld3 启动流程,还从编译期到运行时深度解读了影响启动速度的每一步,包含了很多抖音基础体验团队的深入研究沉淀,是一篇值得仔细阅读的文章。
+
+### 🌟 🐎 [网易云音乐 iOS 14 小组件实战手册](https://mp.weixin.qq.com/s/gFd8fkJBkQd5RpFSD0P8Ig)
+
+[@Damien](https://github.com/ZengyiMa):苹果在今年的 WWDC20 上发布了小组件(WidgetKit),支持在 iOS、iPadOS 主屏幕展示动态信息和个性化内容,这极大增强了主屏幕上的交户内容,对 App 而言也带来了新的流量入口,本文展示了网易云音乐团队在开发适配 iOS 14 小组件上的工作细节,内容包括和主 App 数据通信、SwiftUI 页面编写、网络数据请求、Widget 数据刷新、点击跳转等等,对于正在开发和适配 Widget 的同学有很大的学习价值。
+
+### 🌟 🐢 [他把闲鱼APP长列表流畅度翻了倍](https://mp.weixin.qq.com/s/dlOQ3Hw_U3CFQM91vcTGWQ)
+
+[@JonyFang](https://github.com/JonyFang):业务快速迭代过程中,App 长列表滑动流程度逐渐恶化,对用户浏览内容体验产生伤害。闲鱼 App 以 Flutter 和原生 Native 的混合工程存在,本篇分享了 Android 原生、Flutter 页面和优化思路。基于主流优化方案之上,闲鱼也做了一些不一样的优化。如基于用户体验为导向构建了流畅度指标;针对指标,自建流畅度检测工具,支持无侵入、跨平台、自动化;Android 显示 ViewDataUnbinder 组件在复杂业务逻辑中快速抽离 UI 操作;Flutter 修改 Flutter Engine 源码以支持列表 Element 的复用;Flutter 实现大 Widget 分帧上屏组件;Flutter 差值器算法优化。在我们自己项目的优化过程中,思路可以拿来作为参考。
+
+### 🐎 [如何知道一个锁到底被哪个线程占用?](https://mp.weixin.qq.com/s/EUxx23NBsaPX2KG6HVG-cQ)
+
+[@AidenRao](https://weibo.com/AidenRao):在多线程环境下调试或定位问题时,有时我们会发现某重要线程被卡住在等待某个锁上,但具体是哪个线程或哪段代码拿了锁又无法一下看出来。几种常用的锁,其实都记录了 owner 信息,例如 pthread_mutex_t 结构体里有一个 \__data.\__owner 字段,通过简单的取偏移办法,就能在运行时定位到锁当前的 owner 线程。
+
+### 🐎 [arm64e 架构简介——指针验签 ](https://mp.weixin.qq.com/s/a5e0T51kH9NIVKJpRyg4hQ)
+
+[@SatanWoo](https://satanwoo.github.io):arm64e 中一个很重要的特性就是 Pointer Authentication。通过对一些涉及指令跳转相关地址进行加签校验,可以有效的避免常见的返回值攻击等。不过本文的写的不是非常的具体,建议读者朋友自行搜索相关的资料进行深入了解。
+
+### 🐕 [Useful (and Obscure) Foundation Types in Swift](https://medium.com/better-programming/useful-and-obscure-foundation-types-in-swift-4f2b2c42354e)
+
+[@EyreFree](https://github.com/EyreFree):苹果的 Foundation 库为开发者提供了很多 iOS 日常开发必需的东西,其中有一些数据类型大家平时用的比较少,但是了解它们可以帮助我们编写很多不必要的代码,比如本文介绍的 NSScanner、NSCountedSet、NSCache、NSOrderedSet、NSByteCountFormatter、NSDataDetector、CFBinaryHeap。
+
+### 🐎 [客户端开发基础知识——写文件避“坑”指南](https://juejin.im/post/6885630755805626375)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):尽管写文件在客户端开发过程中是非常常见的操作,但是依然会时不时的遇到一些奇怪的问题。诸如读写文件不一致、写入过程内容丢失等。本文会对文件读写相关的几个 API 和其内部机制进行详细讲解,并对常见的几个问题一一解答。
+
+### 🐕 [Keeping expansion state of OutlineDisclosures using NSDiffableDataSource SectionSnapshot on UICollectionView DiffableDatasource](https://crsantos.info/uicollectionviewdiffabledatasource-outline/)
+
+[@老峰](https://github.com/Gesantung):去年 Apple 给 UICollectionView 引入 Diffable Data source API,通过 Snapshots 可以高效更新 UI。 本文作者分享了在使用 UICollectionViewDiffableDatasource 实现展开收起效果过程中遇到刷新数据自动收起的问题,以及通过使用 SectionSnapshotHandler(available since iOS 14) 来处理的方案,有类似需求的同学可以参考。
+
+## 工具
+
+### [7 Essential iOS Developer Tools](https://medium.com/better-programming/7-essential-ios-developer-tools-6bbc8ce53675)
+
+[@Parsifal](https://github.com/ParsifalC):无论你是刚入门的小萌新还是有经验的老司机,这 7 款工具都能够帮助你提效。
+
+- Swift Package Index:Swift 库的检索网站,已收录超过 3000 多个库,其对库的版本兼容等信息展示形式很清晰直观。
+- Image Optim:图片压缩工具,可以有效帮助你进行 App 图片资源瘦身,另外周报曾经推荐过的 [Crunch](https://github.com/chrissimpkins/Crunch) 也很不错。
+- SF Symbols:苹果官方维护的 SF Symbols 集
+- Dribbble:在设计师群体中很受欢迎的一个展示自己作品的网站,如果想找一些非常酷炫的交互效果,这里是一个不错的选择
+- Make App Icon:为你自动生成所有尺寸大小的 App Icon,如果你还没有 App Icon 又想自己设计一个,这里十分推荐周报编辑 [Joseph](https://github.com/josephchang10) 开发的 [图标设计器](https://apps.apple.com/cn/app/%E5%9B%BE%E6%A0%87%E8%AE%BE%E8%AE%A1%E5%99%A8-app-icon-maker/id1391581924)。
+- ShotBot 3.0:App 市场图生成工具,拥有许多免费的模板和设备比例支持
+- TermsFeed:各类协议生成器,App 审核必备。不过看情况很多项是需要付费的。
+
+## 赞助者
+
+[Woodpecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12): iOS 开发辅助工具,提供沙盒文件、UserDefaults、视图层级在线查看和编辑等功能,在工作中能极大提升开发效率,Mac App Store免费下载!
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 飞书业务的团队成员来自全球互联网顶尖企业,目前在北京、武汉、上海、杭州、深圳、广州和美国旧金山等均设有团队分支。高于行业平均水平的薪金待遇,六险一金、弹性工作、租 房补贴、免费三餐,你值得拥有!
+> 简历发送至 hi@inico.me
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#135-2020.11.09.md b/Reports/2020/#135-2020.11.09.md
new file mode 100644
index 000000000..6fd51dcdb
--- /dev/null
+++ b/Reports/2020/#135-2020.11.09.md
@@ -0,0 +1,101 @@
+# 老司机 iOS 周报 #135 | 2020-11-09
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [App Store Connect 已包含 app 隐私相关问题](https://developer.apple.com/cn/news/?id=vlj9jty9)
+
+[@Parsifal](https://github.com/ParsifalC):苹果对用户隐私数据保护的又一措施。在用户下载 App 之前,开发者必须让用户知晓可能被收集的信息以及该信息是否会用于跟踪他们的行为。从 2020 年 12 月 8 日起,提交至 App Store 的新 app 和 app 更新都将需要包含此信息。
+
+## 文章
+
+### 🌟 🐢 [Flutter 中的 Tree Shaking 机制初探](https://mp.weixin.qq.com/s/Uv6vKiESZVplTYQV9T07Yg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Tree Shaking 是一种死代码消除(Dead Code Elimination)技术,这一想法起源于 20 世纪 90 年代的 LISP。其思想是:一个程序所有可能的执行流程都可以用函数调用的树来表示,这样就可以消除那些从未被调用的函数。本文是闲鱼技术探究工程一体化的过程中对 Flutter 的 Tree Shaking 机制探究的科普文,强烈推荐.
+
+### 🐕 [Swift KeyPaths under a different optic](https://www.47deg.com/blog/keypaths-optics/)
+
+[@极速男孩](https://github.com/ztlyyznf001):Optics 可以给一个语言提供了简单地访问或修改整个数据结构各个部分的方法。这篇文章主要介绍了如何利用 key paths 来实现 Optics 的模型,来实现深度嵌套的不可变数据结构的 get 和 set 方法。更多关于 Optics 的内容可以参考[这篇文章](https://www.47deg.com/blog/optics/)。
+
+### 🐕 [Swift 编译慢?请看这里,全套开源](https://juejin.im/post/6890419459639476237)
+
+[@JonyFang](https://github.com/JonyFang):主要介绍 [cocoapods-imy-bin](https://github.com/MeetYouDevs/cocoapods-imy-bin) 项目对 Swift 二进制化的支持。分享了 Swift 二进制化过程中遇到的一些问题及对应的解决方案。
+
+cocoapods-imy-bin 特征:
+
+- 无入侵
+- 轻量。不受耦合或组件化的影响
+- 支持自动化使用
+- 支持 `use_frameworks!`
+- 支持 Swift 项目二进制化编译
+
+> 由 [Mr.Coder](https://github.com/su350380433) 自荐
+
+### 🐕 [Bridging Native UI Components in the React Native](https://www.netguru.com/codestories/bridging-native-ui-components-in-the-react-native)
+
+[@J_Knight_](https://github.com/knightsj):本文作者通过一个简单的 Demo 和 iOS、Android 以及 JS 三端的代码,分享了如何桥接原生的 UI 组件到 React Native 显示,以及原生和 React Native 的数据通信的方法。
+
+### 🐎 [Swift 中使用 Option Pattern 改善可选项的 API 设计](https://onevcat.com/2020/10/use-options-pattern/)
+
+[@zvving](https://github.com/zvving):线上项目应用 SwiftUI,除了 Widget 目前可落地的场景还不够多。业务场景或许有些限制,学习探索的思路则不应该局限。就像[喵神](https://onevcat.com/tabs/about/)所说:『SwiftUI 中提供了很多“新颖”的 API 设计思路和 Swift 的使用方式,我们可以进行借鉴,并反过来使用到普通的 Swift 代码中。』
+
+这篇文章中,作者从交通灯实际例子出发,探讨可配置交通灯不同实现的优劣。通过 Option Pattern,可以帮助我们在不增加存储属性的情况下,提供简洁、高效、类型安全的配置方案。试试借鉴思路,相信你也可以用到自己的项目中。
+
+### 🐎 [Formatting numbers in Swift](https://www.swiftbysundell.com/articles/formatting-numbers-in-swift/)
+
+[@Damien](https://github.com/ZengyiMa): 在 Swift 中我们应该如何去格式化我们的数字格式呢?你可以使用 NumberFormatter 类来实现你的需求,NumberFormatter 可以处理多国家/地区的数字分隔符、货币数字符号、度量衡符号以及和 Codable 结合去用,如果你的 App 的面向国际化的用户,使用 NumberFormatter 绝对会让你提高数字格式化的效率。
+
+### 🐕 [围观 Github 上 Flutter 评论最多的 Issue](https://juejin.im/post/6888884127634817038)
+
+[@Parsifal](https://github.com/ParsifalC):Flutter 虽然是近年来最火爆的跨端方案,但它的 Bug 之多也是一直被社区开发者所诟病的。Flutter 体系中万物皆 widget,而负责管理 widget 状态 的是 State,目前 Flutter Repo 上被最多关注评论的 issue 也是围绕着 `State` 这一概念。这个 issue 由 [provider](https://github.com/rrousselGit/provider) 和 [flutter_hooks](https://github.com/rrousselGit/flutter_hooks) 的作者 [@rrousselGit](https://github.com/rrousselGit) 提出,他表示 [Flutter 的复用状态逻辑要么太麻烦要么太难](https://github.com/flutter/flutter/issues/51752),用 Hooks 的话就能彻底解决这个问题,但 Flutter 团队似乎并不认可这一做法。整个 issue 一共有 30 多位开发者参与讨论,从 3 月份提出至今已累计了 400 多条评论。本篇文章带着大家强势围观了这次激辩,吃完瓜感觉不够过瘾,可以自己再爬爬楼~
+
+## 工具
+
+### [ImportSanitizer](https://github.com/SketchK/ImportSanitizer)
+
+在 iOS 开发中,我们常常会看到各种引入头文件的方式,往往这些方式都可以正常编译和运行。但其实一些非标准的写法可能会导致项目的 `search path` 变得冗长,也有可能导致编译不过。ImportSanitizer 是一款能够帮助开发者自动修复工程头文件引用方式的 CLI 工具,它非常简单易用,想排查下工程头文件引入问题的同学可以使用试试。
+
+### [Arena](https://github.com/finestructure/Arena)
+
+[@Parsifal](https://github.com/ParsifalC):macOS 端的 CLI 工具,可以让我们快速创建一个使用指定 SPM 包的 Swift Playground 工程,并且同时支持 GitHub 仓库引入和本地引入。
+
+## 音视频
+
+### 🐢 🚧 [Chris Lattner: The Future of Computing and Programming Languages | Lex Fridman Podcast #131](https://www.youtube.com/watch?v=nWTvXbQHwWs)
+
+[@老驴](https://www.weibo.com/6090610445):Chris Lattner 和 Lex Fridman 一对一详细聊语言和未来计算的发展,其中有谈到很多关于 Swift 以及其他基础计算相关的话题。Chris 现在就职于 SiFive,是一家设计 RISC-V 芯片的公司。值得一提的是,作为开源指令集的代表,RISC-V 未来也很有可能是 ARM 构架的有力挑战者。
+本视频可以作为通勤路上的一个不错的收听选项。
+
+## 赞助者
+
+[Woodpecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12): iOS 开发辅助工具,提供沙盒文件、UserDefaults、视图层级在线查看和编辑等功能,在工作中能极大提升开发效率,Mac App Store免费下载!
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#136-2020.11.16.md b/Reports/2020/#136-2020.11.16.md
new file mode 100644
index 000000000..92c573099
--- /dev/null
+++ b/Reports/2020/#136-2020.11.16.md
@@ -0,0 +1,94 @@
+# 老司机 iOS 周报 #136 | 2020-11-16
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [使你的 Metal 应用程序更好地运行在 Apple Silicon 架构上](https://mp.weixin.qq.com/s/sQKC4Bf_NLYK6ZuMYOUmuw)
+- [在 Apple Silicon 上优化你的 Metal 应用程序](https://mp.weixin.qq.com/s/QQ2cPufxwZoWCCB3-1MxfA)
+
+## 新闻
+
+### [TestFlight 3](https://developer.apple.com/news/releases/?id=11112020)
+
+[@Parsifal](https://github.com/ParsifalC):TestFlight 是苹果官方推荐的内测分发渠道,但一直以来都不能像 App Store 一样支持自动更新,这对于参与内测的用户十分不友好,也同样让开发者增加每次邀请内测的成本。TestFlight 3 终于带来了自动更新这一功能,目前还不是默认开启,升级 TestFlight 3 后首次进入 App,苹果会提示你是否开启,之后就需要到内测 App 详情页中开启手动开启。
+
+## 新手推荐
+
+### 🐎 🚧 [10 Tips & Shortcuts You Should Be Using Right Now On Xcode](https://medium.com/@mpesate/10-tips-shortcuts-you-should-be-using-right-now-on-xcode-2e9e1b01511e)
+
+[@Parsifal](https://github.com/ParsifalC):非常实用的提高你编码效率的 10 个快捷键,图文并茂,一看就会用,老少咸宜~
+
+## 文章
+
+### 🌟 🐢 [The Missing Guide for Mac Catalyst Apps](https://www.craft.do/maccatalyst-guide)
+
+[@Parsifal](https://github.com/ParsifalC):本周双十一,苹果在本年度最后一次 Apple Events 上发布了全新的 ARM 芯片 M1、以及三款搭载了 M1 的 Mac:MacBook Air、MacBook Pro 13‘ 和 Mac Mini。Mac Catalyst 赋予了 iOS/iPad OS App 能够直接运行在 macOS 上的能力。但实际上,这些原移动端的 App 直接移植到 macOS 上运行,仍然不能尽如人意。Craft 团队早在一年前就开始 Catalyst app 的研究,这次他们将自己的经验整理成一份非常详尽的引导,弥补了苹果官方并不完善的 Catalyst app 文档。引导分为设计、研发和发布测试三大部分,对于想尝试 Catalyst app 的开发者和团队非常有借鉴意义。
+
+### 🐎 🚧 [XCFrameworks — New Format for Packaging Frameworks in iOS](https://medium.com/dev-jam/xcframeworks-new-format-of-packaging-frameworks-in-ios-306cda40b24f)
+
+[@Leo](https://github.com/LeoMobileDeveloper):随着 Apple 逐步切换到 Apple Silicon 和 Xcode 12 的发布,传统的使用 lipo 创建 Fat Frameworks 的方式不再生效,因为模拟器和 iOS 都使用 arm64 的架构,可以通过 WWDC 2019 推出的 XCFrameworks 来解决这个问题,后者可以把多平台的 Framework 打包成一个 Bundle 。
+
+### 🐕 [PodSpec 管理策略](https://mp.weixin.qq.com/s/Kb2IxY2E3soxSlGykNZTuQ)
+
+[@JonyFang](https://github.com/JonyFang):本文介绍了 PodSpec 仓库是如何被管理及 PodSpec 文件的更新和查找是如何进行的。
+
+Spec Repo 作为 PodSpec 的聚合仓库,记录着所有 pod 所发布的不同版本的 PodSpec 文件。Spec Repo 对应到 Core 的数据结构即为 Source,文中介绍了 Source 的依赖关系及版本迭代的一些优化改进。
+
+接着引出 Metadata,Metadata 的作用是用于记录 Source 所支持的 Cocoapods 的版本及仓库分片规则(文中以 AFNetworking 为例展开说明)。
+
+最后介绍了如何找到 Podfile 中限定版本号范围的 PodSpec。通过 Metadata 和 pod_name 得出 pod 所在目录,找到 pod 目录下的 Versions 列表,比较 Version 得出最终需要的 PodSpec 文件。同时引出 Semantic Versioning(语义化版本号)的作用及规则。
+
+### 🐕 [React Native 优化实践之拆包与预热](https://mp.weixin.qq.com/s/vh2TaGcGFXCz24nqRYbbLQ)
+
+[@looping](https://github.com/looping):我们在周报 [#127](https://github.com/SwiftOldDriver/iOS-Weekly/releases/tag/%23127) 期推荐过 [云音乐 React Native 体系建设与发展](https://juejin.im/post/6867722436369416206),这次网易云音乐团队又给我们带来了优化 React Native 打开速度的实践分享。他们通过业界通用的预热 + 拆分基础包方案进行改造,分散了容器初始化和基础库加载时间,最终达到双端非常明显的优化效果。虽然使用的是通用解决方案,但具体实践的思路细节也有值得参考学习的,有在做这块优化的同学可以相互对比一下,在优化策略上或许会有一些启发。
+
+### 🐎 [使用 Property Wrapper 为 Codable 解码设定默认值](https://mp.weixin.qq.com/s/jOyHRS2Wx6MJpuYuENhVgg)
+
+[@Damien](https://github.com/ZengyiMa):本篇是喵神(onevcat)的一篇精彩好文,本文介绍了一个使用 Swift Codable 解码时难以设置默认值问题,由此引出利用 Property Wrapper 给出了一种相对优雅的解决方式,来在 key 不存在时或者解码失败时,为某个属性设置默认值。这为编解码系统提供了更好的稳定性和可扩展性。
+
+### 🐎 [Debugging JSON Data in LLDB](https://soffes.blog/debugging-json-data-in-lldb)
+
+[@Parsifal](https://github.com/ParsifalC):LLDB 上直接打印 JSON String 的话,是不能清晰地看到 Key-Value 的。作者自己动手扩展了 LLDB 能力,使用新增的 JSON 命令就可以格式化输出 JSON String。
+如果你也有扩展 LLDB 的需求,不妨也像作者一样,自己动手试试~
+
+## 工具
+
+### [Periphery 2.0](https://github.com/peripheryapp/periphery/wiki/What%27s-new-in-Periphery-2.0)
+
+[@zvving](https://github.com/zvving):Periphery 是用于扫描 Swift 项目无用代码的工具。2.0 除提供 Comment Commands,SPM 支持等特性外,从根本上调整了对源码建立索引的方式:从 [老出问题的 SourceKit](https://github.com/peripheryapp/periphery/issues/49) 调整到 [Index-While-Building](https://docs.google.com/document/d/1cH2sTpgSnJZCkZtJl1aY-rzy4uGPcrI-6RrUpdATO2Q/edit),分析过程更快,结果更准确,值得及时跟进。
+
+## 赞助者
+
+[Woodpecker](https://apps.apple.com/cn/app/woodpecker/id1333548463?mt=12): iOS 开发辅助工具,提供沙盒文件、UserDefaults、视图层级在线查看和编辑等功能,在工作中能极大提升开发效率,Mac App Store免费下载!
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#137-2020.11.23.md b/Reports/2020/#137-2020.11.23.md
new file mode 100644
index 000000000..fa1d63f8d
--- /dev/null
+++ b/Reports/2020/#137-2020.11.23.md
@@ -0,0 +1,97 @@
+# 老司机 iOS 周报 #137 | 2020-11-23
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 4 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [使用 Metal 技术驾驭 Apple 图形处理器](https://mp.weixin.qq.com/s/k-4xTRtKAjHuiRiTPiN0rw)
+- [在 Apple Silicon 上优化你的 Metal 应用程序](https://mp.weixin.qq.com/s/rT8XcPUAvVdfXTleGw--jA)
+- [iOS 性能优化: 如何让使用 XCode Debugger 优化 Metal App](https://mp.weixin.qq.com/s/HU7F6o-ratWC8ehfDIrORg)
+- [国际化适配:使用 Xcode 构建助于本地化的布局](https://mp.weixin.qq.com/s/9iUNek72jZoqNJVLbPViVw)
+
+## 新闻
+
+### [Apple 宣布推出 App Store 小型企业计划](https://www.apple.com.cn/newsroom/2020/11/apple-announces-app-store-small-business-program/)
+
+[@JonyFang](https://github.com/JonyFang):苹果宣布推出 App Store 小型企业计划,新计划针对每年营收 100 万美元以下的小型企业,将 App Store 佣金降至 15%,该计划将于 2021 年 1 月 1 日正式启动。
+
+### [订阅优惠代码现已推出](https://developer.apple.com/cn/news/?id=g20wyc9c)
+
+[@Parsifal](https://github.com/ParsifalC):苹果对于自己的订阅服务新增的一项服务。优惠代码是一组独特的、由数字和字母构成的编码,用于为自动续期订阅提供折扣价格或免费优惠。使用 iOS 14 和 iPadOS 14 + 的用户可以在 App Store 或 App 内使用优惠代码兑换功能。
+
+## 文章
+
+### 🌟 🐕 [淘宝直播“一猜到底”——移动端实时语音识别技术方案及应用](https://mp.weixin.qq.com/s/jX7utUnk0BOnu7cVnjNe1w)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):淘宝直播 App 在今年双十一推出了「一猜到底」的直播答题新玩法,这个游戏的核心是用户的报价能否快速且正确的被识别。庞大数量的用户同时进行语音请求对服务压力和服务质量都是非常大的挑战。本文详细讲述了阿里内部多个团队,是如何在通力协作下,利用端智能 [MNN](https://github.com/alibaba/MNN) 深度学习框架实现工业界首个用于直播的移动端语音识别的。
+
+### 🐎 [新版 Mac 终于到货了!anandtech 最新 M1 芯片评测出炉](https://mp.weixin.qq.com/s/6RmvttZasIBDSki-ieENeg)
+
+[@Parsifal](https://github.com/ParsifalC):过去一周关于苹果最火的话题无疑是围绕着搭载 M1 芯片的 MacBook 和 Mac Mini 系列。这是一篇很硬核和专业的评测文,测评结果显示,M1 的内存带宽优于苹果此前的 A14 芯片,CPU 单线程、多线程性能都非常优秀,GPU 足以称霸集显,甚至可以媲美独显。有媒体表示苹果自己都未曾想到 M1 会强悍至此,更有朋友调侃到有生之年也能见到 MacBook 开始讲性价比了,库克此时若喊出“还有谁!”想必也是底气十足~
+
+### 🐕 [手淘双11最新实践:PopLayer 弹层领域研发模式升级](https://mp.weixin.qq.com/s/yYsWHv0kq7HK54e1kPBprw)
+
+[@老峰](https://www.github.com/gesantung):在精细化流量运营的今天,弹层作为一个可以带来高流量的强运营手段,已经从低频需求,变成了面向各类人群投放的高频需求,尤其在 2C 的研发需求中,我们经常会有各种活动弹窗紧急需求,但业务往往会遇到开发弹层难、慢,时间又很急的情况。
+
+手淘技术团队在本文中分享了一套快速搭建+可视化+多端多场景通用的 PopLayer 解决方案,具体介绍了搭投模式业务背景,架构,整体设计,包括可视化 IDE、运行时解析引擎 、ServerLess 等相关建设,感兴趣的同学不容错过。
+
+### 🐕 [UIView 动画降帧探究](https://juejin.cn/post/6896372391388119053)
+
+[@EyreFree](https://www.github.com/EyreFree):众所周知,iOS App 的刷新频率越接近越 60 FPS 越好。但是另一方面,我们也知道动画渲染的过程中需要消耗大量的 GPU 资源,所以给动画降帧则可以给 GPU 减负,降低 GPU 使用率峰值。在动画不复杂但是数量很多的情况下,给动画降帧并不会影响动画效果,此时降帧就能累计节约大量的 GPU 性能。本文介绍了作者基于 UIView animation block + UIViewAnimationOptionPreferredFramesPerSecond30 属性进行动画降帧的方案,可以较少改动代码而实现降帧的目的,有相应需求的同学不要错过。
+
+### 🐕 [实现 Native 异步回调 Flutter](http://yulingtianxia.com/blog/2020/10/25/Asynchronous-Callback-for-Flutter/)
+
+[@极速男孩](https://github.com/ztlyyznf001):Dart 和原生交互有多重选择,包括 channel ,阿里的 FlutterBoost,本文主要介绍了杨萧玉的 DartNative 是如何首先通过 DartFFI 和 libFFI 来实现 Native 和 dart 之间函数的绑定,然后通过 Port 相关的 API 来实现 OC 和 Dart 之间方法的相互调用,这样可以实现一些通过 channel 无法实现的,如 block, NSNotification 这类的方法。
+
+## 代码
+
+### [doesitarm](https://github.com/ThatGuySam/doesitarm)
+
+[@红纸](http://github.com/nianran):伴随着 M1 芯片的发布,Mac 软件适配也在同步进行,不少开发者协同整理了一份支持 ARM 架构的 APP 列表供大家参考。
+
+## 音视频
+
+### 🌟 🐕 [Discover Metal enhancements for A14 Bionic - Tech Talks - Videos - Apple Developer](https://developer.apple.com/videos/play/tech-talks/10858)
+
+[@莲叔](http://aaaron7.github.io/):近期随着苹果新 air 的评测陆续放出来,M1 芯片可谓赚足的眼球。看回移动端,iPhone 12 系列的 A14 仿生芯片也有了非常强劲的升级。这个视频是苹果工程师分享的 A14 芯片中的 GPU 能力升级,非常值得一看。因为其中的技术不仅仅只是苹果一些新特性,更是代表了未来图形渲染技术的发展方向。
+
+视频主要包含了四个部分:新的 shader 结构:重心坐标(barycentric coordinate)和形状 Id(primitive id), 新的纹理贴图模式,以及新的 SIMD batch 操作指令,新的 SIMD 矩阵乘法指令等。其中最有趣的是第一部分,我们都知道 Metal 相较于 OpenGL 最大的升级就是实现里的延迟渲染,让光照可以在 Fragment Shader 阶段之后来进行,以支撑更复杂的光线跟踪。通过 A14 新的 barycentric coordinate 和 primitive id 技术,可以让 Fragment Shader 产生 的 G-Buffer 进一步缩小为 Visibility Buffer,之后在光线跟踪的阶段重建出 Draw State 进行材质贴图和光照跟踪。相比之前的流程,大幅减少了复杂场景下的计算量。看下来感觉还是很激动人心的,喜欢渲染技术的同学不容错过。
+
+### 🐢 [Explore Live GPU Profiling with Metal Counters](https://developer.apple.com/videos/play/tech-talks/10001)
+
+[@老驴](https://www.weibo.com/6090610445):在 macOS Big Sur 和 iOS 14 中,苹果新引入了 Metal Counters API 让开发者对 GPU 性能进行实时在线性能分析。此 API 提供了非常底层的运行时 GPU 性能信息,而这些数据在之前的版本中,都只能从 Xcode 或者 Instruments 中做离线分析。这对于开发者来说无疑是个非常大的改进,而善用这个 API 也可以更好的为你的 App 性能优化,给出更加精准的思路。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#138-2020.11.30.md b/Reports/2020/#138-2020.11.30.md
new file mode 100644
index 000000000..dd5c1e503
--- /dev/null
+++ b/Reports/2020/#138-2020.11.30.md
@@ -0,0 +1,104 @@
+# 老司机 iOS 周报 #138| 2020-11-30
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [端智能:使用 Create ML 打造图片和视频的风格转化模型](https://mp.weixin.qq.com/s/oIVvGleWyHi7X38uFULRjA)
+- [端智能:用 Create ML 打造智能运动 App](https://mp.weixin.qq.com/s/pzbxLL03Sq3IXKQRCQohKg)
+
+## 新闻
+
+### [App Store Connect 放假安排:12月23日-27日 ](https://developer.apple.com/cn/news/?id=83m4plrb)
+
+[@Parsifal](https://github.com/ParsifalC):请确保您的 App 为最新版本,以准备迎接假期。App Store Connect 在12月23日至27日(太平洋时间)期间不接受新 App 和 App 更新,因此请提前处理任何与发布相关的计划、提交和审批事宜。其他 App Store Connect 功能将不受影响。
+
+## 文章
+
+### 🌟 🐕 [iOS AOP 方案的对比与思考](https://mp.weixin.qq.com/s/5JhbX4McMifFpZ7NyztIQw)
+
+[@Damien](https://github.com/ZengyiMa):AOP 意为面向切面的编程方式,在不修改源代码的情况下,给程序动态统一添加功能的技术。本文详细的介绍了目前 iOS 的各项 AOP 方案(Method Swizzle, Aspects, MPSwizzler, ISA-swizzle KVO, Fishhook, Thunk, Clang 插桩)的原理实现、使用场景以及问题缺陷。让我们的工具箱又多出了一些可供选择,同时进一步加深对静态和动态语言的理解,也对程序从静态到动态整个过程理解更加深入。
+
+### 🐕 [UME - 丰富的 Flutter 调试工具](https://mp.weixin.qq.com/s/9GjXB9Eu-OP3fIjdQWKklg)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):鉴于在开发 Flutter 过程中遇到的一些问题,西瓜视频 Flutter 基础团队开发了一款调试工具包 UME,内部集成了丰富的调试工具, 包括但不限于如下功能:
+
+- Widget 信息:查看当前选中 widget 的大小、名称,文件路径以及代码所在行数
+- Widget层级:查看当前选中 widget 的树层级,以及它 renderObject 的详细 build 链
+- ShowCode: 查看到当前页面的页面代码
+- 内存泄露:检测 flutter 内存泄漏
+- 内存查看:查看当前 Dart VM 对象所占用情况
+- 对齐标尺:测量当前 widget 所在屏幕的一个坐标位置,开启吸附开关后可以自动吸附最近 widget
+- 颜色吸管:查看到当前页面任何像素的颜色,方便调试 UI
+- 网络调试:支持所有网络请求抓取,mock 响应内容等
+- Logger:展示使用 debugprint 函数打印的日志
+- Channel Monitor:查看所有的 channel 调用,包括方法名,时间,参数,返回结果
+
+### 🐕 [What went wrong with the libdispatch. A tale of caution for the future of concurrency](https://tclementdev.com/posts/what_went_wrong_with_the_libdispatch.html)
+
+[@Leo](https://github.com/leomobiledeveloper):libdispatch 是 Apple 推出的帮助开发者利用好多核性能的底层框架,简洁的 block 相关的 API 让并发编程变得前所未有的容易。但很多情况下 libdispatch 被滥用,导致引起线程爆炸,代码调试困难等问题。本文作者讲述了自己使用 libdispatch 的痛点,分析了 swift 即将引入的并发相关特性的,文章条理清晰,能看出作者对并发编程有着独到的见解。
+
+### 🐕 [MongoDB Realm 使用初体验 | 奇谈](https://mp.weixin.qq.com/s/HhhqkHtu9P1hib9L2Miyhg)
+
+Realm 是一个专门为移动端设计的数据库。主要特点是性能好,易使用。MongoDB 是一个流行的 NoSQL 数据库,主要是在服务器端使用。MongoDB 收购 Realm 半年后推出全新的 MongoDB Realm。移动端的数据库还是 Realm,本地的数据存取接口几乎保持一致。通过 Realm sync 这个程序把数据同步到 MongoDB Atlas 中。本文介绍了 MongoDB Realm 的基本功能和使用方法。
+
+### 🐎 [DispatchSource: Detecting changes in files and folders in Swift](https://swiftrocks.com/dispatchsource-detecting-changes-in-files-and-folders-in-swift.html)
+
+[@四娘](https://kemchej.github.io/):GCD 里的 DispatchSource 家族包含了一系列监听系统事件的 API,例如 Mach 事件通知,文件变更通知等等。在这篇文章里,作者以实时日志浏览为例展示了这一套 API 的使用方式。
+
+### 🐢 [端智能:理解 Vision 框架中的图片技术](https://mp.weixin.qq.com/s/L4VHrw0Hvu_ALlTRY7rBBA) 和 [How to display Vision bounding boxes](https://machinethink.net/blog/bounding-boxes/)
+
+[@EyreFree](https://github.com/EyreFree):Vision 是 Apple 2017 年和 Core ML 一起推出的、基于 Core ML 封装的图像识别库,它包含有人脸识别、机器学习图片分析、条形码识别、文字识别等基础功能。本次推荐的两篇文章对 Vision 的图片重点区域、图片分类、图片相似度、人脸识别技术等主要应用进行了介绍和演示,推荐大家都来看一下,说不定下次遇到的图形相关的业务就可以用它来实现了。
+
+### 🐢 [一篇吃透 Dark Mode ,搞定“暗黑/深色”适配](https://mp.weixin.qq.com/s/02QmgMkmVcB8x7xVZJT_Bg)
+
+[@AidenRao](https://weibo.com/AidenRao):本文讲述 APP 中各组件适配 Dark Mode(暗黑模式 或 深色模式)的方式和注意事项,以及一些细节的处理建议。
+但更重要的,是让大家掌握适配暗黑模式的工作量。避免轻易开工,导致进退两难。
+
+- 从“层级”、“颜色”两方面讲述 iOS 安卓适配方法。
+- 讲述 Dark 适配需要关注的细节:字色、图标、插图等
+- Dark 适配的难点:适配场景多,Dark 模式下无障碍阅读的适配,以及容易出现遗漏。
+
+### 🐢 [移动端 UI 一致性解决方案](https://mp.weixin.qq.com/s/oq7ylltdRIdJuSlL7EIiNA)
+
+[@Parsifal](https://github.com/ParsifalC):大型 App 往往承接着来自不同团队的业务,可能各个业务组都有着自己的产品、设计和研发团队。随着版本的不断迭代,大型 App 在设计层面、研发层面、测试层面和产品层面均会面临着效率低、UI 体验不一致等问题。美团外卖团队分享了他们在移动端 UI 一致性解决方案上的探索。这是一套需要各个团队达成共识共同去维护的标准化组件,相比于完成这一套方案的建设,或许去推进各个业务团队接受并使用也是不小的挑战。
+
+### 🐎 [Comparing iPhone OS 1.0 with iOS 14 using tree maps](https://blog.timac.org/2020/1122-comparing-iphone-os-with-ios-14-using-tree-maps/)
+
+[@Parsifal](https://github.com/ParsifalC):2007 年第一款 iPhone 发布至今,iPhone 的硬件在不断更新,软件也从 iPhone OS 1.0 到了 iOS 14。本文通过 tree map 带我们一览其中的结构变化过程。
+
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#139-2020.12.07.md b/Reports/2020/#139-2020.12.07.md
new file mode 100644
index 000000000..e6bd479f3
--- /dev/null
+++ b/Reports/2020/#139-2020.12.07.md
@@ -0,0 +1,101 @@
+# 老司机 iOS 周报 #139 | 2020-12-07
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [用 Web 技术为 Safari 编写扩展](https://mp.weixin.qq.com/s/ZVqCmWUGsUIYLXmpgBTZMA)
+- [通过更好的隐私保护与用户建立信任](https://mp.weixin.qq.com/s/rIULHMRCmhdwuI_p1TIukw)
+
+## 新手推荐
+
+### 🐎 [UIStackView padding](https://sarunw.com/posts/uistackview-padding/)
+
+[@Damien](https://github.com/ZengyiMa): UIStackView 是 Apple 在 iOS9 推出流式布局容器库,它可以让我们高效的管理一行或一列视图的布局,在日常开发中往往有需要对 View 设置 Padding 的场景,相对比直接设置元素约束的方式,我们还可以使用 isLayoutMarginsRelativeArrangement 属性来提高我们布局效率,本文将会详细介绍 isLayoutMarginsRelativeArrangement 的妙用。
+
+## 文章
+
+### 🐎 [Swift protocols in SwiftUI](https://fivestars.blog/swiftui/swift-protocols.html)
+[@zvving](https://github.com/zvving):协议(Protocols)是 Swift 语言的重要组成部分,在 SwiftUI 中亦有广泛应用,比如新增的协议 [View](https://developer.apple.com/documentation/swiftui/view)、[Shape](https://developer.apple.com/documentation/swiftui/shape) 等。
+
+除此之外,标准库中基础协议 Equatable,Identifiable,Hashable 从最小化重绘、定位元素、尝试兼顾代码复用与传值等不同角度为 SwiftUI 带来高效布局能力。本文带你快速了解这部分内容。
+
+### 🐕 [MacBook 升级 SSD 硬盘指北](https://juejin.cn/post/6901549087221514247)
+
+[@Parsifal](https://github.com/ParsifalC):用低磁盘容量的 MacBook 做 iOS 开发,最头疼的无疑是 Xcode 那膨胀地异常迅速的空间使用率。无论是 Xcode 自身大小,还是编译项目的缓存,又或是 device support 的 SDK,都会夸张地将你磁盘空间填满。这篇文章非常详细地总结了自己是如何动手升级老 MacBook SSD 的,是一篇手把手的教程帖。
+
+### 🐎 [一种更优雅的 Flutter Dialog 解决方案](https://juejin.cn/post/6902331428072390663)
+
+[@Parsifal](https://github.com/ParsifalC):Flutter 提供的 dialog 存在必须传 BuildContext、无法透传事件和某些场景下的路由混乱等问题,为解决这些问题作者自定义了一个 Dialog Widget - [flutter_smart_dialog](https://github.com/CNAD666/flutter_smart_dialog),几个问题的解决方式值得参考借鉴。
+
+## 工具
+
+### [Xcode Releases](https://xcodereleases.com/)
+
+[@Parsifal](https://github.com/ParsifalC):一个汇总了所有 Xcode 版本信息的工具网站,比官网更加清晰,查询也更加方便快速。下载资源仍然是使用的苹果官方渠道,不必担心安全问题。
+
+### [Swift Version](https://swiftversion.net/)
+
+[@Parsifal](https://github.com/ParsifalC):Swift 作为一款仍在持续进化中的语言,版本迭代也很频繁。这个网站汇总了所有 Swift 版本和 Xcode 版本的关联关系,有想了解相关版本历史需求的可以关注一下。
+
+## 代码
+
+### [ColorKit](https://github.com/Boris-Em/ColorKit)
+
+[@水水](https://www.xuyanlan.com): 这是一个关于 ‘Color’ 的库,它有一些非常实用的 Features :
+- Dominant Colors : 获取一张图片的主色
+- Color Palette :调色板
+- Average Color : 获取一张图片的平均色
+- Color Difference (DeltaE):色差,颜色比较
+- Contrast Ratio:对比度
+- Color Space Conversions: 颜色空间转换
+还有更多很实用的特性,读者们可以尝试使用哦~
+
+### [DiDiPrism](https://github.com/didi/DiDiPrism)
+
+[@老峰](https://github.com/GesanTung): DiDiPrism 是滴滴团队开源的一套专注于移动端操作行为的技术方案。具有零入侵,各端统一的操作行为指令,丰富灵活操作行为策略等特点,主要具有如下功能:
+- 操作回放(视频回放 / 文字回放)
+- 实时操作行为检测
+- 移动端埋点全流程,数据可视化(开源筹备中..)
+还有更多功能,有类似需求的读者们可以借鉴参考使用
+
+### [tumblr/kanvas-ios](https://github.com/tumblr/kanvas-ios)
+
+[@JonyFang](https://github.com/JonyFang):Kanvas 是 Tumblr 近期开源的一款工具库,主要用于添加特效、图形、文本、贴纸以及使用现有媒体或相机制作 GIF。在 Tumblr iOS 应用中,它被用作相机、媒体编辑器、GIF 制作器和媒体发布工具。
+
+有类似需求的读者,可以借鉴参考使用哦~
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#140-2020.12.14.md b/Reports/2020/#140-2020.12.14.md
new file mode 100644
index 000000000..f7e26f5d7
--- /dev/null
+++ b/Reports/2020/#140-2020.12.14.md
@@ -0,0 +1,83 @@
+# 老司机 iOS 周报 #140 | 2020-12-14
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [iOS 稳定性:如何在开发中规避安全风险](https://mp.weixin.qq.com/s/Khmpba8XBxbcf6Cq7zc5ZQ)
+- [WKWebView 新变化:发掘 WKWebView 的神奇妙用](https://mp.weixin.qq.com/s/NcMo6uStNrdLJvVGfL1TNw)
+
+### [App 内购买项目现已支持「家人共享」功能](https://developer.apple.com/cn/news/?id=4zbvn7u9)
+
+ [@享耳先森](https://github.com/iblacksun):现在,开发者可以为自动续期订阅和非消耗型内购买项目启用「家庭共享」功能,从而允许用户与最多 5 位其他家庭成员共享购买内容。
+
+## 文章
+
+### 🌟🚧🐕 [Uber 工程师亲述使用 Swift 重写 App 的(惨痛)经历](https://threadreaderapp.com/thread/1336890442768547845.html)
+
+[@四娘](https://kemchenj.github.io/):事情起源于 2016 年,那年 Trump 还不是总统,TK 还没有爆出丑闻,Uber 还在飞速增长,App 的架构也逐渐变得复杂和脆弱,由此产生的 Bug 让工程师团队疲于奔命,最终他们决定重写 App 的架构。
+
+在 iOS 端,他们做了一个最“灾难性”的决定:**全面使用 Swift 进行重写**。当时的 Swift 还是 2.x 版本,Uber 的项目在那时敲下一段语句需要等 45 秒才会出现代码补齐,除此之外还有编译速度,启动速度和二进制大小的问题,过程中他们用了非常多的 hacky 的手段去处理,例如 struct 全部改成 class,编译产物重链接,编译 pass 重排等等。
+
+希望大家看完这段经历之后可以对技术选型有更深刻的理解。
+
+> 中文译版:[我在Uber亲历的最严重的工程灾难](https://mp.weixin.qq.com/s/T1RqYrCTOpQvkWdunoxqww)
+
+### 🌟🐕 [杀不掉的 App——CVE-2018-4340](https://mp.weixin.qq.com/s/tnupXwfR5EDhZif7t9vR1w)
+
+ [@Leo](https://github.com/leomobiledeveloper):作者在 2018 年给 iOS 和 macOS 报了一个 WebKit 沙箱逃逸漏洞 CVE-2018-4310,苹果先后在 macOS 和 iOS13上修复了这个漏洞。本文详细讲述了这个漏洞的原理,以及如何在 iOS 上做一个杀不掉的 App,是一篇 iOS/macOS 上安全相关的高质量文章。
+
+### 🌟🐕 [iOS Synchronized 底层分析](https://juejin.cn/post/6903421773232996365)
+
+ [@Damien](https://github.com/ZengyiMa):Synchronized 是 iOS 开发中最常用的几种锁之一,想知道 Synchronize 的底层实现吗?本文会从 4 个具体问题出发,结合底层源码一步步为你揭开 Synchronize 的面纱,对想深挖的 iOS 底层开发者值得一读。
+
+> 写的不错的技术博客,包含但不局限于 iOS、多端统一、设计、产品等
+
+### 🐕 [My SwiftUI Pain: Creating Tappable Links in Text](https://medium.com/better-programming/swiftui-pain-links-in-text-b31319783c9e)
+
+ [@EyreFree](https://github.com/EyreFree):SwiftUI 是苹果最新推出的声明式 UI 开发框架,借助它你可以在所有 Apple 平台上构建用户界面,很多开发者已经开始在个人项目甚至企业项目中使用这一技术。它很酷,但毕竟刚刚起步,很快一些开发者便会碰到一些坑或者问题,比如本文作者遇到的:如何优雅地在一段文本中给某些词语添加点击事件。作者分享了自己如何通过一步步的尝试最终得到了自己想要的效果,虽然最终效果看起来还不错,但他直言使用传统的 UIKit 与 AppKit 也许更方便,对 SwiftUI 感兴趣的朋友推荐一读。
+
+### 🐎 [Xcode 12.3 盘点](https://mp.weixin.qq.com/s/F_47HZZn74Jjd1q99WDCHA)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了 Xcode 12.3 RC 版本解决的关于 xcodebuild,macOS 上的键鼠响应速度,文档查看器,Interface Builder,模拟器和 Swift 的几个问题。
+
+## 工具
+
+### [lowmad](https://github.com/bangerang/lowmad)
+
+[@老峰](https://github.com/GesanTung): 在开发调试中我们经常会使用 LLDB 命令 Debug,有时也有自定义 LLDB 命令的需求。lowmad 就是用于管理和生成 LLDB 脚本的命令行工具,它提供了简洁易用的命令来生成或安装脚本命令,另外作者开源了 [lldb_commands](https://github.com/bangerang/lldb_commands) 自定义 LLDB 命令,如 find_label、color、nudge 等,感兴趣的读者不妨来研究一哈。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#141-2020.12.21.md b/Reports/2020/#141-2020.12.21.md
new file mode 100644
index 000000000..87065fdad
--- /dev/null
+++ b/Reports/2020/#141-2020.12.21.md
@@ -0,0 +1,149 @@
+# 老司机 iOS 周报 #141 | 2020-12-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [iOS 稳定性:编写会“失败”的测试](https://mp.weixin.qq.com/s/J2bZNxe5Xf9xL85ftIjG3g)
+- [iOS 稳定性:更快地获得测试结果](https://mp.weixin.qq.com/s/iLmpcuFadWEekRqE3SM15w)
+
+## 新闻
+
+### [苹果现已推出轻 App 码](https://developer.apple.com/cn/news/?id=4c7j45dp)
+
+[@Parsifal](https://github.com/ParsifalC):AppClip 是今年 WWDC 的一大亮点,现在苹果已经正式推出 AppClip 码,只需将 iPhone 靠近轻 App 码或用摄像头扫描该代码,即可打开您的轻 App 并快速完成需要的任务。
+
+### [App Store 现已提供 App 的隐私标签](https://developer.apple.com/cn/news/?id=3wann9gh)
+
+[@Parsifal](https://github.com/ParsifalC):上个月苹果已经要求开发者必须在 12 月 8 号之前必须完善 App Store Connect 上的新隐私信息,而现在开发者所填写的隐私信息已经能够被 App Store 上浏览,帮助其了解该 app 的隐私保护做法。
+
+## 新手推荐
+
+### 🌟 🐎 [iOS | 事件传递及响应链](https://juejin.cn/post/6894518925514997767)
+
+[@J_Knight_](https://github.com/knightsj):本文图文并茂并结合代码介绍了 iOS 中的事件传递及响应链机制:确定第一响应者以及如何通过响应链来传递事件的过程。同时也推荐本文作者的另外一篇文章:[iOS | 响应链及手势识别](https://juejin.cn/post/6905914367171100680) :讲解了手势识别是如何通过响应链来传递事件的。
+
+### 🐢 [iOS App Dev with SwiftUI Tutorials](https://developer.apple.com/tutorials/app-dev-training)
+
+[@Parsifal](https://github.com/ParsifalC):苹果官方推出的 iOS App 入门级教程,大约 4 个小时时间,让你体会如何用 SwiftUI 构建一个简单的 App。整个教程还是采用类似逐步闯关的形式进行,十分友好。
+
+## 文章
+
+### 🌟 🐕 [200 weeks of Swift](https://www.swiftbysundell.com/articles/200-weeks-of-swift/)
+
+[@zvving](https://github.com/zvving):[John Sundell](https://twitter.com/johnsundell) 是 Swift 开发者社区的知名创作者,他创建的 [Swift by Sundell](https://www.swiftbysundell.com/about/) 网站每周发布 Swift API 设计、访谈、最佳实践等优秀文章、播客。
+
+不知不觉网站已经迎来第 200 期更新:作者在 Swift 学习过程中,常见问题的三处思考:
+
+- 更多使用值类型,除非需要共享可变状态
+- 用语义清晰的类型加强代码自注释
+- 面向协议编程也有代价,建议在不同方案中寻求平衡
+
+[Swift by Sundell](https://www.swiftbysundell.com/about/) 网站有大量精彩内容,推荐 Swift 开发者订阅。
+
+### 🌟 🐕 [都 2021 年了,你的动画还在用 setState ?](https://juejin.cn/post/6906670385941446670)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 中想要实现一个动画效果也是极其简单的,通过动画控制器,然后修改 State 即可。但这并非正确的姿势,本文通过 AnimatedBuilder 来实现动画,并解析其源码来分析为何如此,强烈推荐.
+
+### 🌟 🐢 [App 启动提速实践和一些想法](https://mp.weixin.qq.com/s/v2Ym9GPU4J8xCFFNYcpJhg)
+
+[@Leo](https://github.com/leomobiledeveloper):启动是门面,好的印象也有助于留存率提高。本文包含了 iOS 和 Android 的一些通用启动优化实践,作者从 H5 启动页、下载速度、线程调度、多线程模型等多个维度展开讲解,最后介绍了分析工具和自动化管控。一篇文章包含了 App 启动速度的方方面面,建议仔细阅读。
+
+### 🐎 [No more [weak self], or the weird new future of delegation](https://olegdreyman.medium.com/no-more-weak-self-or-the-weird-new-future-of-delegation-f2a2745cd73)
+
+[@xiaofei86](https://weibo.com/xuyafei86):当我们使用闭包时总是要为了避免循环引用而使用 weak self。本文通过属性包装器将回调用带有泛型的类进行封装,使避免循环引用的职责由 API 的使用者转换到 API 的设计者身上。我们只需要将回调闭包用 @Delegate 标记就可让使用者避免使用 weak self,例如:
+```swift
+@Delegated var didUpdate: (String) -> Void
+
+textField.$didUpdate.delegate(to: self) { (self, text) in
+ self.label.text = text
+}
+```
+但由于 Swift 泛型的限制 1 个属性包装器只能处理固定数量的返回参数,所以作者同时编写了开源库 [Delegated](https://github.com/dreymonde/Delegated) 提供 @Delegate0、@Delegate1、@Delegate2 等多个属性包装器来支持不同参数数量的闭包。有兴趣的同学可以阅读原文了解。
+
+### 🐕 [The future of SwiftUI navigation (?)](https://fivestars.blog/swiftui/programmatic-navigation.html)
+
+[@极速男孩](https://github.com/ztlyyznf001):SwiftUI 中没有了 ViewController 中 present 的方法,而是用了 NavigationLink 来替代。但是 NavigationLink 也存在着一些限制,比如在导航是向目标 view 传一个 dynamic 的值比较麻烦,然后 NavigationLink 声明的时候需要有一个 view 。这篇文章主要介绍了如何避免这些 NavigationLink 的限制。首先我们可以通过绑定一个状态或者一个 EmptyView 来解决 NavigationLink 需要一个 view 的问题。然后我们可以通过绑定一个对象的标识而不是 Bool 或者 Hashable 的值来解决向目标 view 中传值的问题。
+
+### 🐕 [iOS 编译速度如何稳定提高 10 倍以上之一](https://juejin.cn/post/6903407900006449160)
+
+[@红纸](https://github.com/nianran):本文主要阐述了美柚团队在编译包上二进制化跟编译文件缓存上的探索。主要阐述了如下几种尝试方向:
+
+1. 利用 CCache 缓存优化编译产物,但是命中率低。
+2. cocoapods-binary 插件,在 pod install 的 pre_install hook 中拦截并在当前的 Pods 目录下打包二进制文件,本质上只是编译前移,还是会拖慢 pod install 速度。
+3. cocoapods-bin 双私有源,定制化两份源文件,一份源管理源代码、一份源管理静态库。具有原生 Cocoapods 的交互体验。
+
+美柚团队在 cocoapods-bin 的基础上客制化 [cocoapods-imy-bin](https://github.com/MeetYouDevs/cocoapods-imy-bin) 插件。其插件具有以下特征点:
+
+1. 无入侵、无感知、不影响现有业务
+2. 支持 Swift 二进制化
+3. 支持 use_frameworks!
+4. 轻量,不受耦合或组件化的影响
+5. 完全自动化,一键使用、无需手动操作,包含完整的 server 体系一条龙服务
+6. 含有二进制源码调试功能
+
+> 由 [HapyCoder](https://github.com/HapyCoder) 推荐
+
+### 🐎 [How expensive is DateFormatter](https://sarunw.com/posts/how-expensive-is-dateformatter/)
+
+[@水水](https://www.xuyanlan.com):相信大部分读者都知道创建 DateFormatter 的操作有非常昂贵的代价,但是大部分读者可能并不清楚到底它有多慢,哪个部分"贵",我们将在本文中一起找出答案。
+
+### 🐕 [Apple Silicon(苹果芯片)从 DTK 到 M1 Mac 的入门总结](https://juejin.cn/post/6903091283204833287)
+
+[@老驴](https://www.weibo.com/6090610445):Apple 在今年 6 月的 WWDC 上正式宣告了从 Intel 到 Apple Silicon 为期两年的转变,这不仅仅是苹果产品的转变,更是整个行业从 x86 转向 ARM 的序章。本文的作者就帮你梳理了一下从开发者套件到 M1 芯片的最终产品的种种。
+
+### 🐕 [M1 芯片有何不同?](https://mp.weixin.qq.com/s/Krmx_mYpDdRGKzN3zs3mYw)
+
+[@JonyFang](https://github.com/JonyFang):本篇主要介绍了 M1 芯片与其他芯片的不同之处、优秀的点及存在的问题。分别从如下几个方面进行了分析:
+
+- M1 芯片与 CPU 的关系
+- 苹果如何做到的统一内存架构(UMA)
+- M1 用到了先进的 5 纳米制程&惊人的 160 亿个晶体管
+- M1 存在哪些问题
+
+对于苹果来说,未来无疑将会长期进行大量的投入来对 M 系列芯片进行迭代,且其自有生态也保证了能够反哺 M 系列芯片的研发。也期待未来更为完善的 M 系列芯片。
+
+### 🚧🐕 [Binary Size Woes](https://medium.com/nerd-for-tech/binary-size-woes-acb5d96f058a)
+
+[@四娘](https://kemchenj.github.io/):作为上一期 [Uber 工程师亲述使用 Swift 重写 App 的经历](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/Reports/2020/%23140-2020.12.14.md#-uber-工程师亲述使用-swift-重写-app-的惨痛经历)的后续,有另外一位工程师出来介绍他们在缩减 Binary Size 方面做的努力,从与苹果的沟通,到工程方面的努力,包括编译参数的调优,追踪每一个 Pull Request 对于 Binary Size 的影响等等。
+
+## 代码
+
+### [Motion](https://github.com/b3ll/Motion)
+
+[@Damien](https://github.com/ZengyiMa):Motion 是一个完全用 Swift 编写的动画引擎,用于在 iOS,macOS 和 tvOS 进行动画和交互,并且完全支持 Apple 的 SIMD 特性。 Motion 可以轻松的创建动画(如弹簧,衰减等特性动画),也可以与手势识别相关的功能一起合作,以实现尽可能流畅和令人愉悦的交互。需要的做出精美的交互动画的同学值得尝试一下。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#142-2020.12.28.md b/Reports/2020/#142-2020.12.28.md
new file mode 100644
index 000000000..a25c4476e
--- /dev/null
+++ b/Reports/2020/#142-2020.12.28.md
@@ -0,0 +1,120 @@
+# 老司机 iOS 周报 #142 | 2020-12-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [SiriKit 新变化:让 Intent 更强大](https://mp.weixin.qq.com/s/1CxDs8qHLzEHky6yWjdseQ)
+- [iOS 稳定性:使用 XCTIssue 分析诊断测试失败问题](https://mp.weixin.qq.com/s/O-awF7t4jqJVPNdL-4jidA)
+
+## 文章
+
+### 🌟 🐕 [2020 腾讯 Techo Park - Flutter 与大前端的革命](https://mp.weixin.qq.com/s/oflhVGs6lZBb--sOllMi8g)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 自发布到目前的 1.22 版本,已经走过了两年多的时间,这段时间以来,Flutter 一直都是跨端开发的风口浪尖,这个时候很多人不禁要问:那么未来还是么 ? 又该如何抉择 ?本文将给你这些问题的答案。
+
+### 🌟 🐕 [arm64 objc_msgSend 源码解读](https://www.jianshu.com/p/1972010b88d7)
+
+[@Damien](https://github.com/ZengyiMa):objc_msgSend 方法是 Objective-C 的 Runtime 最核心的部分,你是否好奇底层的具体实现呢?本文的作者将会从汇编的角度把 objc_msgSend 的流程梳理一遍,包括 class 查找、缓存查找、缓存未命中的处理、taggedPointer 和 nil 处理。通过本文你会加深对象结构的布局认识以及对 arm64 汇编基础指令的学习也是一个很好的入门方式。
+
+> 由 [silan-liu](https://github.com/silan-liu) 推荐
+
+### 🌟 🐕 [自定义 LLVM PASS 实现 函数耗时插桩统计](https://blog.0x1306a94.com/docs/llvm/ch01/01/)
+
+[@Leo](https://github.com/leomobiledeveloper):函数耗时分析对性能优化非常有用。目前常用的方法有两种:类似 Time Profiler 的堆栈采样分析和 hook objc_msgSend 的 OC 方法级别耗时分析。
+
+耗时统计的本质是在函数头尾插入统计代码,能在运行时做当然也可以在编译期,这篇文章非常详细地讲解了如何在编译期间通过 LLVM PASS 实现函数耗时统计,不仅能覆盖 OC ,还能覆盖 C、C++ 等其他语言。
+
+### 🐕 [HTTP/2 做错了什么?刚刚辉煌2年就要被弃用了!?](https://mp.weixin.qq.com/s/DLmg_SGGx0iyXepuhQB8pg)
+
+[@AidenRao](https://weibo.com/AidenRao):HTTP/2 的诞生,主要是通过多路复用技术,解决 HTTP/1.1 中的效率问题。但依旧存在很多不足,因为 HTTP/2 底层是采用 TCP 协议实现的,存在 TCP 队头阻塞,三次握手耗时过长问题。
+
+所以,HTTP/2 推出没多久,业内就开始大力投入 HTTP/3 的研发与推广,HTTP/3 选择了一种新的技术方案,基于 UDP 协议改造的 QUIC (Quick UDP Internet Connections),作者会在后续的文章对 HTTP/3 进行详细介绍。
+
+### 🐢 [What Every Computer Scientist Should Know About Floating-Point Arithmetic](https://floating-point-gui.de/)
+
+[@JonyFang](https://github.com/JonyFang):我们应该都写过类似这样的简单代码:
+```
+0.1+0.2
+```
+与我们预期不同的是,它实际得到的结果是:
+```
+0.30000000000000004
+```
+那么我们为什么会得到这个结果?如何处理这类问题?关于这类常见浮点数问题的解答,我们可以通过这个网站来找到答案。如果读者有兴趣,也可以提供更深入的解释,说明为什么浮点数必须如此工作以及可能还会出现其它哪些问题。
+
+## 工具
+
+### [Stringz iOS Apps Localization Editor](https://github.com/mohakapt/Stringz)
+
+[@Parsifal](https://github.com/ParsifalC):一款很好用的做 App 本地化的工具,UI 简明清晰,并且能自动识别工程内的所有本地化文件。
+
+## 代码
+
+### [CalendarKit](https://github.com/richardtop/CalendarKit)
+
+[@老驴](https://www.weibo.com/6090610445):日历,尤其是复杂的日历 UI 都是产品开发中费时费力的部分,很多时候,因为缩减开发周期,设计师也会选择跳过这部分转而使用原生的日历 App 来设计功能。这个 CalendarKit 就是由一位外国朋友开发维护的开源日历 UI 库,可以很方便的进行日历相关功能的集成。
+
+> 由 [理查德·托普奇( Richard Topchii )](https://github.com/richardtop) 推荐
+
+### [RealityUI](https://github.com/maxxfrazer/RealityUI)
+
+[@Parsifal](https://github.com/ParsifalC):如果你正在做 AR/VR 相关的开发,那么这个库一定对你很有帮助。RealityUI 提供了一系列的控件,让你可以像做 2D 应用一样开发 AR/VR 应用。
+
+> 由 [XanderXu](https://github.com/XanderXu) 推荐,他长期研究 ARKit 相关技术,编写有 [ARKit Tips](https://xiaozhuanlan.com/u/xanderxu) 等多个专栏
+
+## 音视频
+
+### 🌟 🐕 [Apple tech-talks 10855 10856 10857](https://developer.apple.com/videos/play/tech-talks/10855)
+
+[@莲叔](https://github.com/aaaron7):Apple Developer 上推出的三个新的 Tech Talk,链接地址分别是:
+
+* [10855 Explore UI animation hitches and the render loop](https://developer.apple.com/videos/play/tech-talks/10855)
+* [10856 Find and fix hitches in the commit phase](https://developer.apple.com/videos/play/tech-talks/10856)
+* [10857 Demystify and eliminate hitches in the render phase](https://developer.apple.com/videos/play/tech-talks/10857)
+
+首先是第一讲,10855 介绍了在 iOS UI 开发中的 hitch(故障,卡顿) 的定义。 之后介绍了 iOS 渲染的 3-阶段模型。进一步阐述了 hitch 出现的原因和类型,最后还给出了衡量 hitch 对于用户体验影响的指标。
+
+接下来的两讲分别讨论了如何解决 commit 阶段和渲染阶段的耗时:
+
+* 10856 首先介绍了 commit 阶段的定义, commit 阶段指的是当事件发生时, App 进程处理相关的 UI 更新到更新完成,提交到 Render 进程的时间。主要分为四个阶段: Layout、Display、Prepare、Commit。 Layout 和 Display 阶段往往就对应我们 View 的 layoutSubview 和 drawrect, 是最容易导致卡顿的点。之后,视频结合一个具体的案例来介绍了如何使用新的 instruments 来定位 commit 阶段的 hitch, 最后给出了一些最佳实践来避免耗时。
+* 10857 首先介绍了 render 阶段做的事情,然后引出了导致 render 阶段耗时的核心原因:离屏渲染。即 GPU 无法串行的执行所有绘制任务,而是需要中断主 pipeline 去先做一部分离屏渲染之后才能完成当前任务。之后介绍了如何使用 Xcode 的 View Hierarchy Debug 面板配合 Instrument 去找到当前介绍触发离屏渲染的元凶。最后,类似 10856, 本视频后续也给出了一些平时开发的最佳实践的建议。
+
+这三讲的内容非常富有启发性,讲解 hitch 是一方面,更有价值的是借这个过程阐述了 iOS 的 UI 机制,让我们能够在做优化时候不仅能知其然,更能知其所以然。比如圆角、阴影到底为什么会影响帧率,Flutter 在 iOS 上对比原生的性能为什么相比 Android 差这么多这些问题,相信你看完都能有答案。
+
+> 由 F010BE 推荐
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#98-2020.01.06.md b/Reports/2020/#98-2020.01.06.md
new file mode 100644
index 000000000..d79547eca
--- /dev/null
+++ b/Reports/2020/#98-2020.01.06.md
@@ -0,0 +1,100 @@
+# 老司机 iOS 周报 #98 | 2020-01-06
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [RN 转小程序引擎 Alita 2.0 正式发布:基于 webpack 进行重构](https://mp.weixin.qq.com/s/ndr0rGmy456wUEaoOBR0_g)
+
+[@looping](https://github.com/looping):近期 Alita 发布了基于 webpack 进行重构后的 2.0 版本,带来了诸多新特性,包括完善 npm 支持、包大小分析、一键小程序分包等等。Alita 本身侵入性很低,并不会对原有 ReactNative 开发方式造成太大影响。同时本文也从基本原理、2.0 版本新特性、性能优化这三个方面介绍了下 Alita。感兴趣的同学可以进一步关注学习下。
+
+## 新手推荐
+
+### 🐕 [How to use scroll view in Interface Builder / Storyboard (Xcode 11)](https://fluffy.es/scrollview-storyboard-xcode-11/)
+
+[@极速男孩](https://github.com/ztlyyznf001):本文介绍了如何在 Xcode 11 的 Interface Builder 或者 Storyboard 中使用 scroll view。主要介绍了如何在 view controller 中使用 scroll view 并且设置它的约束和如何设置 scroll view 元素的约束并且如何通过设置当中元素的约束来自动控制 scroll view 的 Content view 的大小。
+
+### 🐢 [SwiftUI learning curve in 2019](https://swiftwithmajid.com/2019/12/31/swiftui-learning-curve-in-2019/)
+
+[xiaofei86](https://weibo.com/xuyafei86):今年 iOS 开发领域发生了巨大变化,我们拥有了 SwiftUI 框架。SwiftUI 是苹果生态系统中用声明式框架构建 App 的新方式。作者总结了学习 SwiftUI 需要的所有文章列表,包括基础知识、布局系统、架构、声明式特性、动画和交互、辅助功能、绘制自定义视图总 28 篇文章,推荐给对 SwiftUI 感兴趣的同学。
+
+## 文章
+
+### 🌟 🐕 [手淘架构组最新实践 | iOS基于静态库插桩的⼆进制重排启动优化](https://mp.weixin.qq.com/s/YDO0ALPQWujuLvuRWdX7dQ)
+
+[@satanwoo](https://satanwoo.github.io):启动优化是个老生常谈的问题了,但相关优化涉及的技术却总是停滞不前。而 2019 年下半年抖音提出的二进制重排方案给业界带来了一股新的风潮来一些新鲜感。本文是来自手淘架构组的谢俊逸同学在二进制重排方案的基础上,针对原有方案的一些实践限制,提出了一种基于静态库二进制插桩的重排方案,对于大量应用组件化构建应用的团队来说,是一个值得学习借鉴的好文章。对了,本文配合原有的[抖音研发实践:基于二进制文件重排的解决方案 APP 启动速度提升超 15%](https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247485101&idx=1&sn=abbbb6da1aba37a04047fc210363bcc9&scene=21#wechat_redirect)更佳~
+
+### 🌟 🐕 [APP 网络优化之 DNS 优化实践](https://juejin.im/post/5e0d580b5188253a5c7d12fc)
+
+[@Parsifal](https://github.com/ParsifalC):网络优化一直是 App 性能优化中比较重要的一部分,而在网络优化中 DNS 优化又是相对重要的一块。通常我们做 DNS 优化想要达到的目的有以下 3 个:
+
+- 降低 DNS 解析带来的延迟
+- 预防 DNS 劫持
+- IP 做到服务器动态部署
+
+其中,“降低 DNS 解析带来的延迟” 在 HTTP 2.0(从 1.1 开始 keep-alive 默认开启,2.0 支持多路复用,大大提高了链接的可重用性和传输效率)时代影响已经比之前小很多,但 “预防 DNS 劫持” 和 “IP 做到服务器动态部署” 这两点问题依然可以用 IP 直连来解决。目前市面提供的类似服务主要有:[阿里云 HTTPDNS](https://help.aliyun.com/product/30100.html?spm=a2c4g.11186623.6.540.152a7797Bj2wEU) 和 [腾讯云 HTTPDNS](https://cloud.tencent.com/product/hd),其中需要解决的问题大同小异,两家都在开发文档中有提及。本文则在这些问题的基础上,补充了两个实践过程中遇到的问题。如果你之前从未了解过客户端 DNS 优化相关内容,这篇文章可以较完善地为你释疑;如果你之前已经有尝试过,那么也能通过这篇文章,看看他们实践中遇到的问题。
+
+### 🐕 [立志欲坚不欲锐 - 2019 年小结](https://mp.weixin.qq.com/s/1OeqJ-JSLtIRWqP8wOZRjg)
+
+[@J_Knight_](https://weibo.com/1929625262/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1):本文是冬瓜的 2019 年总结。本篇总结分别从社区贡献(GitHub,博客,公众号,DissCode 算法平台),读书,在线课程,算法题几个方面展开;在文章结尾处还分享了他的年度 OKR 并简单介绍了他在抖音的工作。可以说这一年他在技术上的学习以及输出都是非常高的,很值得同行学习。关于他的公众号,有兴趣的朋友可以从[ 2019 年文章汇总](https://mp.weixin.qq.com/s/v-yB2_ArfeQAhveHXfiIYA)这篇文章中详细了解。
+
+### 🐎 [MANAGE YOUR IOS RESOURCES TYPE-SAFELY WITH R.SWIFT](https://andreaslydemann.com/manage-your-ios-resources-type-safely-with-r-swift/)
+
+[@Damonwong](https://github.com/Damonvvong):在开发 iOS 项目的时候,如果你想要用代码访问一些资源文件,通常情况下,你需要使用 **magic strings** 在运行时动态的查找,这并不是一个十分安全的方式。
+
+在这方面,Android 的设计就比 iOS 好很多,每个 Android 项目都有一个 R.java 文件来解决 **magic strings** 的问题。也正是因为这个设计,iOS 这边衍生出了 [R.swift](https://github.com/mac-cain13/R.swift) 这个库,借助 Swift 的特性,在编译的时候就能及时的发现类似于资源文件丢失的问题。
+
+与 [R.swift](https://github.com/mac-cain13/R.swift) 类似还有一个库叫 [SwiftGen](https://github.com/SwiftGen/SwiftGen)。这两个库大同小异,大家可以根据自己的项目实际情况来选择。
+
+### 🐎 [CocoaPods 1.9 新特性](https://mp.weixin.qq.com/s/QJfLha9GmubfHjhnzQm9Fg)
+
+[@EyreFree](https://github.com/EyreFree):CocoaPods 是使用最广泛的 iOS 项目依赖管理工具,相信大家都有使用过,在此不多做赘述。目前 CocoaPods 已经发布了 1.9.0.beta.2 版本,按照以往的节奏,相信很快就会发布正式版。本次的 1.9 版本除修复了大量 Bug 外,还添加了 XCFramework 支持、Podspec 的基于配置的依赖关系以及 Swift 版本变体等一系列新特性,快来点开文章提前预习一波吧。
+
+### 🐎 [9to5mac 年度回顾:Apple 在 2019 年全年发布的所有产品](https://mp.weixin.qq.com/s/ShqUgoMpfoS9BFwBeDO2VQ)
+
+[@张嘉夫](https://github.com/josephchang10):对于苹果公司而言,2019 年是繁忙的一年,全年分发了无数的硬件和软件版本。从 Mac 系列和 iPhone 11 Pro 的多个更新到 Apple Watch Series 5 和 AirPods Pro,Apple 在 2019 年对其所有产品系列进行了更新和发布。本文是 9to5mac 对苹果在 2019 年发布的所有内容(包括软件和硬件)的一个回顾。
+
+### 🐎 [Debugging with Swift Combine Framework](https://www.vadimbulavin.com/debugging-with-combine-swift-framework/)
+
+[@zvving](https://github.com/zvving):响应式编程一贯有调试不便的问题,本文介绍基本的日志打印、断点调试和图表分析方法,帮助你更好的上手 Combine 开发。
+
+### 🐎 [向现有应用添加 Flutter](https://mp.weixin.qq.com/s/DckZviEm6P1cNC1oZBvXKw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):随着 Flutter 1.12的发布,官方带来了一项新功能 - [Add-to-app](https://flutter.dev/docs/development/add-to-app), 通过创建 Flutter module 的方式,可以快速的给现有应用添加 Flutter 能力,全程体验顺滑如丝。自此,还有什么理由说 Flutter 集成体验差😄。
+
+## 工具
+
+### [Publish](https://github.com/johnsundell/publish)
+
+[@四娘](https://kemchenj.github.io):Publish 是一个使用 Swift 编写的静态网站生成器,支持主题和插件等自定义功能,前身是 [SwiftBySundell](https://swiftbysundell.com) 这个网站的生成工具,现在作者整理后将它开源了出来。
+
+### [AppHost](https://github.com/pluosi/app-host)
+
+[@JimQ](https://github.com/waz0820):一个轻量级的包托管网站,主要用于 iOS 和 Android 的包管理,作用类似于 fir.im,不同之处是可以自由部署在内网,方便了公司项目保密,并且代码开源,方便根据各自需求进行定制化开发。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2020/#99-2020.01.13.md b/Reports/2020/#99-2020.01.13.md
new file mode 100644
index 000000000..bbaa4adbd
--- /dev/null
+++ b/Reports/2020/#99-2020.01.13.md
@@ -0,0 +1,137 @@
+# 老司机 iOS 周报 #99 | 2020-01-13
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+本期周报也是年前最后一期周报了,提前祝大家春节愉快~
+
+## 新手推荐
+
+### 🌟 🐕 [Flutter 如何高效的 JSON 转 Model](https://juejin.im/post/5e12eb566fb9a0480b415de2)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):由于 Flutter 禁用运行时反射,所以在 Flutter 中是没有 Mantle 等这类解析 JSON 的库。本文介绍了三种方式在 Flutter 中进行 JSON to Model :
+
+- 手动序列化 JSON
+- 使用 json_serializable
+- [使用工具网站](https://app.quicktype.io/)
+
+## 文章
+
+### 🌟 🐢 [Using Type Erasure to Build a Dependency Injecting Routing Framework in Swift](https://swiftrocks.com/using-type-erasure-to-build-a-dependency-injector-in-swift.html)
+
+[@Damonwong](https://github.com/Damonvvong):Swift 编译器的类型检查为 Swift 项目减少了很多错误的产生,但是过于严苛的校验机制,使得很多功能实现起来较为复杂。
+比如,作者在做模块拆分的时候,遇到了模块之间相互依赖的问题,最后他采用了**类型擦除**的办法,构建了一套依赖注入的路由框架思路,实现了模块之间的依赖的解耦,是一个不错的思路,做组件化的同学可以看一下具体的实现细节。
+同时,由于 Swift 复杂的类型系统,**类型擦除**的使用范围还是蛮广泛的。比如 Codable 的实现、RxSwift 中的 Signal、SwiftUI 中的 View 等,如果不了解**类型擦除**也可以看一下文章,了解一下**类型擦除**的概念。
+
+### 🌟 🐕 [静态拦截 iOS 对象方法调用的简易实现](https://juejin.im/post/5e1280fae51d4540e47ca450)
+
+[@Parsifal](https://github.com/ParsifalC):过去的 2019 年,在启动优化这一专项上,社区有了一个新的研究方向 -- 二进制重排。早之前的周报推荐过的两篇文章,「[手淘架构组最新实践 | iOS 基于静态库插桩的⼆进制重排启动优化](https://mp.weixin.qq.com/s/YDO0ALPQWujuLvuRWdX7dQ)」 和 「[抖音研发实践:基于二进制文件重排的解决方案 APP 启动速度提升超 15%](https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247485101&idx=1&sn=abbbb6da1aba37a04047fc210363bcc9&scene=21#wechat_redirect)」,详细介绍了这种方案的两种实现方式。
+
+做二进制重排中,必不可少的一步便是统计所有函数的调用频次。欧阳大哥针对这一步,提出了自己的一个新的思路 -- “利用静态库会将自己引用的外部符号单独保存在一张表中” 这一切入点从而替换 `objc_msgSend` 方法。
+
+> 目前社区内常用的统计函数使用频次的方案,值得一提的是,这些方案并不局限于统计函数使用频次这一场景:
+
+> - 基于运行时的 hook 方案:fishhook 等能提供动态修改 `objc_msgSend` 实现
+> - 静态插桩
+> - 借助于 LLVM 语法树分析来实现代码插桩
+> - 将源码编译为静态库,并通过修改静态库中 .o 目标文件的代码段来实现代码插桩
+> - 将所有静态库字符串表中的 objc_msgSend 统一替换为另外一个长度相同的字符串:hook_msgSend(名字任意只要长度一致并唯一)即可
+
+### 🐕 [移动开发者的必知音视频基础知识](https://juejin.im/post/5e12fe306fb9a0481467d399)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):作为移动开发者,有些时候会需要接触到音视频相关的开发。作者通过从基本概念、常见问题、应用场景等不同方面来科普音视频开发的基础知识,有助于帮助我们了解音视频开发中的一些常识性问题。
+
+### 🐕 [Web 离线技术原理](https://juejin.im/post/5cd4fda8f265da03a00febe1)
+
+[@looping](https://github.com/looping):本文列举了业界比较常见的四种离线方案,介绍的很全面,并且还从公共资源包、预加载 webview、预加载数据等问题展开进行了探讨分析,是一份很好的离线技术选型参考和方案原理学习的资料。不过正如作者所说,“对于一个优秀的 Hybrid 框架,这些还是远远不够的, ...还有很多东西需要我们探讨学习”。同样,作为一项技术,我们得清楚地认识到它的局限性和使用场景,才能用对、用好并改进它,这也是我们学习技术原理的目的之一。
+
+### 🐕 [Turning Property Wrappers into Function Wrappers](https://medium.com/flawless-app-stories/turning-property-wrappers-into-function-wrappers-2be3a49229f5)
+
+[@老峰](https://github.com/GesanTung):周报之前推荐过 Swift 5.1 中新特性 Property Wrappers 的[相关文章](https://www.vadimbulavin.com/advanced-guide-to-userdefaults-in-swift/), 本篇文章作者分享了属性包装器在 function 下的应用,如 @Delayed(delay: 0.3) 、 @Debounced(delay: 0.3) 等,思路比较新颖,感兴趣的读者可以尝试。
+
+### 🐕 [CONTINUOUS INTEGRATION USING GITHUB ACTIONS FOR IOS PROJECTS](https://andreaslydemann.com/continuous-integration-using-github-actions-for-ios-projects/)
+
+[@老驴](https://www.weibo.com/6090610445):Github Actions 是 Github 2019 年的重磅功能,上线之后也得到了很多开发者的响应,开发了很多针对不同框架,不同语言的各种 actions。
+
+网上在 iOS 项目中使用 Github Actions 的内容相对还是比较少的,目前大家主要还是依赖以前几个比较常用的持续集成平台对项目做持续集成。本文就介绍了如何使用 Github Actions 来做 iOS 项目的持续集成。步骤虽然不算太多,但是也不算特别简单,有兴趣的读者朋友们可以在自己的项目中尝试一下。
+
+
+### 🐕 [从客户端角度窥探小程序架构](https://juejin.im/post/5e0dfb8cf265da5d2076ef69)
+[@莲叔](https://weibo.com/aaaron7): 微信小程序并不是新鲜事物,但是近年来小程序 SDK 的概念越来越流行,接入 SDK 就能直接直接接入一整个生态,确实非常有吸引力。本文比较完整的分析了小程序的发展历程,以及简单剖析了小程序的实现方式。探讨了小程序基于 H5 的技术栈是如何实现展现与逻辑的解耦,也 cover 了小程序相关领域的常用技术方案,比如离线包和预加载等。最后简单介绍了支付宝小程序的架构。整篇文章内容相对全面,适合入门的同学阅读。
+
+### 🐕 [为什么 TCP 协议有性能问题 · Why's THE Design?](https://draven.co/whys-the-design-tcp-performance)
+[@水水](https://www.xuyanlan.com):TCP 协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据都会通过 TCP 协议传输,然而 TCP 在设计之初没有考虑到现今复杂的网络环境,本文会分析 TCP 协议为什么在弱网环境下有严重的性能问题。
+在弱网环境下(丢包率高)影响 TCP 性能的三个原因:
+- TCP 的拥塞控制算法会在丢包时主动降低吞吐量;
+- TCP 的三次握手增加了数据传输的延迟和额外开销;
+- TCP 的累计应答机制导致了数据段的传输;
+
+### 🐕 [UINavigationBar 在 iOS 13 中的变动](https://sarunw.com/posts/uinavigationbar-changes-in-ios13/)
+
+[@AidenRao](https://weibo.com/AidenRao):苹果在 iOS13 中带来了很多外观更改,这篇文章主要讲导航栏的变动,大标题样式导航栏的默认外观已从半透明更改为透明。这个变动不大,可以添加部分代码恢复半透明。iOS13 下添加了 UINavigationBarAppearance 类,可以对导航栏外观进行自定义,去设置样式,阴影,背景,标题位置,按钮样式等。现在你可以删除你的自定义导航栏的代码,前提是 APP 的最低支持版本升到 13 (微笑)。
+
+### 🐕 [How to make an augmented reality decorating experience app with AR Quick Look](https://engineering.nodesagency.com/categories/ios/2019/12/31/How-to-make-an-Augmented-Reality-decorating-experience-app-with-AR-Quick-Look)
+
+ [@张嘉夫](https://github.com/josephchang10):[AR Quick Look](https://developer.apple.com/augmented-reality/quick-look/) 能够为用户提供强大的增强现实体验,包括移动、缩放物体等交互方式,以及 people occlusion 功能,此外还可以分享“开箱即用”的模型。因此现在 AR 项目的大部分工作都来自于准备模型。这篇文章会为你介绍如何寻找合适的模型、对模型的尺寸进行适当的调整、生成并测试 USDZ 模型文件,并最终通过 Quick Look 功能制作为一款 AR app。
+
+## 工具
+
+### [为 iOS 审核操碎了心!用岩鼠提升 iOS 审核通过率吧](https://mp.weixin.qq.com/s/Mgywz7KO1tDh8POS2Agnsw)
+
+[@JimQ](https://github.com/waz0820):UC 研发效能团队建立的这套 iOS 预审工具可以有效地排除 iOS 审核上可能遇到的诸多坑点,尤其是针对不小心误用私有 API 库的痛点,团队收集了所有已知的私有 API 库,且在不断地完善与更新。开发者可以免费试用。
+
+## 代码
+
+### [BetterCodable](https://github.com/marksands/BetterCodable)
+
+[@享耳先森](https://github.com/iblacksun):Swift 4.0 开始引入 `Codable` 解决数据到模型转换的问题,但实际使用过程中经常需要自定义 `init(from decoder: Decoder) throws` 方法,`BetterCodable` 结合 Swift 5.1 引入的 `Property Wrappers` 来解决这个问题。
+
+## 书
+
+### [《谷歌方法》](https://book.douban.com/subject/33430445/)
+
+不要被书名骗了,这不是一本严肃的谈论“方法”的书,相反,读起来像一个冒险故事一样吸引人。
+
+这本书介绍了一家地图软件公司(KeyHole)被谷歌收购后,一路成长最后成为一个超 10 亿用户的明星产品的故事。和其他创业故事的区别在于,谷歌地图的核心壁垒是技术门槛。很少看到一个技术驱动型产品,从早期到最后大获成功的完整记录。在这个过程中,你也可以一窥谷歌如何打造一款成功的产品。
+
+## 音视频
+
+### 🌟 🐎 [推荐订阅播客节目:`[weak self]`](https://weakself.dev/)
+[@zvving](https://github.com/zvving):三名台湾 iOS 工程师带来的高质量播客节目《弱弱的我》第一季正式完结!🎊🎉
+
+虽常被垃(le)圾(se)车打断,也总是录音设备故障,内容却欢乐且丰富:语言交流、Test CI 踩坑、管理心得、职场烦恼,鸡汤大饼,尽情畅聊。老司机团队倾情推荐!
+
+`weak self, strong together!` 快乐的时光总是短暂的,期待第二季带来更多欢乐~
+
+## 内推
+
+> **字节跳动抖音商业化团队急招客户端工程师,速上车:**
+> - 字节跳动旗下抖音和TikTok的商业化研发工程师,负责抖音内所有赚钱的需求!不管是广告、dou+、企业号、抖音电商还是抖音小游戏,都有我们的身影!
+> - 团队base 北京、上海、杭州、深圳,我们不局限技术栈,对于新技术保持开放的态度。
+> - 简历以【姓名+投递岗位+手机号】格式发送至 fulei.bill@bytedance.com 或者直接加微信 `fuleiac`
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需翻墙,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#143-2021.01.04.md b/Reports/2021/#143-2021.01.04.md
new file mode 100644
index 000000000..50e53b48d
--- /dev/null
+++ b/Reports/2021/#143-2021.01.04.md
@@ -0,0 +1,97 @@
+# 老司机 iOS 周报 #143 | 2021-01-04
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 2021
+
+[@Parsifal](https://github.com/ParsifalC):先说句迟到的新年快乐!2020 年终于过去了,崭新的一年也已经到来。在所有编辑的努力以及广大读者的支持下,很感恩周报又和大家一起度过一年。这是周报第 143 期,也是 2021 年的第 1 期,愿我们还能一起成长~
+
+> 在朋友圈刷屏年终总结的时候,我们也做了个小活动 - [【请查收】你的 2020 年度 Github 报告](https://mp.weixin.qq.com/s/eBw4gS6-Y8ZYNReF3pbHng),感兴趣的读者可以参与下~另外,想加入周报读者群的朋友可以添加 iTDriverr 为好友。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [Sirikit 和 Shortcuts 的新特性](https://mp.weixin.qq.com/s/gw35JpL_JhGXIjVybxNM3Q)
+- [SiriKit 新变化:评估优化 App 的语音交互](https://mp.weixin.qq.com/s/U9dgIg-cJn0kAWI4Uj7V7A)
+
+## 文章
+
+### 🐕 [Flutter 中一行文字到屏幕上,渲染全过程!](https://mp.weixin.qq.com/s/RAM3GbJ_vjnC_JcgNrFKtg)
+
+[@极速男孩](https://github.com/ztlyyznf001):flutter 中除了我们熟悉的 StatelessWidget 和 StatefluWidget 两个 Widget 以外,还有InheritedWidget、 RenderObjectWidget 这种 Widget。 这篇文章主要通过一步步的解析源码中如何使用 RenderObjectWidget 中的 RenderParagraph 来将 RichText 渲染到屏幕中的。然后通过去自定义一个文本的组件来进一步了解如何使用 RenderObject 来渲染文字的。
+
+### 🐢 [今日头条优化实践: iOS 包大小二进制优化](https://mp.weixin.qq.com/s/TnqAqpmuXsGFfpcSUqZ9GQ)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):苹果对 iOS App 大小有严格的限制,包括下载大小和可执行文件的大小。本文从背景知识和面临的实际问题出发,介绍了 `__TEXT` 段迁移技术及减少下载大小的原理,描述了我们在实践过程中遇到的问题,并从源码的角度详细分析了问题产生的根本原因以及解决方式,解答了相关疑问和上线后遇到的问题。需要注意的是,由于苹果在 iOS 13 已经对下载大小做了优化,所以本文方案无法再对 iOS 13 及更高系统的设备的下载大小进一步优化。
+
+### 🐕 [百度App Objective-C/Swift 组件化混编之路(二)](https://mp.weixin.qq.com/s/xA3g0GdNvfKNgfvG6imEvw)
+
+[@JonyFang](https://github.com/JonyFang):本文主要以依赖管理工具 EasyBox 工具链为支撑,介绍百度 App 如何实现组件内的 Objective-C/Swift 混编、单侧、二进制发布和集成,以及组件间的依赖和引用。
+
+对于开发者来说,不用去关心混编是如何实现的,只需要和正常开发一样,组件内引用所需的头文件(#import )或 module(@import ModuleXX),组件间在声明依赖后亦可直接引用头文件或 module ,EasyBox 工具链会根据源码文件或配置进行 module 化和 Xcode Build setting 相关的处理。
+
+对于混编组件的二进制打包,开发者们也不用去关心如何处理编译产物,诸如 `*-Swift.h`、二进制架构、`*.swiftmodule`、`*.interface` 等,EasyBox 工具链打包命令 box package 会全权处理,降低开发者们的配置难度和协同成本。
+
+### 🐎 [2020 年文章总汇](https://mp.weixin.qq.com/s/71z6vbkxjzk8SzJCmZeFlw)
+
+[@J_Knight_](https://github.com/knightsj):本文是一瓜技术公众号在2020年的文章汇总,同时也介绍了其他原创作者的信息以及分享的专题文章列表。而且在文章底部有一个关于读者喜爱的专题的投票,感兴趣的读者可以参与一下。
+
+### 🐎 [使用 Swift 编写 CLI 工具的入门教程](https://mp.weixin.qq.com/s/V4IdsYUouKGr68ULyb88Qw)
+
+[@Damien](https://github.com/ZengyiMa):Swift 的推出提高了 iOS 的开发效率和体验,本文会介绍 Swift 在编写 CLI(command line tool) 方面的用途,文章会详细介绍开发 CLI 的方方面面,如 SPM 搭建开发框架、参数解析、单测的编写、工具安装等等。希望通过本文,读者们可以将 Swift 应用到更多方面。
+
+### 🐕 [图解 Mach-O 中的 got](https://www.jianshu.com/p/55d82172a9f8)
+
+[@Leo](https://github.com/leomobiledeveloper):本文介绍了什么是 got、got 在 mach-o 中的位置、函数符号如何与 dyld_stub_binder 进行关联,以及如何一步步查找动态库符号的值。图文并茂,可让读者了解动态库符号的绑定原理。
+
+> 推荐人:[silan-liu](https://github.com/silan-liu)
+
+### 🐕 [Thresh 今天正式开源,有望成为替代 RN 的一种长期方案](https://mp.weixin.qq.com/s/E2lhodazRZRVPUGafY92xA)
+
+[@Parsifal](https://github.com/ParsifalC):有点标题党的意思,不过文章还是值得一看。[Thresh](https://github.com/ymm-tech/thresh) 其实只是本篇文章的一部分,整篇文章内容围绕在「满帮团队在大前端效率提升实践的诸多尝试」上,包括基于 RN 封装的 MBRN,基于 Flutter 渲染的 Thresh 框架,本地 H5 方案,Android 端插件化方案,基于自定义 DSL 的搭建化框架 DaVinci,随着业务场景的多样化和业务需求迭代的高频性,这些方案可能是各个技术团队都会去摸索的。其中,Thresh 是利用 JSC + Flutter Engine 完成的动态化能力,这样也算曲线弥补了 Flutter 关闭 AOT 下的动态能力缺陷,而 Flutter 独立的渲染引擎也保持了多平台一致性的优势。至于值不值得,个人觉得还是见仁见智,结合团队实际情况来看。
+
+## 工具
+
+### [Downloader-for-Apple-Developers](https://github.com/vineetchoudhary/Downloader-for-Apple-Developers)
+
+现在 Xcode 已经达到 10+ GB ,这个软件利用 aria2 可以多线程下载高速 Xcode,对于经常下载 Xcode 失败的同学可以试试~
+
+> 由 [iHTCboy](https://github.com/iHTCboy) 推荐
+
+### [DevUtils-app](https://github.com/DevUtilsApp/DevUtils-app)
+
+[@Parsifal](https://github.com/ParsifalC):由 Swift 编写的一个聚合了许多开发过程中会用到的小工具的 Mac App,比如各种编码解码、JSON 格式化、时间戳转换等等。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#144-2021.01.11.md b/Reports/2021/#144-2021.01.11.md
new file mode 100644
index 000000000..960c8a04e
--- /dev/null
+++ b/Reports/2021/#144-2021.01.11.md
@@ -0,0 +1,113 @@
+# 老司机 iOS 周报 #144 | 2021-01-11
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [WWDC20 CoreImage 专题](https://mp.weixin.qq.com/s/azSk79UwWQaXY6vnZyifkA)
+- [Mac Catalyst 的新功能](https://mp.weixin.qq.com/s/zlmsfTgUtJNKbBZxOgn8KQ)
+
+## 新闻
+
+### [The 2020 State of the OCTO—VERSE](https://octoverse.github.com/)
+
+[@Parsifal](https://github.com/ParsifalC):GitHub 官方的 2020 年度报告,作为聚集了最多全球开发者的开源平台,GitHub 这次从社区、生产率以及安全三个方面,展示不同的数据来总结过去的 2020 年。
+
+## 新手推荐
+
+### 🐎 [the different types of self in Swift](https://www.jessesquires.com/blog/2020/12/28/the-different-types-of-self-in-swift/)
+
+[@极速男孩](https://github.com/ztlyyznf001):这篇文章简单的介绍了在 Swift 三种 self 的不同用法,包括 self. 前缀,.self 后缀和 self 类型。
+
+## 文章
+
+### 🌟 🐎 [从 Weex 到Web,性能逆势如何破局?](https://mp.weixin.qq.com/s/0EluripD7qNZtx7-aCstkw)
+
+[@Damien](https://github.com/ZengyiMa):今年双十一飞猪会场从前端渲染引擎从 Weex 回归到 WebView,在迁移变化的同时,同时性能指标上的优化也不能落下,飞猪团队为了极致的性能体验,使用了端侧预渲染、服务端渲染、页面快照、SPA 单页应用模式以及资源&数据预缓存等方案来进行极致的优化,同时取得的效果也是很惊艳的:日常会场首屏耗时环比降低 25%,较 618 以及国庆会场首屏耗时环比降低 20%。对 WebView 优化相关的同学推荐阅读此文,或许可以找到灵感。
+
+### 🌟 🐎 [如何持续的自我提升](https://mp.weixin.qq.com/s/ibezFl5p62yDlb8HS6NyJw)
+
+[@J_Knight_](https://github.com/knightsj):本文作者结合自己的实际学习案例分享了 “如何自我学习/提升”的问题,整体的学习思路如下:
+- 初识:被灌输知识的过程。
+- 思考:主动消化知识的过程。
+- 探索:手动进行研究的过程
+- 总结和超越:完成自我提升的过程
+
+而且文章还提到了费曼学习法,感兴趣的读者可以阅读一下本文。
+
+### 🌟 🐢 [Preventing Data Races in the Swift Concurrency Model](https://gist.github.com/DougGregor/10db898093ce33694139d1dcd7da3397)
+
+[@享耳先森](https://github.com/iblacksun):并发一直是现代语言的重要部分,根据 Swift Roadmap,预计 Swift 6.0 将推出基于协程的 async/await 模型及新的 Actor Isolation 并发模型,Swift 核心成员 Doug 写了一篇文章,介绍 Swift 加入了新的并发模型之后,有哪些方式可以避免数据竞争。
+> 参考:
+- [Swift Concurrency Roadmap](https://forums.swift.org/t/swift-concurrency-roadmap/41611)
+- [Protocol-based Actor Isolation: Draft #2](https://docs.google.com/document/d/1BEO6QwzcYCUhaGyA-WRoM_phRa7O7mGPNIMdSV4StEE/edit)
+
+### 🐕 [8 Common SwiftUI Mistakes - and how to fix them](https://www.hackingwithswift.com/articles/224/common-swiftui-mistakes-and-how-to-fix-them)
+
+[@zvving](https://github.com/zvving):SwiftUI 之于 UIKit,就像 objc 之于 swift:二者在设计思想、具体实现方面有诸多关联,却又是底层逻辑完全不同、『推倒重建』的两类事物。
+
+带着 UIKit 已有经验去学习 SwiftUI,能快速上手的同时也会掉一些不易察觉的坑:细节不符合预期、实现冗余、写法错误而不自知……本文作者总结了 SwiftUI 新手常犯的 8 类错误,解决问题的同时,帮助你更好的理解 SwiftUI 的独特之处。
+
+### 🐕 [更现代的 Swift API 设计](https://mp.weixin.qq.com/s/DhtYVLNq5IRu2eUEktXgJg)
+
+[@EyreFree](https://github.com/EyreFree):Swift 是一门简洁同时富有表现力的语言,这其中隐藏着众多的设计细节。本文通过提出一个 Struct 的语义问题,在寻找答案的过程中逐步引出 DynamicMemberLookup 应用、PropertyWrapper(WWDC19 的 PropertyDelegate) 的实现原理以及 SwiftUI DSL 中 PropertyWrapper 的应用,来一起看看更现代的 API 背后的设计过程。希望这些理念能帮助你用 Swift 在项目中设计出更现代、清晰度更高的 API。
+
+### 🐕 [一文了解 Xcode 生成「静态库」和「动态库」 的流程](https://mp.weixin.qq.com/s/WH8emrMpLeVW-LfGwN09cw)
+
+[@JonyFang](https://github.com/JonyFang):本篇主要解答了 iOS App 的链接是由谁完成的。作者通过创建 Demo 来实践 Xcode 生成`静态库`和`动态库`的流程,过程中分析 [Report navigator](https://help.apple.com/xcode/mac/11.4/#/dev21d56ecd4) 页面中详细的 Build(构建)日志,得到的结论是:
+- 只有在 `动态库` 的链接过程会依赖 `clang Driver`;
+- 真正执行生成 `静态库` 与 `动态库` 的任务的是 `libtool` 和 `ld64`。
+
+## 工具
+
+### [iSimulator](https://github.com/wigl/iSimulator)
+
+[@红纸](https://github.com/nianran):iSimulator 是一款用于操控 Xcode 模拟器的 GUI 工具,其包含基础增删模拟器、展示应用安装列表、快捷导航应用的 Sandbox/Bundle 文件夹、APP 多模拟器同步装载等多种功能。还在烦恼找不到模拟器安装、文件夹路径的小伙伴可以尝试一下此工具。
+
+## 代码
+
+
+### [滴滴DoKit For Flutter正式开源,功能及核心实现解读](https://mp.weixin.qq.com/s/QLwE-ehvp9dHW4QJmAWI9g)
+
+[@邦Ben](https://weibo.com/linwenbang):本文介绍了滴滴开源的 DoKit,DoKit 是一个针对 Flutter 的产研工具包,集成了各种丰富的小工具,UI、网络、内存、监控等等。本文也简单介绍了一下原理,但是实际实现方式还是仔细看代码更为确切。作为辅助类的工具,可以在调试方面提供到比较实时的反馈(例如测试找你反馈bug的时候,不用连个线去 debug 或者传日志一点点看),有需要可以一用。
+
+- Github 地址:
+https://github.com/didi/DoraemonKit/tree/master/Flutter
+
+- Pub 仓库地址:
+https://pub.dev/packages/dokit
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#145-2021.01.18.md b/Reports/2021/#145-2021.01.18.md
new file mode 100644
index 000000000..0ad6225aa
--- /dev/null
+++ b/Reports/2021/#145-2021.01.18.md
@@ -0,0 +1,122 @@
+# 老司机 iOS 周报 #145 | 2021-01-18
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC20
+
+本周在周报公众号上我们推送了 3 篇 WWDC20 内参专栏内的文章,每篇都很精彩!
+
+- [RealityKit 的新变化:让构建的场景更逼真、趣味](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247488833&idx=1&sn=0ac21f58f9a4138df4f7b18b205880d9)
+- [探索 ARKit 4](https://mp.weixin.qq.com/s/5fKY9q071JcBWK4GVwH0Vg)
+- [美化 Mac Catalyst App](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247488690&idx=1&sn=e3a5a68b7782592583144fb8f3afb6e9&chksm=eaa28bb9ddd502afeb72166541a8975f6dc651e186ba8b6d6fee7ae60680e884617b58f11a89&scene=178&cur_album_id=1499758126315683840#rd)
+
+## 新闻
+
+### 🌟 🐕 [Flutter 2021 RoadMap](https://github.com/flutter/flutter/wiki/Roadmap)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):按照国际惯例,最近 Flutter 官方放出了 2021 年的 Flutter RoadMap,透过这份 RoadMap 我们可以清晰的了解官方团队今年的工作,2021 年 Flutter 官方主要发力在以下几点:
+
+- 空安全
+- Android & iOS 资源下载优化,新特性支持,降低混合开发复杂度等
+- Web & Desktop
+- 开发体验提升
+- 生态建设
+- 质量提升
+- 新功能开发
+- 版本发布节奏,全年 4 个稳定版本,每月一个 beta 版本
+
+## 文章
+
+### 🌟 🐕 [抖音品质建设 - iOS 安装包大小优化实践篇](https://mp.weixin.qq.com/s/LSP8kC09zjb-sDjgZaikbg)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):包大小是 App 重要的基础体验指标之一,本文为大家介绍了抖音在优化安装包大小方向做的一些探索和尝试,包括:
+
+- AppStore 对安装包的限制沿革以及 App 花费精力优化 iOS 安装包将获得什么收益
+- 如何去分析一个安装包
+- 如何在线下准确把控安装包大小对 AppStore 上影响
+- 常见的一些包大小优化方式
+- 一些影响包大小的编码习惯
+
+### 🐕 [Qcon 演讲实录 | XQUIC 与多路径传输技术 Multipath QUIC](https://mp.weixin.qq.com/s/3dnidnhCW-61PS5Stlb0Iw)
+
+[@老驴](https://www.weibo.com/6090610445):随着移动互联网的发展,传统 TCP 越来越难以满足新的移动互联网需求,于是增强型 UDP 越来越受到大家的注意,获得了高速发展。阿里团队的这篇文章介绍了基于 QUIC 标准的阿里自研版本 XQUIC 以及在此基础上的 Multipathh QUIC。虽然截止到发稿时,阿里尚未开源 XQUIC,但是其中的一些设计思路也值得借鉴。
+
+### 🐕 [手机阿里端智能方案演进](https://mp.weixin.qq.com/s/oT5jQYQkQd-09ktFXS_OYg)
+
+[@莲叔](https://github.com/aaaron7):端智能可以说是最近两年移动端最具有未来感的技术方向。从苹果倾力打造的 CoreML 日趋成熟,到 Google 针对 TFLite 的持续优化以及推出类似 MediaPipe 这样的端侧 AI 框架,都代表这个方向并不是空穴来风的, 而是实打实的场景和业务赋能。端智能从场景上维度,一般分为两大类,首先是视觉图像类,主要通过人脸、手势、前后景分割等模型服务于拍摄、互动、相册等应用,已经日趋成熟,能力也越来越强。而另一类则是策略类,即是通过算法对端上的用户行为数据进行实时的挖掘和计算,来预测用户对于内容、功能的喜好或者耐受度,进而匹配相应的措施来引导用户。后一种还不算成熟,但阿里整体在后一种场景上已经有了比较多的探索与收获。
+
+本篇文章围绕 1688 团队决策类场景的探索,介绍了决策类端智能工程化的核心组成部分,虽然没有讲太多技术细节,但对于端智能而言,方案和场景其实才是最核心也是最有价值的。强烈建议对于希望在业务中应用和落地端智能的团队参考。
+
+### 🐕 [iOS 性能监控:Runloop 卡顿监控的坑](https://mp.weixin.qq.com/s/vMRQ0VuHLxpaY9oCNd5G8w)
+
+[@Leo](https://github.com/leomobiledeveloper):本文通过分析 __CFRunLoopDoObservers 函数 和 CFRunLoopAddObserver 函数的内部逻辑,分析了网络上广泛流传的 Runloop 卡顿监测方案 存在低可用性问题的原因,并给出了一份高可用的 Runloop 卡顿监测方案。
+
+### 🐕 [Building On-Call Culture at GitHub](https://github.blog/2021-01-06-building-on-call-culture-at-github/)
+
+[@AidenRao](https://weibo.com/AidenRao):如何建立高效的 on-call 机制,GitHub 在 blog 分享了他们在这方面的经验。
+
+- 推出新系统,将文件和服务进行关联,服务分配到团队。团队发生变化,文件所有权也更容易跟着变化。
+- 将所有警报进行拆分, 分配到各团队,清理不再需要的警报。
+- 做好生活与工作的平衡,不同时区的团队成员,一起进行 24 小时轮值。on-call 顾不过来时,团队成员也需要相互支持。
+- 没有 on-call 任务的时候,更新运行手册,调整嘈杂的警报,持续改善 on-call 体验。
+
+### 🐕 [从 Mach-O 角度谈谈 Swift 和 OC 的存储差异](https://www.jianshu.com/p/ef0ff6ee6bc6)
+
+[@Damien](https://github.com/ZengyiMa):本文从二进制的角度初步介绍了 Swift 与 OC 的差异性,包括 Swift 在可执行文件中函数表的存储结构、函数的存储结构等,作者从动态调用开始引入思考,逐渐探索 Swift 的二进制存储。以及从最终的结论来证明 Swift 动态调用的局限性。对于 Swift 初学者有很强的学习价值。
+
+### 🐎 [Keep private information out of your logs with Swift](https://olegdreyman.medium.com/keep-private-information-out-of-your-logs-with-swift-bbd2fbcd9a40)
+
+[@EyreFree](https://github.com/EyreFree):在实际的 App 开发 & 维护过程中,我们经常会遇到将用户的错误日志等数据上传到服务端来进行排查的场景,但在这些日志中可能会包含一些用户的敏感信息,绝大部分情况下我们排查软件错误不需要了解这些具体的用户隐私数据,本文介绍了在 Swift 中如何利用 `Property Wrapper` 将敏感数据从日志中排除,快来了解一下吧。
+
+### 🐕 [ARM64 撬开逆向大门](https://mp.weixin.qq.com/s/8HQd6st7ZvUC5f4TZ1cBWg)
+
+ARM64 相比我们都不陌生,苹果较新的机型基本都是基于 ARM64 架构的。掌握一些 ARM64 的汇编只是对我们日常开发很有帮助,例如一些 crash 在系统库里面的,利用汇编调试会很有帮助。本文虽然开篇是针对安卓来说的,但文中关于 ARM64 汇编的介绍,以及一些指令的用法等其实也是通用的。
+
+### 🐕 [Flutter 的性能分析、工程架构与细节处理](https://mp.weixin.qq.com/s/0R5UnVFlVbLKoV__s66HnA)
+
+[@邦Ben](https://weibo.com/linwenbang):有道智云技术团队将从性能、架构、适配等多个方面进行讲解实践过程中的一些实际问题,值得一看。其中还包括了 Flutter Web 的 Demo,Flutter Web Google 还在持续优化,这部分可以拭目以待。文章中也提及到了 `Flare` (动画制作工具)制作 Flutter 动画,如果对动画方面有需求的,也可以单独进行了解。
+
+- Flare 网址:https://www.2dimensions.com
+
+### 🐎 [如何排查无法复现的系统内部 Crash?](https://juejin.cn/post/6916048281113985032)
+
+[@水水](https://www.xuyanlan.com): 作者从自身遇到的一个 Crash 出发,记录了从分析、假设、模拟复现、运行分析、修复 Crash 的一个过程。是非常好的一个 Crash 解决方法。希望能够给读者有所启发。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> **百度网盘 - 北京 - iOS/Android/Flutter/音视频 研发工程师**
+>
+> 百度网盘是行业 Top1 的云存储产品,已经为超过 7 亿用户提供云服务。一刻相册是「百度网盘」团队出品的云相册 App,经过一年多的发展,已经跃居相册行业 Top2。部门有完善的分享培训体系,有业务和技术挑战。目前,> 部门业务处在新的高速发展时期,长期大量招人,实习、应届、社招经验不限,职级不限,欢迎投递简历。
+>
+> 简历发送至 xuyafei01@baidu.com,或者添加微信 xyf65803387 了解细节。
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#146-2021.01.25.md b/Reports/2021/#146-2021.01.25.md
new file mode 100644
index 000000000..e489816e5
--- /dev/null
+++ b/Reports/2021/#146-2021.01.25.md
@@ -0,0 +1,88 @@
+# 老司机 iOS 周报 #146 | 2020-01-25
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+
+## 文章
+
+### 🌟 🐕 [离线 Hybrid 容器如何做到接近 100% 秒开?](https://mp.weixin.qq.com/s/inAFLg85TfmXOWXS50pEfg)
+
+[@JonyFang](https://github.com/JonyFang):普惠四轮出行业务技术团队针对 Hybrid 容器进行的技术升级,本篇主要的脉络如下:
+
+- 目前 Hybrid 容器遇到的问题
+- 问题分析及解决方案
+- 每个点的详细方案和线上效果
+- 整体优化后的线上效果
+- 后续规划和进一步探索
+
+从发现问题、针对问题提出解决方案、到上线效果分析,整个实践的过程和思考,值得一看。
+
+### 🌟 🐕 [非礼勿视!Objective-C 里的 eval](https://mp.weixin.qq.com/s/6dwi96sQ222KVsgbt4FW5A)
+
+[@AidenRao](https://weibo.com/AidenRao):本文从一个 CTF 题目展开,从官方文档结合反汇编分析,挖掘出语言和运行时鲜为人知却可能被滥用的机制。谁曾想到编译型的语言竟然也内置支持 eval(允许将输入的字符串变量当作代码动态执行)?
+
+### 🐎 [First stable release of SwiftWasm 5.3 is now available](https://forums.swift.org/t/first-stable-release-of-swiftwasm-5-3-is-now-available/41868/7)
+
+[@xiaofei86](https://weibo.com/xuyafei86):[WebAssembly](https://developer.mozilla.org/zh-CN/docs/WebAssembly) 是一种新的[低级语言](https://zh.wikipedia.org/zh-hans/低级语言)(机器代码或汇编语言),旨在让开发者能运用自己熟悉的编程语言编译,再藉虚拟机引擎在浏览器内运行。其开发团队来自 Mozilla、Google、Microsoft、Apple,代表着四大网络浏览器 Firefox、Chrome、Microsoft Edge、Safari。
+
+2019 年 WebAssembly 被 W3C 推荐为 Web 的第四种语言,目前支持 C、C++、Rust、Go、Java、C#。现在,随着 SwiftWasm 5.3 第一个稳定版本现的发布,Swift 也被纳入 WebAssembly 的支持范围,这意味着您可以构建完全用 Swift 编写的浏览器应用程序。有兴趣在更多平台应用 Swift 的读者可以阅读原文详细了解。
+
+### 🐕 [Flutter 高性能、多功能的全场景滚动容器,一定要看!](https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247486656&idx=1&sn=81e14ac99be2d75b5842529b8c694244&chksm=fd54d8d1ca2351c7ffe5e981aba49443b6aae2642bda6ac7a8951eabddd8a4307adcb98f6991&scene=0&xtrack=1#rd)
+
+[@邦Ben](https://weibo.com/linwenbang):闲鱼技术设计了一套流式场景下通用的页面布局解决方案 PowerScrollView。主要为解决性能以及曝光等基础需求。性能优化方面从局部刷新,分帧渲染优化。从文章实践结果来说:有不错的优化,但是在低端机上上表现依旧需要继续优化。可惜方案还没有开源,这里大家做优化的话可以进行思路上的参考。
+
+### 🐕 [HTTPS 温故知新](https://mp.weixin.qq.com/s?__biz=MzkzMjExMTAwMQ==&mid=2247488855&idx=1&sn=ad55f4338dd53b9f92ac0fa53b7df6f2&chksm=c261e2a1f5166bb79f77fa14b9cf987c9a7c5f3ec7b4bddf75807f06cf6bdda8d7ada71307a3&scene=178&cur_album_id=1501778677406203906#rd)
+
+[@水水](https://www.xuyanlan.com): 一缕殇流化隐半边冰霜的 HTTPS 温故知新系列文章,相信读者们肯定能感受到『温故』亦或 『知新』。 HTTPS 温故知新系列篇合集入口: https://halfrost.com/tag/https/
+
+### 🐕 [让 Flutter 在鸿蒙系统上跑起来](https://mp.weixin.qq.com/s/vTWZRaxvsOS_VRjfh6l4FQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):鸿蒙系统 (HarmonyOS)是华为推出的一款分布式操作系统,那么如何在保证开发迭代效率的前提下,以相对低的成本将移动应用快速移植到鸿蒙平台上呢?美团外卖 MTFlutter 团队近期做了一次技术探索,成功地实现了 Flutter 对于鸿蒙系统的原生支持。
+
+### 🐢 [百度App Objective-C/Swift 组件化混编之路(三)- 实践篇](https://mp.weixin.qq.com/s/-rBtXtkelcPQBMjQhwu07w)
+本文是『百度App Objective-C/Swift 组件化混编之路』系列文章的第三篇,本文重点介绍了百度App 组件化 Objective-C/Swift 组件化混编改造实践,感兴趣的同学可以看下,建议先看阅读完前两篇文章:
+[百度App Objective-C/Swift 组件化混编之路(一)](https://mp.weixin.qq.com/s?__biz=MzUxMzk2ODI1NQ==&mid=2247484177&idx=1&sn=df772d2134ad814bf0f8fafb883d8f77&chksm=f94c5201ce3bdb1787ea4f310de02b0a967983a8de3647034a2dc3c26c520fe493632aeb8be3&scene=21#wechat_redirect)
+[百度App Objective-C/Swift 组件化混编之路(二)- 工程化](https://mp.weixin.qq.com/s?__biz=MzUxMzk2ODI1NQ==&mid=2247484191&idx=1&sn=b78cab8a22733e61e4a8b92e36f43ea5&scene=21#wechat_redirect)
+
+## 工具
+
+### [swift-create-xcframework](https://github.com/unsignedapps/swift-create-xcframework)
+
+[@四娘](https://kemchenj.github.io/):基于 xcodebuild 封装的一个 CLI 工具,可以将 Swift Package 打包成 XCFramework:
+
+```shell
+swift create-xcframework
+```
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#147-2021.02.01.md b/Reports/2021/#147-2021.02.01.md
new file mode 100644
index 000000000..821e24c6e
--- /dev/null
+++ b/Reports/2021/#147-2021.02.01.md
@@ -0,0 +1,109 @@
+# 老司机 iOS 周报 #147 | 2021-02-01
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+## 新闻
+
+### 🌟 🐕 [AppTrackingTransparency 的要求即将生效](https://developer.apple.com/cn/news/?id=8rm6injj)
+
+[@极速男孩](https://github.com/ztlyyznf001):苹果在初春发布的 iOS 14、iPadOS 14 和 Apple tvOS 14 更新版本中要求 APP 通过 AppTrackingTransparency 证的用户同意来获取广告标识符,在未征得同意的情况下,设备的广告标识符都为零。同时增加 app 的“私人点击测量”支持,来让用户可以测量网站的广告活动。
+
+
+## 文章
+
+
+### 🐢 🌟 [抖音品质建设 - iOS启动优化《实战篇》](https://mp.weixin.qq.com/s/ekXfFu4-rmZpHwzFuKiLXw)
+
+[@Leo](https://github.com/leomobiledeveloper):文章从启动监控,分析工具以及最佳实践三个角度详细介绍了抖音 iOS 客户端是如何做启动优化的。即包括了启动任务管控,预加载等常规方案,又介绍了动态库懒加载,background fetch 等非常规方案,推荐阅读。
+
+### 🐕 🌟 [基于 Flutter 的移动中间件体系和音视频技术](https://mp.weixin.qq.com/s/9b4T9dU5PUaUSzwi32GSGQ)
+
+[@zvving](https://github.com/zvving):由 UC 团队为大家带来的 Flutter 引擎技术沙龙分享第三篇,从播放器视角分析如何拆分、共建 Flutter 业务,并总结在业务定制、播放性能、高效视频编辑部分的实践经验。有相关领域探索诉求的小伙伴不容错过。
+
+### 🐕 [谈 UIKit 和 CoreAnimation 在 iOS 渲染中的角色(上)](https://mp.weixin.qq.com/s/PgdH8x8nrC9SRU6nMErH8Q)
+
+[@老驴](https://www.weibo.com/6090610445):iOS 开发者不可避免的就是写各色各样的 UI 了,而写 UI 又不能避免用到 UIKit 和 CoreAnimation 这两个 framework 了。只是平时大家也只是用 UIKit 和 CoreAnimation,很少会去深究背后是怎么工作的。这篇文章就很好的介绍了 iOS 渲染是怎么工作的。文章还有下部分,见参考链接。
+
+参考链接:
+[谈 UIKit 和 CoreAnimation 在 iOS 渲染中的角色(下)](https://mp.weixin.qq.com/s?__biz=MzA5MTM1NTc2Ng==&mid=2458325030&idx=2&sn=473e586bfde4b73d70fe0a57d66dfe28&chksm=870e1f3fb07996296305bafcc8a0801b0c57619635a3bc7a8e4b836e7fc6553e8b92879d3b78&cur_album_id=1700205981982343172&scene=189#rd)
+
+### 🐕 [WKWebView 请求拦截探索与实践](https://mp.weixin.qq.com/s/u1fzioTZFLUpDEhSzUMRug)
+
+[@JonyFang](https://github.com/JonyFang):想要达到 WebView 加载速度提升的技术方案之一是离线包技术,离线包技术中最关键的环节是拦截 WebView 发出的请求将资源映射到本地离线包。而对于 WKWebView 的请求拦截,iOS 原生并没有提供直接的请求拦截能力,本篇主要是围绕 WKWebView 的请求拦截进行展开。
+
+网易云音乐大前端团队通过将 iOS 原生 `WKURLSchemeHandler` 与 `JavaScript` 脚本注入结合的方式,实现了 WKWebView 在离线加载、免流等业务中需要的请求拦截能力,解决了拦截过程中可能存在的重定向、请求体丢失、Cookie 不同步等问题,并能以页面为维度进行拦截隔离。
+
+
+对于体积较大的网页,离线包技术能够一定程度上明显的降低网络加载耗时的问题。
+
+### 🐕 [听说你想写个虚拟机(一)?](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247484228&idx=1&sn=704addfc6b1e50c7dedf1ad61787358d&chksm=cf558c8cf822059a11e9062f73266ebc32562f2437a29c9a06ce4ff9d298b637b6b699edd20d&token=1309308849&lang=zh_CN#rd)
+
+[@老驴](https://www.weibo.com/6090610445):大部分开发者应该都或多或少用过虚拟机,但是也很少有人去深究过虚拟机是怎么工作的。这篇文章就带你从零开始写虚拟机,看懂这篇文章所需要的,只是一点基础的 C 语言知识。作者在文章最后也把代码放到了 Github 上,有兴趣的话可以来学习一下。
+
+### 🐕 [关于 SwiftUI State 的一些细节](https://onevcat.com/2021/01/swiftui-state/)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了作者在 State 的使用上发现的一个问题,并通过研究 State 的实现机制来给出了相应的解决方案。也同时类比了 StateObject、Binding 和 ObservedObject 在使用上的相同点和不同点。
+
+### 🐢 [Core Animation 动画全析](https://juejin.cn/post/6920908515758309383#heading-41)
+
+[@AidenRao](https://weibo.com/AidenRao):《[iOS 核心动画高级技巧](https://zsisme.gitbooks.io/ios-/content/index.html)》是一本不错的书,文章作者对其总结的很精髓,并附上了很多自己的 demo,很适合做学习动画的阅读资料。
+
+## 工具
+
+### [Sloc Cloc and Code](https://github.com/boyter/scc)
+
+[@EyreFree](https://github.com/EyreFree):SCC 是一个非常快速精确的代码计数器,一个用 Go 开发的类似于 cloc、sloccount 和 tokei 的工具。用于计算许多编程语言中源代码的物理行、空行、注释行和物理行。
+
+## 代码
+
+### [SwiftUIKitView](https://github.com/AvdLee/SwiftUIKitView)
+
+[@四娘](https://kemchenj.github.io/):这个库让我们可以在 SwiftUI 很方便地直接使用 UIKit 的 View:
+
+```swift
+import SwiftUI
+import SwiftUIKitView
+
+struct SwiftUIwithUIKitView: View {
+ var body: some View {
+ NavigationView {
+ UILabel() // <- 这里可以使用任何 `UIKit` 的 view.
+ .swiftUIView(layout: .intrinsic) // <- 这个函数会返回一个 SwiftUI 的 `View`.
+ .set(\.text, to: "Hello, UIKit!") // <- 使用 KeyPath 来更新数据
+ .set(\.backgroundColor, to: UIColor(named: "swiftlee_orange"))
+ .fixedSize()
+ .navigationTitle("Use UIKit in SwiftUI")
+ }
+ }
+}
+```
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#148-2021.02.08.md b/Reports/2021/#148-2021.02.08.md
new file mode 100644
index 000000000..b07ec1034
--- /dev/null
+++ b/Reports/2021/#148-2021.02.08.md
@@ -0,0 +1,156 @@
+# 老司机 iOS 周报 #148 | 2020-02-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+[@Parsifal](https://github.com/ParsifalC):这是春节前最后一期周报了,给大家拜个早年,我们节后再见!
+
+## 文章
+
+### 🌟 🐕 [今日头条 iOS 安装包大小优化 - 新阶段、新实践](https://mp.weixin.qq.com/s/oyqAa8wKdioI5ZDG5LjkfA)
+
+[@Damien](https://github.com/ZengyiMa): 随着业务的发展,App 包大小也会水涨船高,为了更好的用户体验,减少用户等待时间,如何减少包大小是 App 各项优化指标中重要的一环。经过三年的发展,今日头条平台架构为我们带来更多的优化包大小手段:
+
+- 使用合适的资源压缩配置
+- 使用 RGB with palette 压缩图片
+- Assets.car 合并
+- 文本文件压缩
+- 使用 -Oz 编译参数
+- 使用链接时优化 LTO
+- 修正 Exported Symbols 配置
+- 属性动态化
+- __TEXT 段迁移
+- 二进制段压缩
+
+并且每项优化的收益也做了详尽的统计和分析。我们做 App 优化,需要静下心来做技术攻坚而且还需要具有数据意识,用数据来说话!
+
+### 🌟 🐕 [图解 fishhook 原理](https://mp.weixin.qq.com/s/dcQrR4knN0aGDPy2hsrgmg)
+
+[@老驴](https://www.weibo.com/6090610445):这是一篇目前非常不错的详解 fishhook 的文章,通过图文配合的方式来详细解释 fishhook 的原理。本文讲述 fishhook 所涉及到的最小知识点,完全抛开源码,旨在简单清晰,直击要害。以图代码,带你彻底弄清 fishhook 的原理。
+
+### 🐕 [iOS 证书幕后原理](http://chuquan.me/2020/03/22/ios-certificate-principle/)
+
+[@AidenRao](https://weibo.com/AidenRao):非对称加密贯穿于 iOS 开发之中,在日常的 iOS 开发中,无论是新手还是老鸟,总是会遇到各种与证书、签名有关的问题。作者理清其中的原理,研究并整理出这篇文章。方便读者结合原理,更快的找到证书、签名有关问题的解决方案。
+
+### 🐕 [听说你想写个虚拟机(二)?](https://mp.weixin.qq.com/s/m-gimtsk-cYQz-kQS-W26w)
+
+[@Leo](https://github.com/leomobiledeveloper):虚拟机的概念大家或多或少都听说过,但你是否想过如何实现一个虚拟机呢?“写个虚拟机的文章”是一个系列,这次推荐的是第二/三章节,第二章介绍了寄存器的定义、几个新指令的实现,第三章则从多个角度讲解了如何实现一个更贴近真实定义的虚拟机。第三章链接:
+
+- [听说你想写个虚拟机(三)?](https://mp.weixin.qq.com/s/GKYEGkDmTxxBmpd4cton5g)
+
+> 由 [silan-liu](https://github.com/silan-liu) 推荐
+
+### 🐕 [AVPlayer 實踐本地 Cache 功能大全](https://medium.com/zrealm-ios-dev/avplayer-%E5%AF%A6%E8%B8%90%E6%9C%AC%E5%9C%B0-cache-%E5%8A%9F%E8%83%BD%E5%A4%A7%E5%85%A8-6ce488898003)
+
+[@J_Knight_](https://github.com/knightsj):本文结合实际代码介绍了 AVPlayer 的缓存实现方案,该缓存方案能够实现的目标是:
+
+1. 本地缓存播放过的音乐,且在播放音乐前先尝试读取缓存
+2. 可以设置缓存上限,超过后该上限后则删除最旧的缓存
+3. 缓存处理不影响播放机制
+
+而且在具体介绍方案之前也介绍了所需要的背景知识,如 HTTP Range,AVPlayer 处理 AVURLAsset 的方式等等。
+
+### 🐕 [What’s new in Swift 5.4?](https://www.hackingwithswift.com/articles/228/whats-new-in-swift-5-4)
+
+[@老峰](https://github.com/gesantung): Swift 5.4,带来了一些巨大的编译改进,并大大提高了增量编译的速度,同时也包含不少新特性:
+
+- 改进的隐式成员语法
+- 函数中支持多个可变参数
+- Result builders
+- 局部函数支持重载
+- Property wrappers 支持局部变量
+
+Swift 5.4 已经在 Xcode 12.5 beta 版中发布,感兴趣的读者快来升级体验吧。
+
+### 🐢 [Aion - 拥抱 Flutter 生态的动态化方案](https://mp.weixin.qq.com/s/mPkx9b07xCkokxxbGc7grA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 又一个 Flutter 动态化方案,目前业内对于 Flutter 动态化的探索可谓百花齐放了,大体上都是以下两种:
+
+- Web 跟 Flutter 的一个结合,就是前面说的利用 Web 生态 js 的高动态性跟 Flutter 本身的渲染流程去做结合,达到一个既能够满足高动态性
+- Simple VM,用 Dart 代码实现 Widget 视图界面,经过前端的编译生成 AST 产物,然后在编译阶段将 AST 产物转化成 JSON 的数据描述,JSON 文件下发到客户端,在 Dart 层对它做一次解析,来完成动态化
+
+以上两种方案在对比原生 AOT 时,多多少少差了那么一点儿,UC 的同学对他们 Flutter 动态化的要求是:无限于接近于现有的 AOT 模式。所以有了这个新的方案:基于 Kernel ByteCode 解析。本文详细的分析和对比了多种方案的优缺点,来表明为何选择 KBC,文章也详细描述了该技术方案落地的过程中遇到的问题以及是如何解决的。
+
+## 工具
+
+### [tidevice](https://github.com/alibaba/taobao-iphone-device)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):这是一个支持运行在 Mac,Linux,Windows 上,能够用于与 iOS 设备进行通信,提供诸多功能的一个工具,包括:
+- 截图
+- 获取手机信息
+- ipa 包的安装和卸载
+- 根据 bundleID 启动和停止应用
+- 列出安装应用信息
+- 模拟Xcode运行XCTest
+- 获取指定应用性能(CPU,MEM,FPS)
+- ...
+
+## 代码
+
+### [Pulse: Structured Logging System](https://github.com/kean/Pulse)
+
+[@zvving](https://github.com/zvving):基于 [SwiftLog](https://github.com/apple/swift-log) 和 CoreData 实现的日志框架,使用 SwiftUI 为 iOS/macOS 双平台提供日志浏览功能,同时对网络日志提供更清晰的展示视图。
+库还在早期阶段,对日志及 SwiftUI 实现感兴趣的同学欢迎参考。
+
+### [Twitter Text Editor](https://github.com/twitter/TwitterTextEditor)
+
+[@xiaofei86](https://weibo.com/xuyafei86/):Twitter 开源了一个独立的、灵活的、功能齐全的富文本编辑器。提供了一个健壮的文本属性更新逻辑、扩展的文本编辑事件,使用基于委托的便捷 API 安全的处理文本输入事件。
+
+```swift
+import TwitterTextEditor
+
+final class MyViewController: UIViewController {
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ let textEditorView = TextEditorView()
+ textEditorView.text = "Meow"
+ textEditorView.textAttributesDelegate = self
+ }
+}
+
+extension MyViewController: TextEditorViewTextAttributesDelegate {
+ func textEditorView(_ textEditorView: TextEditorView,
+ updateAttributedString attributedString: NSAttributedString,
+ completion: @escaping (NSAttributedString?) -> Void) {
+
+ }
+}
+```
+
+### [awesome-function-builders](https://github.com/carson-katri/awesome-function-builders)
+
+[@JonyFang](https://github.com/JonyFang):Swift 5.1 引入的特性 @functionBuilder,大大增强了 Swift 语言构建内置 DSL 的能力,`awesome-function-builders` 可以作为使用参考。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#149-2021.03.01.md b/Reports/2021/#149-2021.03.01.md
new file mode 100644
index 000000000..69963f580
--- /dev/null
+++ b/Reports/2021/#149-2021.03.01.md
@@ -0,0 +1,86 @@
+# 老司机 iOS 周报 #149 | 2021-03-01
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐕 [一款可让大型 iOS 工程编译速度提升 50% 的工具](https://mp.weixin.qq.com/s/uBpkelG8q_xmskWPYyWONA)
+
+[@JonyFang](https://github.com/JonyFang):本文介绍了美团平台自研的一款 cocoapods 插件 `cocoapods-hmap-prebuilt`,该插件以 Header Map 技术为基础,进一步提升代码的编译速度,完善头文件的搜索机制,通过该插件可以大幅提升 iOS 工程代码的编译速度。文章前半部分主要介绍相关的原理,后面主要阐述在工程层面的实践,希望能给从事相关开发的同学带来一些帮助或者启发。
+
+### 🐢 [Flutter 路由我定](https://juejin.cn/post/6932115520405635079)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 1.22 的版本更新了路由库, 目前最新的是 Navigator 2.0, 本文算是一个比较完整的 Flutter 路由科普文,对于 Flutter 路由不熟悉的同学,推荐仔细阅读.
+
+### 🐕 [Is Apple Banning Free Analytics SDKs?](https://steamclock.com/blog/2021/02/apple-tracking-analytics-sdks/)
+
+[@享耳先森](https://github.com/iblacksun):iOS 14.5 发布时间临近,新版系统中,如果 App 使用了 IDFA,系统将请求用户授权,本文探讨了新的隐私机制对 App 开发者及统计 SDK 开发者有哪些影响、以及该如何应对。
+
+### 🚧 🐕 [Universal Links 新鮮事](https://medium.com/zrealm-ios-dev/universal-links-%E6%96%B0%E9%AE%AE%E4%BA%8B-12c5026da33d)
+
+[@红纸](https://github.com/nianran):Universal Links 在 iOS 14 开始使用 CDN 来更新配置文件,并且加入了新的调试模式(在 applinks:domain.com 中加入 ?mode=developer)来解决 CDN 带来的更新延迟问题。本文的后半文,详细的介绍了如何搭建一个简易的本地测试环境来调试配置文件。
+
+### 🐕 [飞猪 Flutter 技术演进及业务改造实践](https://mp.weixin.qq.com/s/08EK76jn-zkqS9flbrAbRA)
+
+[@邦Ben](https://weibo.com/linwenbang):该文介绍了飞猪团队在 Flutter 上的探索以及落地实践效果。其中重点提及了 Web on Flutter 的尝试,大致流程为:h5 js 代码解析后运行对接 Flutter Render 机制,为了提高 web 显示效果。同时也介绍了 XRay 自动化测试,一套截图识别的自动化测试方案,最大的好处是和具体平台代码无关,跨端效果很好。这也是大部分业务自动化方案采用的方案,有兴趣的童鞋也可以多看下。
+
+### 🐕 [听说你想写个虚拟机(四)?](https://mp.weixin.qq.com/s/LHHDlhbuAMe8J6T3SPSaVg)
+
+[@Leo](https://github.com/leomobiledeveloper):虚拟机的概念大家或多或少都听说过,但你是否想过如何实现一个虚拟机呢?“写个虚拟机”文章是一个系列,这次推荐的是第四五六章节,作者从一个最小虚拟机开始介绍,到完成 LC-3 这个更加贴近真实意义的虚拟机。一步步从简单,到复杂,由浅入深,慢慢掀开了虚拟机的神秘面纱。
+
+- [听说你想写个虚拟机(五)?](https://mp.weixin.qq.com/s/wTrLJNFlCZOuuPfIOJV_tA)
+- [听说你想写个虚拟机(六)?](https://mp.weixin.qq.com/s/ecBgY_fiGVVs5zOD7Z1vtQ)
+
+> 由 [silan-liu](https://github.com/silan-liu) 推荐
+
+## 代码
+
+### [gRPC Swift 1.0.0](https://github.com/grpc/grpc-swift/releases/tag/1.0.0)
+
+[@EyreFree](https://github.com/EyreFree):gRPC 是一个高性能、开源和通用的 RPC 框架,它基于 HTTP/2 标准设计,带来了双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性,使得其在移动设备上表现更好、更省电和节省空间占用。本项目 grpc-swift 是它的 Swift 实现,在 4 天前发布了 1.0.0 正式版,可用于配合 Apple 官方的 [Swift Protobuf](https://github.com/apple/swift-protobuf) 一起使用。
+
+### [stream-chat-swift](https://github.com/getstream/stream-chat-swift/)
+
+[@AidenRao](https://weibo.com/AidenRao):StreamChat SDK 附带有全部 UI(用户界面)组件,可在几分钟内实现 IM 应用程序的构建。这些组件可以在 iOS 和 macOS 之间无缝转换,只需在其行为上做出一些细微改变,就能实现每个平台所期待的用户体验,目前 SDK 已完全开源,非常适合学习 & 使用。
+
+### 🐕 [EasySwiftHook](https://github.com/623637646/SwiftHook)
+[@zvving](https://github.com/zvving):Swift 中 hook 手段有限,对于 Dynamic Dispatch Function 还是有一些『可乘之机』。EasySwiftHook 基于 libffi 以及 objc runtime,hook 代码相对易读,支持 NSObject、Pure Swift Class,兼容 KVO、deinit 等。虽然应用受限于动态分发场景,依旧是不错的学习材料。
+
+> 来自 [Yanni Wang](https://github.com/623637646) 自荐
+
+### [ScheduledNotificationsViewController](https://github.com/nicephoton/ScheduledNotificationsViewController)
+
+[@老峰](https://github.com/gesantung):ScheduledNotificationsViewController 是一个本地通知调试工具,接入简单,可以方便的调试本地通知。支持查看待发送,已发送通知列表;支持点击直接发送;支持深色模式。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#150-2021.03.08.md b/Reports/2021/#150-2021.03.08.md
new file mode 100644
index 000000000..39ea002e6
--- /dev/null
+++ b/Reports/2021/#150-2021.03.08.md
@@ -0,0 +1,104 @@
+# 老司机 iOS 周报 #150 | 2021-03-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🐢 [Flutter 2 正式发布](https://mp.weixin.qq.com/s/tJe2ScLgKWFTybpBtDl2TA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 2 发布了,这次 Flutter 团队为大家带来了成吨的新功能以及更稳定的性能。通过 Flutter 2,你可以使用相同的代码库为五种操作系统构建原生应用: iOS、Android、Windows、macOS 和 Linux;以及为 Chrome、Firefox、Safari 和 Edge 等浏览器打造 web 体验。Flutter 甚至可以嵌入到汽车、电视和智能家电,为环境计算提供最普适、可移植的体验。小编汇总一些重大的功能,供大家速览:
+
+- Flutter web 支持,且达到了稳定版
+- Flutter 2 对于桌面、可折叠和嵌入式设备上的支持
+- Dart 健全的空安全稳定版
+- Flutter 多实例支持
+- 新工具: Flutter Fix
+- 新 Widget: Autocomplete、ScaffoldMessenger 等
+
+这波 Flutter 官方团队简直输出爆炸有木有, 所以小编另推荐几篇 Flutter 2 相关的文章辅助阅读:
+
+- [无限可能 | Flutter 2 重点更新一览](https://mp.weixin.qq.com/s/EzS3dtpZB_i9p358qqlBpg)
+- [Flutter2.0重磅发布!带你一文打尽Flutter Engage](https://mp.weixin.qq.com/s/qy6ZdZmULOgwBEiqT4yGew)
+- [What’s New in Flutter 2](https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65)
+- [【译】Flutter 2.0 正式版发布,全平台 Stable](https://mp.weixin.qq.com/s/rqf4tJR23Yzf3L3J5JY3Qw)
+
+## 文章
+
+### 🌟 🐢 [从预编译的角度理解 Swift 与 Objective-C 及混编机制](https://mp.weixin.qq.com/s/gI9vL1KlHuMzMoWWf2tnIw)
+
+[@享耳先森](https://github.com/iblacksun):相信不少 iOSer 对于编译器如何将你的源码编译成可执行文件一直都是一知半解,本文从编译器预编译阶段的如何查找头文件开始,深入剖析项目中使用到的技术和各种参数的作用,由此来指导开发者如何进行混编。
+
+### 🌟 🐢 [深入剖析 JavaScript 编译器/解释器引擎 QuickJS - 多了解些 JavaScript 语言](https://mp.weixin.qq.com/s/sKP1Svn8r8z_VEIlbUcxTg)
+
+[@JonyFang](https://github.com/JonyFang):本文着重介绍了 QuickJS。为了更有助于读者理解 QuickJS,作者在详细介绍和剖析 QuickJS 之前,先引入聊了聊 JavaScript 的背景及 QuickJS 作者的背景;在这之后,会针对 js 语言的一些特性来看这些特性在 QuickJS 是如何解释执行和优化的。相信本篇技术文能够帮助读者加深对 js 语言的理解。
+
+### 🐕 [Hacking native ARM64 binaries to run on the iOS Simulator](https://bogo.wtf/arm64-to-sim.html)
+
+[@老驴](https://www.weibo.com/6090610445):现在有很多同学已经用上了 M1 的开发机了,但是在实际开发中会发现依赖的 SDK 并没有更新对 ARM Mac 原生支持,这会导致在模拟器里编译运行 App 的时候,会继续用 Rosetta 2 的方式来运行。本来就介绍了如何在不改动依赖 SDK 的情况下,在 M1 Mac 上以原生模式来跑。
+
+### 🐢 [How Apple’s Upcoming Two-Step/Two-Factor Enforcement Could Affect Your fastlane Experience](https://www.joshholtz.com/blog/2021/02/17/apples-2fa-with-fastlane.html)
+
+[@极速男孩](https://github.com/ztlyyznf001):苹果在 2021 年二月强制要求所有登录 App Store Connect 开通两步验证或者或者双重认证,这对我们常用的 CI 工具 fastlane 产生了一定的影响,本文主要讲述了这个新规定是如何对 fastlane 产生影响,并给出了一些解决方案和工具。
+
+### 🐎 [XCFrameworks caveats](https://kean.blog/post/xcframeworks-caveats)
+
+[@Damien](https://github.com/ZengyiMa):XCFramework 是 Xcode11 中提出的一个新特性,是由 Xcode 创建的一个可分发的二进制包,它包含了 framework 或 library 的一个或多个变体,因此可以在多个平台上使用。本文作者通过为自己的项目制作 XCFrameworks 过程中所遇到的问题,并且给出对应的解决方案,通过文章,可以让大家在打包 XCFrameworks 少走很多弯路。
+
+### 🐕 [在线教室 iOS 端声音问题综合解决方案](https://mp.weixin.qq.com/s/yFNb0zvPtEjHAtED7-jT0w)
+
+[@AidenRao](https://weibo.com/AidenRao):在线教室场景下,很多功能都需要播放声音,包括课中音视频直播、课后回放、webview 内嵌课件声音(包括音频、视频、音效)、课堂音频、课堂视频、课堂游戏声音、音效声音等。除此之外,教室内还包括很多需要声音录制的功能,包括连麦、跟读、集体发言、聊天语音输入、语音识别等。
+
+教室内这些功能存在各种组合,且对 AVAudioSession 的设置要求存在差异,而 AVAudioSession 又是一个单例,如果没有一个统一管理的逻辑,很容易就出现设置混乱的问题。
+
+文章通过底层原理的分析与实际项目经验,从代码规范、问题兜底、问题报警梳理出一套可行的解决方案。
+
+### 🐕 [函数节流(Throttle)和防抖(Debounce)解析及其iOS实现](https://juejin.cn/post/6933952291142074376)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):对于部分 iOS 开发人员来说,函数节流(Throttle)和防抖((Debounce)这两个专业名词可能会比较陌生。对于连续调用的函数,尤其是触发频率密集、目标函数涉及大量计算时,恰当使用 Throttle 和 Debounce 可以有效提升性能及系统稳定性。作者详细阐述了 Throttle 和 Debounce 的概念及二者间的区别,同时封装开源库 [HWThrottle](https://github.com/HighwayLaw/HWThrottle),该库有以下特点:
+
+- 未使用任何 runtime API,全部由顶层 API 实现
+- 每个业务场景需要使用者自己定义一个实例对象,自行管理生命周期,旨在把对项目的影响控制在最小范围
+- 区分 Throttle 和 Debounce,提供 Leading 和 Trailing 选项
+
+### [Apple M1X benchmark leak](https://www.cpu-monkey.com/en/compare_cpu-apple_m1x-1898-vs-apple_m1-1804)
+
+[@老驴](https://www.weibo.com/6090610445):在苹果发布 M1 之后,也有很多人在期待 M1X 和 M2。现在 M1X 的跑分已经出现在跑分网站上了,有一部分参数也已经泄露。目前看起来 M1X 是一颗 8 大核心 4 小核心的 12 核心处理器,单核性能和 M1 几乎一致,多核性能因为大核心数量翻番得到翻倍,TDP 保持在 35W。在这样的功耗表现下能和 Intel 11700K 多核性能几乎一致,算是非常夸张的了,要知道就算是 PL1,11700K 也要 125W,PL2 更是高达 251W。所以,M1X 的能耗比可以说是非常夸张了。
+
+## 代码
+
+### [AR_100Days](https://github.com/satoshi0212/AR_100Days)
+
+[@老峰](https://github.com/gesantung):WWDC2017 苹果发布了ARKit,基于它就可以实现 AR 比较强大的虚拟增强功能。作者 [Satoshi](https://github.com/satoshi0212) 以 Demo 的形式每天分享一种 AR 效果,目前已经更新 45 个,对 ARKit 感兴趣的读者可以参考学习。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#151-2021.03.15.md b/Reports/2021/#151-2021.03.15.md
new file mode 100644
index 000000000..63d6f67e9
--- /dev/null
+++ b/Reports/2021/#151-2021.03.15.md
@@ -0,0 +1,96 @@
+# 老司机 iOS 周报 #151 | 2021-03-15
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐢 [内存管理设计精要](https://draveness.me//system-design-memory-management)
+
+在早些年的 iOS 开发中,当一个 App 的内存使用大于 20m 的时候,就会收到系统的 Memory Warning,所以过去开发应用时候,也会基于此做一些优化。虽然近几年随着新机型性能的不断提升,内存越来越大,早已不再受 20m 的限制, 但是,相比于磁盘,内存依然可以算相对稀缺的资源,如果 APP 对内存使用不当,哪怕运行在最新的机型也有可能瞬间 crash 掉。本文是深入研究系统设计方法的系列文章中的一篇,主要讲内存系统的设计精要,对于想要深入了解内存的概念,并更好地使用或者优化内存的管理,本文值得各位读者花时间详细阅读!
+
+### 🌟 🐕 [How Uber Deals with Large iOS App Size](https://eng.uber.com/how-uber-deals-with-large-ios-app-size/)
+
+[@xiaofei86](https://weibo.com/xuyafei86):根据 Uber 的统计,当 App 大小超过 AppStore 流量下载限制时,会导致应用程序安装减少 10%,注册减少 12%,首次预订减少 20%,从而导致收入损失。本文讲述 Uber 如何使用编译优化技术解决此问题,将 Uber App 的代码大小减少 23%,并使代码大小的增长率降低了 2 倍。
+
+使用编译选项 [-Osize](https://swift.org/blog/osize/) 可以在模块内执行优化,编译器会通过 Function Outlining 来将重复代码片段重定向到单个实例实现压缩。但此优化对跨模块的代码则无能为力,这也将是本文的重点。
+
+Uber 开发了自己的 iOS 构建流水线,新的流水线为每个模块生成 LLVM IR,而不是直接生成机器码。然后将所有 LLVM-IR 文件组合成一个大型 IR 文件并进行优化,再输入 [llc](https://llvm.org/docs/CommandGuide/llc.html) 生成机器码。这确保了在识别候选重复片段时,会利用最大相似性,从而实现跨模块的优化。在模块内部,LLVM 在识别时采用的贪心思想也不能实现最优解,Uber 也通过多轮识别的方式进行了优化。
+
+本文的很多方案已经提交到 LLVM。另外,一篇描述 [论文](https://1fykyq3mdn5r21tpna3wkdyi-wpengine.netdna-ssl.com/wp-content/uploads/2021/02/cgo21main-p112-p-dbdebd6-49049-preprint.pdf) 细节的论文也发表在了 "International Symposium on Code Generation and Optimization",感兴趣的同学可以阅读了解。
+
+### 🌟 🐢 [【译】SE-0296 Async/await](https://kemchenj.github.io/2021-03-06/)
+
+[@zvving](https://github.com/zvving):大家翘首以盼的 async/await 特性,终于要在 Swift 5.5 中落地。协程的引入,让我们可以使用同步风格的代码编写异步逻辑,告别回调地狱。
+
+[Kemchenj](https://kemchenj.github.io/about) 为我们带来 [SE-0296](https://github.com/apple/swift-evolution/blob/main/proposals/0296-async-await.md) 的译文:完整介绍引入 async/await 的动机、设计细节和权衡过程,推荐阅读。
+
+### 🐎 [Crash 堆栈竟然无法解析?](https://mp.weixin.qq.com/s/tOdu6GJW-jdWcce1xYgcww)
+
+[@水水](https://www.xuyanlan.com):本文记录了一个由于对 pod 编译参数调整导致的 Crash 无法解析问题的解决和究因过程。到底是什么原因会导致 Crash 无法解析呢?感兴趣的读者可以一探究竟~
+
+### 🐕 [闲鱼 UI 快速变形利器--擎天柱](https://mp.weixin.qq.com/s/QnUVFX6dJzDRac1SsjhSmA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):擎天柱系统是闲鱼的标签运营平台,以此实现闲鱼 UI 样式的快速配置和实验效果的快速验证。解决了各场景标签 UI 的管理分散、需求排期难、缺乏 AB 实验等一系列问题。目前,擎天柱系统已经在闲鱼首页、搜索页的 feeds 场景落地,取得了阶段性效果:
+
+- 推广场景覆盖和运营使用度,创建更多的个性化实验
+- 增加客户端卡片模版配置模块,完善 UI 体系
+- 打通算法平台,使得优质标签透出的更加智能化、个性化
+
+### 🐢 [Molinillo 依赖校验](https://mp.weixin.qq.com/s/Kux4B4piqR43RLwiHRcHUQ)
+
+[@红纸](https://github.com/nianran):Molinillo 作为 CocoaPods 中核心的依赖解析工具。作者从解决依赖的入口函数 **Resolution::resolve** 入手,剖析了模块依赖 **state** 的变化、有向图的存储、依赖循环和冲突处理。文末,作者还介绍了 Molinillo 利用抽象类来解决不同平台接入的问题。
+
+本文为[「CocoaPods 历险记」](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzA5MTM1NTc2Ng==&action=getalbum&album_id=1477103239887142918&scene=173&from_msgid=2458325057&from_itemidx=1&count=3#wechat_redirect)的系列文章的第 7 篇,非常推荐想要了解 CocoaPods 的同学阅读~
+
+### 🐕 [如何监控 iOS 的启动耗时](https://mp.weixin.qq.com/s/mxQpsenciOu9Qw9q-VTNyg)
+
+[@JonyFang](https://github.com/JonyFang):APP 启动耗时的监控和优化一直是我们比较关注的问题,本文通过介绍 Render Loop 和 commit phase 的流程,分享了通过监控 ipc 通信机制监控启动耗时的解决方案。
+
+## 代码
+
+### [HotReloading](https://github.com/johnno1962/HotReloading)
+
+[@EyreFree](https://github.com/EyreFree):[InjectionIII](https://github.com/johnno1962/InjectionIII) 允许您在 iOS 模拟器中增量更新函数的实现以及类、结构或枚举的任何方法,而无需重新生成或重新启动应用程序。HotReloading 项目使 InjectionIII 的功能现在可以通过 SPM 直接引入到您的工程当中。无需下载应用程序,只需将此项目添加到您的项目中,并添加一个 `Run Script` 即可。
+
+### [Swift for Tensorflow](https://github.com/tensorflow/swift)
+
+[@莲叔](https://github.com/aaaron7):Google 近期正式宣布 Swift for Tensorflow 项目将会被 archieve,也就是说暂停投入,基本上宣告了该项目的社会性死亡。虽然从项目主推者 chris lattner 在一年前离开 google 的时候就已经注定,当时[这篇帖子](https://news.ycombinator.com/item?id=22195335) 也预言了这一刻。但一年之后的现在,该来的来了后,仍然会让人唏嘘。虽然 S4TF 从诞生之日起就有了一定的关注,同时其背后的 idea 也非常创新地解决了当下以 Python 为主导的 AI 领域的一些痛点问题,虽然这两年从 Github 的 commit 记录上也能看出 S4TF 的团队一直在密集的迭代与优化,甚至从去年开始, GPUImage 的作者 Brad Larson 也加入了该团队并持续的投入到 high level api 以及 showcase model 的优化中,最终也没能改变这项技术没有被 AI 社区所接受。深究其背后的原因,其实太阳底下并无新事。社区对于技术语言、框架的接受度考量的核心指标或许并不是先进性,还包括历史包袱、程序员的偏好习惯、生态等等因素。这也就是 Python2 到 3 为什么这么难,JS 问题很多但依然是全球最流行的编程语言。这些现象背后多多少少都可以窥见端倪。
+
+虽然最后生命力只有短短 2 年,但我仍然相信 S4TF 是非常具有冒险精神,非常大胆的一次尝试,其中众多的 compiler-oriented machine learning 技术不会死,会沉淀下来,或许在未来 5-10 年后,能够再次改变世界。
+
+### [swift-benchmark](https://github.com/google/swift-benchmark)
+
+[@老峰](https://github.com/gesantung):[swift-benchmark](https://github.com/google/swift-benchmark) 是一个对代码段进行基准测试的库,有丰富的命令,可以方便的做单元测试性能测试等,类似于 [benchmark](https://github.com/google/benchmark)。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#152-2021.03.22.md b/Reports/2021/#152-2021.03.22.md
new file mode 100644
index 000000000..c7257ae9a
--- /dev/null
+++ b/Reports/2021/#152-2021.03.22.md
@@ -0,0 +1,122 @@
+# 老司机 iOS 周报 #152 | 2021-03-22
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Swift 5.5 Release Process](https://forums.swift.org/t/swift-5-5-release-process/45644)
+
+[@享耳先森](https://github.com/iblacksun):Swift 社区释出了 Swift 5.5 的发布计划,这意味着随 WWDC21 发布的将是 5.5 而不是 6.0,不过好消息是大家期待已久的 [async/await](https://github.com/apple/swift-evolution/blob/main/proposals/0296-async-await.md) 将随 5.5 一起发布。
+
+## 新手推荐
+
+### [Swift LibHunt - Discover popular and related Swift open-source projects](https://www.libhunt.com/l/swift)
+
+[@EyreFree](https://github.com/EyreFree):LibHunt 是一个跟踪开源项目和软件库的网站,在这里你可以找到最受欢迎的开源库和他们的同类型工具,提供了多种统计口径和筛选方式,除了 Swift 外也支持其他大部分主流编程语言。
+
+> [@Parsifal](https://github.com/ParsifalC):前阵子不时地看到读者群或者公众号后台都有朋友在问想看一些优秀的开源库,希望这个网站能帮你筛选到合适的。
+
+## 文章
+
+### 🐕 [Swift 5.4 新特性](https://mp.weixin.qq.com/s/p6oeWwcgJJFqP2NgYaJXYw)
+
+[@四娘](https://kemchenj.github.io):之前我们介绍过 Hacking Swift 写的 [What's New in Swift 5.4](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/Reports/2021/%23148-2021.02.08.md#-whats-new-in-swift-54),最近知识小集翻译了中文版。
+
+按照往年的时间安排,包含 Swift 5.4 的 Xcode 12.5 大概会在这个月的月底发布,之前还没看过的朋友可以趁这个机会提前了解一下 Swift 5.4 的新特性。
+
+### 🐎 [从底层分析一下存在跨进程通信问题的 NSUserDefaults 还能用吗](https://mp.weixin.qq.com/s/Y1AHFN1kJ9kCjXdFOnUviA)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):NSUserDefaults 是 iOS 开发者常用的持久化工具,通常用于存储少量的数据。经过文中的测试,发现 NSUserDefaults 有以下 3 个特性:
+- 多线程安全
+- 内存级别缓存
+- 写操作会触发 xpc 通信
+
+根据这三个特性,得出适合选择 NSUserDefaults 作为数据持久化的场景如下:
+- 少量数据存储
+- 偶尔修改
+- 多线程安全
+
+### 🌟 🐢 [clang 源码导读系列 6 篇](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAxMzk0OTg5MQ==&action=getalbum&album_id=1773549418412064769&scene=173&from_msgid=2247485042&from_itemidx=2&count=3#wechat_redirect)
+
+[@JonyFang](https://github.com/JonyFang):clang 源码导读系列,共分为 6 篇。依次简介下每篇的概要内容:
+
+1. clang 源码导读(1)- clang 入门
+ - 梳理了不同场景下 clang 的含义;
+ - 引出三个基础知识点:诊断、`llvm:Triple`、`ToolChain`;
+2. clang 源码导读(2): clang driver 流程简介
+ - 结合实例,介绍 `clang driver` 流程;
+3. clang 源码导读(3): clang driver 参数解析
+ - 通过分析 `DriverOptTable` 的生成机制分析 `Driver::ParseArgStrings` 内部流程;
+ - 对 `clang driver` 的参数解析流程做了简析;
+4. clang 源码导读(4): clang driver 构建 Actions
+ - 通过对 `BuildUniversalActions` 方法的源码分析,介绍了 clang driver 构建 Actions 的流程;
+5. clang 源码导读(5): clang driver 构建 Jobs
+ - 对 `clang driver` 的构建 Jobs 流程进行详细的讲解,如介绍了 `clang drive` 是如何通过合并多个 JobAction 来避免反复的硬盘读写操作和文件生成/解析操作;
+6. clang 源码导读(6): clang driver 执行命令
+ - 本篇通过分析源码的方式,对 `clang driver` 的执行命令涉及的流程进行完整的分析;
+
+`clang driver` 这一层虽未涉及到真正的编译,但作为整个编译过程的驱动,以 pipline 形式抽象了各个环节的输入输出,解决了参数解析翻译、任务封装及执行等过程,满足了我们各种各样的使用需求。**clang 源码导读系列** 会带着读者了解 `clang driver`,对后续了解编译的全过程会有所帮助。
+
+### 🐢 [Flutter 正在被悄悄放弃吗?](https://mp.weixin.qq.com/s/hDjbMSPNz_D5JeEBMEJZCA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 自诞生之日起,从来都稳坐风口浪尖,关注与争议一直伴随其身。近几年,诸多互联网大厂投入实践,尝到了 Flutter 带来的甜头,但随着深入落地,Flutter 的性能问题为人诟病。这是一篇访谈文,一起来听听咸鱼负责人宗心和百度贴吧端负责人的看法,我想读者会有新的见解.
+
+
+### 🐕 [iOS 稳定性问题治理:卡死崩溃监控原理及最佳实践](https://mp.weixin.qq.com/s/cEfIZGtUojKKbhIfUyhTMw)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了字节跳动 APM 中台团队自研的一套专门用于定位生产环境中的卡死崩溃的解决方案。文章首先介绍了当前 iOS 卡死崩溃监控的痛点,然后图文并茂地介绍该方案的思路和具体实现:
+
+- 卡顿监控原理
+- 如何判定卡顿为一次卡死
+- 如何确定卡死时间的阈值
+- 如何检测到用户一次卡死的时间
+- 如何解决主线程调用栈可能有误报的问题
+
+最后还提供了通过本方案上线后总结出来的一些典型问题和最佳实践。
+
+### 🐎 [Be careful with Obj-C bridging in Swift?](https://swiftrocks.com/be-careful-with-objc-bridging-in-swift)
+
+[@Damien](https://github.com/ZengyiMa):由于 Apple 平台历史问题的存在,Swift 与 Objective-C 进行桥接一直是 Swift 开发的重要组成部分,今天要说的是我们常用的 as 转换符在 Swift 使用中需要注意的地方,也许在不经意中会造成一些隐藏的异常崩溃,来一起探索 Swift 于 Objective-C 转换中发生的事情吧。
+
+## 工具
+
+### 🌟 [github1s](https://github.com/conwnet/github1s)
+
+[@Parsifal](https://github.com/ParsifalC):这个工具基于 VSCode 的浏览器版本,使得我们可以只用一个浏览器便可以方便地浏览和编码任意 GitHub Repo,你只需要将仓库链接的 `GitHub` 域名改为 `GitHub1s` 即可立即体验。比如 `https://github.com/microsoft/vscode` 变为 `https://github1s.com/microsoft/vscode`。
+
+### [FVM 愉快的切换 Flutter 版本,强烈推荐!](https://juejin.cn/post/6919469825547272205)
+
+[@邦Ben](https://weibo.com/linwenbang):Flutter SDK 的安装很简单,下载下来解压就基本可用了。但是当你想进行一些不同版本的调研,或者 beta 版本的尝鲜,或者多个项目之间来回切换,那你就需要一个 SDK 管理工具了,FVM 则满足这个需求。和 NVM, RVM 一样的作用,切换 Flutter SDK。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#153-2021.03.29.md b/Reports/2021/#153-2021.03.29.md
new file mode 100644
index 000000000..e38ddf075
--- /dev/null
+++ b/Reports/2021/#153-2021.03.29.md
@@ -0,0 +1,107 @@
+# 老司机 iOS 周报 #153 | 2021-03-29
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐢 [IGListKit 源码解析系列 5 篇](https://dirtmelon.github.io/posts/iglistkit-first/)
+
+[@JonyFang](https://github.com/JonyFang):IGListKit 源码解析系列,共分为 5 篇。依次简介下每篇的概要内容:
+
+1. IGListKit - 开篇
+ - 对比简介 UICollectionView/UITableView;
+ - 引出 IGListKit 的主要特征;
+2. IGListKit 的基石 - IGListSectionController
+ - 介绍 `IGListSectionController` 是如何和数据层进行绑定的;
+ - 介绍 IGListKit 是如何通过 `IGListSectionController` 来进行扩展以支持多种特性;
+3. IGListKit 的管理者 - IGListAdapter
+ - `IGListAdapter` 作为 IGListKit 的适配器,对外提供相关的刷新接口及一些通用方法,对内负责管理 `IGListSectionController` 和 `UICollectionView`;
+4. IGListKit 的数据处理 - Updater & Diff
+ - 介绍 `IGListAdapterUpdater` 提供的批量&全部刷新机制的原理;
+ - 描述 `IGListDiff` 的核心实现;
+5. IGListKit - 完结篇
+ - 介绍 `IGListCollectionViewLayout` 的实现;
+ - 总结了 IGListKit 的开发历程,及库作者的一些经验总结;
+
+### 🌟 🐕 [Flutter 2.0 下混合开发浅析](https://mp.weixin.qq.com/s/cX-PZZ1FqQm582JwVNm8Zg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 的混合开发大多借助 flutter_boost 等三方库来完成, Flutter 2.0 给了我们更多的选择: FlutterEngineGroup。本文详细讲解了 FlutterEngineGroup 下的混合开发,强烈推荐。
+
+### 🐕 [Flutter Web 在美团外卖的实践](https://mp.weixin.qq.com/s/GjFC5_85pIk9EbKPJXZsXg)
+
+[@极速男孩](https://github.com/ztlyyznf001):Google 现在已经将 Flutter Web 合入了 master 和 stable 分支,并在 Flutter 2.0 做了进一步优化。本文主要介绍了美团外卖在 Flutter Web 的探索,在 Flutter Web 基建和 Flutter Web 中的性能优化 , CI/CD 的方面的尝试。
+
+### 🐎 [全局开启 iOS / mac 的 WebView 调试](https://mp.weixin.qq.com/s/bNKxQaVrPaXsZ5BPbsXy7w)
+
+[@AidenRao](https://weibo.com/AidenRao):Safari 有一个内置的前端调试器,可以调试 MobileSafari 和 Xcode 编译运行的 APP。通过 hook webinspectord 服务的 SecTaskCopyValueForEntitlement 函数,使我们可以在 mac 和 iOS 上,调试系统内置的 App 或者 App Store 下载的应用里的 WebView。对于分析客户端的 XSS、JavaScript bridge 相关的安全漏洞非常实用。
+
+### 🐢 [如何编写高性能的 Swift 代码](https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst)
+
+[@四娘](https://kemchenj.github.io):Swift 官方仓库里的一份性能优化指南,从编译器层面讲述如何编写高性能的代码,让我们了解什么样的代码可以让编译器更好地进行优化,什么样的代码会在 Swift 里产生额外的性能消耗,在哪些情况下我们可以通过改写这些代码来减少这些消耗。
+
+### 🚧 🐕 [Frameworks: embed or not embed that's the question](https://holyswift.app/frameworks-embed-or-not-embed-thats-the-question)
+
+[@红纸](https://github.com/nianran):在工程中配置 Framework 时,经常能够看到一个选项 Embed or not。本文作者将静态库和动态库配合这两种选项,4 种实验结果分别做了对比如下。
+
+- 动态库 + Embed:动态库将在运行时链接,并且会有独立的 Framework 文件夹,独立于 App 的二进制文件
+- 动态库 + Not Embed:App 会崩溃
+- 静态库 + Embed:代码将在编译时进行链接,会有独立的 Framework 文件夹
+- 静态库 + Not Embed:代码将在编译时进行链接,所有代码将会包含在 App 的二进制文件当中
+
+此外,文末有一个 4 种集成方式包大小差异的简单对比,感兴趣的读者可以阅读一番。
+
+### 🐎 [对于移动开发,人工智能的到来意味着什么?](https://mp.weixin.qq.com/s/Nt16lD-0KCpeC5ZEwxziQw)
+
+[@莲叔](https://github.com/aaaron7):端智能或许已经并不是移动开发领域的一个新鲜话题,各个公司和业务都开始逐步尝试并取得了一定的效果。如果你是一位对人工智能有兴趣但之前完全没有了解的移动开发,这篇文章可以指引你快速了解一个大概的全貌。文章首先从比较符合直觉的视角介绍了人工智能是什么,解决了什么问题,另外还给出了在移动开发目前的主流应用,是一份不错的入门介绍。
+
+### 🐎 [iOS 基于 PGO 优化启动时间](https://juejin.cn/post/6942365945990447111)
+
+[@Leo](https://github.com/leomobiledeveloper):冷启动时候 Page In 会占据相当一部分耗时,Profile Guided Optimization (PGO)是一种简单易用的可以优化 Page In 数量,进而提高启动速度的技术,本文介绍了如何使用 PGO ,推荐阅读。
+
+### 🐕 [SwiftUI 中的 Text 插值和本地化](https://onevcat.com/2021/03/swiftui-text-1/)
+[@zvving](https://github.com/zvving):SwiftUI 致力于提供简洁灵活的视图描述方式。拿最『简单』的例子`Text("I am \(someUser.name)")` 来说,你是否好奇:为 Text 设定内容的同时,如何支持本地化,以及各种更复杂的业务场景?
+喵神也有同样的疑问,并带来抽丝剥茧两篇文章:详细拆解 SwiftUI 中本地化&文本差值的实现方式。不妨细读,帮助你写出知其所以然的 Swift 代码。
+## 代码
+
+### [isowords](https://github.com/pointfreeco/isowords)
+
+[@老峰](https://github.com/gesantung):isowords 是一款英语单词字谜游戏,作者客户端采用 SwiftUI、SceneKit 实现了模块化架构,服务端也以 SwiftNIO 实现,并且全部开源。对 SwiftUI、SceneKit、Swift for Server 感兴趣的同学欢迎学习参考。
+
+## 书
+
+### 🌟 [iOS Crash Dump Analysis, Second Edition](https://github.com/faisalmemon/ios-crash-dump-analysis-book)
+
+[@Parsifal](https://github.com/ParsifalC):这是一本对于理解 iOS Crash 机制非常有帮助的书,中英文版本均有。从什么是崩溃、崩溃如何发生、各种崩溃类型、可采用的工具、崩溃日志解读等等非常系统地为我们阐述了崩溃分析,填补了当崩溃发生时应用程序开发人员与开发平台之间出现的空白。本书讨论了涵盖 iOS、macOS、watchOS 以及 tvOS 等苹果主流软件系统,也包括了 OC 和 Swift 等主流开发语言。非常推荐反复阅读。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#154-2021.04.06.md b/Reports/2021/#154-2021.04.06.md
new file mode 100644
index 000000000..545a7eed4
--- /dev/null
+++ b/Reports/2021/#154-2021.04.06.md
@@ -0,0 +1,95 @@
+# 老司机 iOS 周报 #154 | 2021-04-06
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [WWDC21 再度采用完全在线形式](https://developer.apple.com/wwdc21/)
+
+[@Parsifal](https://github.com/ParsifalC):第三十二届全球开发者大会 WWDC 将于 6 月 7 日至 11 日举行,并再度采用完全在线形式。届时将有 iOS 15、iPadOS 15、watchOS 8、macOS 11、tvOS 15 等系统将正式推出。
+
+## 文章
+
+### 🌟 🐕 [Flutter Boost3.0 初探](https://mp.weixin.qq.com/s/49h8FVPhnJSHo2brR0K9zw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):flutter_boost 几乎已经成为混合开发下的标配三方组件,由闲鱼出品,本次 flutter_boost 进行了 3.0 版本的升级更新,解决了很多诟病已久的问题,比如:需要频繁更新跟进官方版本,AndroidX 和 Support 在不同分支,iOS 和 Android 接口不对齐等问题.
+
+### 🌟 🐕 [Concurrency Done Right](https://kean.blog/post/concurrency)
+
+[@四娘](https://kemchenj.github.io):Concurrency 相关的功能提上日程之后,社区里关于如何编写并发代码的讨论也开始变多,在这篇文章里 [Nuke](https://github.com/kean/Nuke) 的作者 Kean 就介绍了他在 Nuke 里做的优化,他分析了不同场景下最佳的方案,包括 lock,atomic,actor 等等,推荐阅读。
+
+另外 [NetNewWire](https://netnewswire.com) 的作者也写了一篇 [How NetNewsWire Handles Threading](https://inessential.com/2021/03/20/how_netnewswire_handles_threading)。
+
+### 🐕 [SwiftUI 中的 Text 插值和本地化](https://onevcat.com/2021/03/swiftui-text-1/)
+
+[@zvving](https://github.com/zvving):SwiftUI 致力于提供简洁灵活的视图描述方式。拿最『简单』的例子`Text("I am \(someUser.name)")` 来说,你是否好奇:为 Text 设定内容的同时,如何支持本地化,以及各种更复杂的业务场景?
+喵神也有同样的疑问,并带来抽丝剥茧两篇文章:详细拆解 SwiftUI 中本地化&文本差值的实现方式。不妨细读,帮助你写出知其所以然的 Swift 代码。
+
+### 🐕 [听说你想写个渲染引擎](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd)
+
+[@xiaofei86](https://github.com/xiaofei86):讲述浏览器渲染引擎工作原理的系列文章,使用 Swift 实现引擎。根据渲染引擎的工作流程,分为 “HTML 解析”、“CSS 解析”、“生成样式树”、“生成布局树”、“绘制” 5 篇内容。目前已更新“[前言](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd)”和“[HTML 解析](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=2&sn=986f6eb0a7bece1d4e70253c3c9b7020&chksm=cf558945f8220053a6f15f658bcc2e442ee238c5639837076a85b2ceb6f7f6d104e4fbebc464&cur_album_id=1717440219009892354&scene=189#rd)” 2 篇,感兴趣的读者可以持续关注。
+
+### 🐕 [How I Created a DSL for Diffable Section Snapshot using Result Builders](https://swiftsenpai.com/swift/section-snapshot-builder/)
+
+[@Damien](https://github.com/ZengyiMa):在日常开发中,我们在使用 UITableView 和 UICollectionView 的时候会写很多的模版代码,能否提高我们的开发效率呢?本文提供了一个新的思路,通过自定义 DSL 的方式来构建我们的 UITableView 和 UICollectionView 的页面结构,使得我们的开发效率可以得到大幅的提高,想了解实现思路?一起来看文章内容吧!
+
+### 🐕 [Xcode-Tips](https://github.com/Xcode-Tips/xcode-tips.github.io)
+
+[@老峰](https://github.com/gesantung):Apple 开发者通常通过 Twitter 或微博等在社区中分享 Xcode 使用技巧,该项目的目标是将所有这些 Xcode 技巧放在一个地方,并使任何人都可以轻松获取或做出贡献。这些使用技巧包括如下几个方面:
+- Breakpoints:使用断点作为书签、快速切换断点、断点播放声音、使用 LLDB 表达式自动执行用户操作
+- Build Times:签名提速、复制 framework headers
+- Code:生成类初始化、选中整个代码块
+- Crashes:查看 .crash 文件
+- Interface Builder:Xcode Interface 技巧
+- Keyboard Shortcuts:跳到指定一行、格式化代码、增加注释等
+
+还有更多内容可以阅读原文,本项目持续更新,感兴趣的读者可以持续关注。
+
+### 🐕 [Unsafe memory pointers in Swift](https://theswiftdev.com/unsafe-memory-pointers-in-swift/)
+
+[@zvving](https://github.com/zvving):内存安全是 Swift 的特性之一,它意味着开发者只需关注内存所有者关系而不必在意具体的内存地址和存储细节。
+
+在另一些场景,比如 Swift 与 C 互操作,则可以通过一系列 Unsafe API,达成对特定内存的操作能力。就像其名称一样,它不安全,稍有不慎就会崩溃,但也带来更多的底层能力:读写类型化指针内容,借助 Memory Layout 操作原始指针,以及绕过 ARC 手动管理内存等。通过这篇文章,你可以对 Unsafe API 有整体的认知。
+
+## 代码
+
+### [swiftui-animation-library](https://github.com/amosgyamfi/swiftui-animation-library)
+
+[@Damien](https://github.com/ZengyiMa):swiftui-animation-library 是一款 SwiftUI 动画库,包括加载/进度,循环,开关,退出,淡入淡出,旋转和背景动画,可以让你可以在下一个 iOS 应用程序或项目中直接实现这些动画。该库还包含大量弹性动画示例,例如惯性弹跳,摇动,旋转,果冻,橡皮筋等。
+
+### [FuzzyFind](https://github.com/truizlop/FuzzyFind)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):FuzzyFind 是一个 Swift 软件包,它使用 Smith-Waterman 算法的修改版来执行模糊搜索。该软件包包括两个核心功能:bestMatch 和 fuzzyFind,使用 bestMatch,您可以在单个字符串中找到查询的最佳对齐方式,使用 fuzzyFind,您可以对多个输入运行多个查询,并获得与所有提供的查询匹配的输入的所有对齐方式。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#155-2021.04.12.md b/Reports/2021/#155-2021.04.12.md
new file mode 100644
index 000000000..9758e206e
--- /dev/null
+++ b/Reports/2021/#155-2021.04.12.md
@@ -0,0 +1,80 @@
+# 老司机 iOS 周报 #155 | 2021-04-12
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐕 [Introducing Swift Collections](https://swift.org/blog/swift-collections/)
+
+[@EyreFree](https://github.com/EyreFree):上周,Swift 官方发布了一个新的开源库 [Swift Collections](https://github.com/apple/swift-collections),它专注于扩展可用的 Swift 数据结构集。我们都知道目前 Swift 标准库实现了三种最基本的通用数据结构:数组、集合和字典,但很多时候为了更高效地解决问题,开发者们往往需要借助一些其他的数据结构。现在官方已经注意到了这一点,通过提供 `Collections` 库来让开发者们能够花费尽可能少的精力来编写更快、更可靠的程序,它的初始版本包含了三种最常见的数据结构:双端队列 Deque、有序集合 OrderedSet 和有序字典 OrderedDictionary。同时官方也给出了贡献代码的标准,感兴趣的同学赶紧来看看。
+
+### 🌟 🐕 [iOS 恢复调用栈(适配 iOS 14)](https://iosre.com/t/ios-ios14/19332)
+
+[@Leo](https://github.com/leomobiledeveloper):逆向的时候,如果调用栈是符号化的能大幅提高效率。作者详细的介绍了在 iOS 14 上如何一步步获取符号信息,最后对 Mach-O Patch 来恢复符号。除了对逆向很有用,文章里涉及到的底层知识也非常推荐阅读。
+
+### 🌟 🐕 [clang 源码导读(8):词法分析和预处理指令](https://mp.weixin.qq.com/s/zzDS0mnNSyuRwpdcUR6obg)
+
+[@JonyFang](https://github.com/JonyFang):我们知道 `clangLex` 主要负责**词法分析**和**预处理**,用于处理宏、令牌和 pragma 构造。在本文中,作者通过实际的例子对 `clangLex` 的**词法分析**和**预处理指令**相关的流程进行了梳理和总结。为了帮助读者更直观的理解 `clangLex`,作者一并提供了一份对应的预处理流程图。
+
+### 🌟 🐢 [看不懂学不会没有用的计算几何](https://juejin.cn/collection/6913090306690777102)
+
+[@Parsifal](https://github.com/ParsifalC):做图形视觉相关开发的朋友一定离不开计算几何,这个系列是用 Swift 为我们讲解常用的计算几何场景,图文并茂,对初涉视觉方向的同学会有很大帮助。
+
+> 由 [XanderXu](https://github.com/XanderXu) 自荐,另外他编写着同名的小专栏 [ARKit 与计算几何](https://xiaozhuanlan.com/computationalgeometry),所有内容均会在小专栏上首发。
+
+### 🐕 [从 Objective-C 和 Swift 看字典的性能优化(1)](https://mp.weixin.qq.com/s?__biz=MzAxMzk0OTg5MQ==&mid=2247485326&idx=1&sn=5b4dc0528da22b90a701fb249c2b4f44&chksm=9b9b8922acec00341388a8a686c3bb83475f1de338925b8c35957b7fc45ba38a3d32051d2dd1&scene=178&cur_album_id=1742555951460597762#rd)
+
+[@AidenRao](https://weibo.com/AidenRao):本系列文章会通过分析系统库汇编的方式,研究 Dictionary 底层相关的知识。
+
+本文主要分享了 NSDictionary 的两个子类:__NSPlaceholderDictionary(占位的类型,通常只出现在崩溃日志中) 和 __NSDictionaryI (存有多个键值对的不可变字典) 的详细构造过程。
+
+### 🐎 [Exploring some of the lesser-known, built-in Formatter types](https://www.swiftbysundell.com/articles/exploring-some-of-the-lesser-known-formatter-types/)
+
+[@享耳先森](https://github.com/iblacksun):开发者们对常用的 `NumberFormatter` 和 `DateFormatter` 可能比较熟悉,本文介绍了 Foundation 库里其他好用的 Formatter,如 `PersonNameComponentsFormatter` `CNPostalAddressFormatter` `RelativeDateTimeFormatter` 等。
+
+### 🐎 [DWARF文件初探——提取轻量符号表](https://mp.weixin.qq.com/s/s8iwQLNtla5nxF_Tmj2wJg)
+
+[@红纸](https://github.com/nianran):本文作者从实践出发,简单剖析了 **DWARF** 文件的文件组成。通过 **dwarfdump --debug-info** 命令可以获取到函数的文件名、函数名、函数起始地址、函数终止地址,再利用 **dwarfdump --debug-line** 获取到行信息后,可以查看当前这个行的起始地址位于同文件下那个函数的指令区间内,即可得知函数名。
+
+> 推荐人:[pilaf-king](https://github.com/pilaf-king)
+
+## 代码
+
+### [EmbeddedScrollView](https://github.com/623637646/EmbeddedScrollView)
+
+[@老峰](https://github.com/gesantung):开发中会有多 ScrollView 嵌套滚动这样的需求,作者将这一实现进行了封装,提供了简单易用的 API, 一行代码解决竖直嵌套滚动问题,手势无冲突,动画完美衔接,有类似需求的同学可以借鉴参考。
+
+> 推荐人:[623637646](https://github.com/623637646)
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#156-2021.04.19.md b/Reports/2021/#156-2021.04.19.md
new file mode 100644
index 000000000..12aa60433
--- /dev/null
+++ b/Reports/2021/#156-2021.04.19.md
@@ -0,0 +1,111 @@
+# 老司机 iOS 周报 #156 | 2021-04-19
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [为 AppTrackingTransparency 做好准备](https://developer.apple.com/cn/news/?id=8h0btjq7)
+
+[@Parsifal](https://github.com/ParsifalC):[iOS 14.5](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-14_5-beta-release-notes) 已经公开测试很长一段时间了,现在到了第八个 Beta 版本。根据目前各方面信息来看,iOS 14.5 很可能在 4 月份正式发布。iOS 14 开始苹果便在和开发者强调新的隐私跟踪策略管理方式,而这个措施即将随着 iOS 14.5 的发布正式实施。新的 ATT 以及 SKAdNetwork 2.0 推出,还将伴随着 [《App Store 审核指南》的准则 5.1.2 (i)](https://developer.apple.com/cn/app-store/review/guidelines/#5.1.2),目前已经有不少 App 被这个原因拒绝,需尽早自查和更新相关第三方 SDK 进行适配。
+
+> 另推荐一篇关于 ATT 和 SDAdNetwork 的文章:[全面解读 iOS 14 ATT 和 SKAdNetwork](http://www.woshipm.com/pd/4150041.html)
+
+## 文章
+
+### 🌟 🐕 [Wakeup in XNU](https://mp.weixin.qq.com/s/8OBAmyCLa6_eFYqIJgoCQw)
+
+[@Leo](https://github.com/leomobiledeveloper):APP 异常退出的原因有很多种,大家比较熟悉的是 Crash 和 OOM,事实上 CPU Wakeup 超过限制也会触发系统强杀。本文从内核源码出发,剖析了 Wakeup 背后的原理,也给出了一些典型的会触发这种强杀的场景。文章研究深入,逻辑清晰,推荐对功耗和稳定性感兴趣的同学阅读。
+
+### 🌟 🐕 [哈啰出行 iOS App 首屏秒开优化](https://mp.weixin.qq.com/s/5Ez2BrsyBgQ8aHZqlYtAjg)
+
+[@JonyFang](https://github.com/JonyFang):产品高频迭代在快速解决业务发展的同时也带来了大量的技术债堆积,如果没有良好的规范和监控流程会使项目在稳定和体验上存在较多的隐患和挑战。正如启动阶段的启动项和业务逻辑堆积,本文介绍了哈啰出行 iOS App 首屏秒开的优化路径:
+
+1. 数据收集:收集启动阶段、首页加载、各业务模块加载性能数据;
+2. 问题分析:确认并定位分析目前各阶段加载存在或依赖的问题;
+3. 优化解决:启动项问题、首页逻辑处理问题、业务模块问题解决;
+4. 持续监控:持续优化 & 监控首页的加载渲染和模块性能问题 & 可视化数据;
+
+### 🌟 🐕 [干货 | 减少 50% 空间,携程机票 React Native Bundle 分析与优化](https://mp.weixin.qq.com/s/aajdqmpCLKvGaokL4Qp1tg)
+
+[@looping](https://github.com/looping):本文记录了作者从 JavaScript 层面对 React Native 的业务包进行分析与优化的过程,对常用的解决方案和优化步骤进行了详细的总结,还夹带了携程内部的 CRN bundle 分析平台介绍,为高效且能持续性解决问题提供了借鉴思路,是一篇不可多得的工程技术实践好文。
+
+### 🐕 [深度解读便利蜂 React Native 多版本共存的平滑升级实践](https://mp.weixin.qq.com/s/q296ppm6iB9cou5ZgBytrg)
+
+[@Damien](https://github.com/ZengyiMa):随着前端技术生态的演进,React Hook、Fast Refresh 等技术、工具不断地迭代涌现,版本升级为业务提效赋能的同时,伴随的 breaking change(重要改动)、行为变更也带来了更多的风险和成本。对于便利蜂而言,面对迭代不频繁的项目,升级的成本则远大于升级的收益。具体实现方式是通过修改包名、动态库,可以把多个版本的 React Native 放置同一个 App 中,同时为了避免代码冗余,优化包大小,精简掉了老版本大部分代码,并实现了自定义 Module、Component 的跨版本支持。在 React Native 中升级带来的破坏性问题上给了我们一个新的思路。
+
+### 🐕 [极致首帧播放方案 - 零首帧解决方案](https://mp.weixin.qq.com/s/IGA3caeXMB-upTFiV8MuYg)
+
+[@anotheren](https://github.com/anotheren):视频播放,特别是短视频播放领域,对于首帧的展现,以及后续播放流畅度有着极高的要求。本文来自字节跳动团队,主要按照首帧的各个阶段分别介绍了对应的优化方案,也简单介绍了预加载和预渲染这两个优化首帧的利器,在文章最后针对长视频以及历史进度起播这两种场景,介绍了对应的优化手段。当然不同团队会面临不同的问题,如果你也需要特定的优化,不妨来找找思路。
+
+### 🐢 [听说你想写个渲染引擎(css 解析 + 样式树)](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd)
+
+[@xiaofei86](https://github.com/xiaofei86):讲述浏览器渲染引擎工作原理的系列文章,使用 Swift 实现引擎,代码开源,可以在 [Github](https://github.com/silan-liu/tiny-web-render-engine-swift) 查看。在往期周报中我们推荐了 [HTML 解析](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=2&sn=986f6eb0a7bece1d4e70253c3c9b7020&chksm=cf558945f8220053a6f15f658bcc2e442ee238c5639837076a85b2ceb6f7f6d104e4fbebc464&cur_album_id=1717440219009892354&scene=189#rd),本期作者更新了 [CSS 解析](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485200&idx=1&sn=6f5eca77d57bac8909b0c813d1c2c414&chksm=cf5588d8f82201ce7b85fa35aea9b58dc953c8d85167fa1f589e9d7fd0e7ac1c90d1e21fd565&token=1141333798&lang=zh_CN#rd) 和 [样式树](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485200&idx=2&sn=3c7bc2b702fd01c9215bad2d26786078&chksm=cf5588d8f82201ce64e1729d490d2ef31dda69c1d23656c386184e7399941b0bc28855b9588c&token=1141333798&lang=zh_CN#rd) 2 篇新内容。感兴趣的读者可以持续关注,跟随作者一起学习。
+
+### 🐢 [抖音 iOS 工程架构演进](https://mp.weixin.qq.com/s/HHH5_IEbsR8iSmXSIdeutw)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):从 16 年至今,抖音实现了从零到六亿的日活增长,快速的业务发展对技术支撑提出了更高的要求。本文讲述了抖音 iOS App 工程架构在不同的阶段对组件化方案的持续改进:
+
+- 原始工程架构
+ - 单体架构 + Cocoapods:业务代码、工程配置、资源文件全部放在一个大业务仓库,由 Podfile 文件描述第三方仓库的依赖版本
+
+- 分离壳工程后架构
+ - 壳工程 + 业务仓 + 依赖仓:分离壳工程,工程配置、部分系统资源、工程主入口被拆分到主宿主壳工程,Podfile 拆分出版本依赖管理文件 Podfile.seer,由依赖管理平台进行各个版本的容器化管理
+
+- 单仓多组件架构
+ - 壳工程 + 单仓多组件 + 依赖仓:采用单仓多组件后,每个业务线仓库支持添加 podspec 增加组件,实现更小粒度的二进制依赖。业务线仓库内划分业务实现层、业务接口层、服务层和基础层
+
+- Example 子壳工程架构
+ - 壳工程 + AWELaunchKit + 单仓多组件 + 依赖仓:每个业务仓从宿主同步工程配置构建子壳工程。增加 AWELaunchKit 为子壳工程提供运行时的基础能力。通过服务层提供业务间运行时共享的服务能力,满足代码复用和更小二进制依赖
+
+在架构演进过程中,还会遇到二进制污染、编译优化、主干分支稳定性、业务层的依赖耦合等问题,这必然是一个长期的、需要持续探索的系统性工程。
+
+### 🐎 [软件幻灭(译)](https://tonsky.me/blog/disenchantment/zh/)
+
+[@老驴](https://www.weibo.com/6090610445):本文是作者对现在软件行业的一篇吐槽文。作者认为软件行业和 20 年前相比,更成熟,却也更复杂,更累赘。软件体积动辄是当年的 10 倍以上,性能却没有很大的提升。各种协议也越来越复杂。大家都只在乎完成产品,越来越少的人在乎软件本身的质量了。虽然我不完全同意作者的观点,但是也不得不承认这是事实,这也是一个行业逐渐成熟以后的必然。我们有能力改变么?也许有,但成功的可能性也并不高。
+
+### 🐢 [Swift 的一次函数式之旅](https://mp.weixin.qq.com/s/yiF0NwXffrkunGOieWbIRA)
+
+[@莲叔](https://github.com/aaaron7):Swift 语言从诞生之日起就因为从纯函数语言中吸收了非常多的函数式特性而成为函数式编程爱好者们的津津乐道的热门语言之一。自定义操作符,函数是一等公民,简洁的闭包语法以及 maybe monad 的具体实现:optional,这些特性都带来了相当多的想象空间。一度在 15-17 年掀起了一股热潮。
+
+18 年之后热度逐步减少,原因很多,其中比较关键的原因就是在实践中存在的理解成本高、调用栈复杂等问题一直没有得到很好的解决,所以也就一直未成为 iOS 开发的主流模式。不流行不妨碍这是一门非常有趣的学科,毕竟函数式编程的鼻祖 Haskell 社区就有一句谚语:Avoid success at all cost,不计代价的避免成功。指的是不为了流行去做事,而是做本来就正确的事情。所以小编也推荐大家可以适当关注函数式编程,享受抽象与形式的美带来的愉悦感。
+
+这篇文章介绍了函数式编程的入门知识,同时也浅显易懂的讲述了通过函数组合提升代码可读性和 callback hell 的经典案例,适合感兴趣的同学们阅读。
+
+## 工具
+
+### [Nuke Docs](https://kean.blog/post/nuke-docs)
+
+[@老驴](https://www.weibo.com/6090610445):不论是开源项目还是公司内部项目中都有很重要的一环:写一份规范易读的文档。文档不仅仅是为使用者提供方便,也为自己之后可以更好地理解,重构,改进服务。Nuke 的作者就用 Blog 讲述了对于 Nuke 文档,是怎么做的选择,最后又是怎么优化的。文章里没有什么很详细的技术细节,但是思路值得学习。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#157-2021.04.26.md b/Reports/2021/#157-2021.04.26.md
new file mode 100644
index 000000000..cf867a069
--- /dev/null
+++ b/Reports/2021/#157-2021.04.26.md
@@ -0,0 +1,113 @@
+# 老司机 iOS 周报 #157 | 2021-04-26
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 公告
+
+[@Parsifal](https://github.com/ParsifalC):本期是节前最后一期,5.1 期间周报停更,我们 5.10 再见!
+
+## 新闻
+
+### [使用 Xcode 12 和 iOS 14 SDK 提交更新](https://developer.apple.com/cn/news/?id=ib31uj1j)
+
+[@Parsifal](https://github.com/ParsifalC):自 2021 年 4 月 26 日起,所有提交至 App Store 的 iPhone 和 iPad app 都必须使用 Xcode 12 和 iOS 14 SDK 或更高版本来构建。另外,这两天有部分读者表示 iTunes Connect 网站使用异常,其实苹果在 WWDC 2018 里就宣布启用 App Store Connect 服务了,**我们现在应该使用 https://appstoreconnect.apple.com/ 来进行管理。**
+
+### [WWDC 2021 Swift Student Challenge Submissions](https://wwdc.github.io/2021/)
+
+[@Damien](https://github.com/ZengyiMa):一年一度的 Swift 学生挑战赛开始啦,快来看看吧。胜者将会获得特别的 WWDC21 外套、定制别针套装和为期一年的苹果开发者计划会员资格。请踊跃参加吧。
+
+## 文章
+
+### 🌟 🐕 [Swift 2021 生态调研报告](https://mp.weixin.qq.com/s/5SXAozM2c6Ivyzl7B9IfQQ)
+
+[@JonyFang](https://github.com/JonyFang):一份 Swift 2021 生态调研的报告。虽然看起来现阶段的 Swift 还是在一个积累的过程,但随着 WidgetKit 这个标志性的 SDK 诞生,发展阶段逐渐从积累阶段转向发展期,毕竟目前 ABI 稳定了、Module 稳定了、对二进制组件的支持也有了、Swift 语言本身的版本变化也逐渐稳定,这些都给予了 Swift 很好的支持。Swift 的发展方向看上去不只是为了 Apple 生态体系内,从社区的规划及 Timac 的几篇分析文章可以看出 Swift 在多元发展上(破圈)的决心。国内的 Swift 发展被去年的 iOS 14 新特性盘活了,WidgetKit 功不可没,虽然文中未给出大部分公司都将转型的结论,但至少绝大部分互联网的头部公司已经兼容了 Swift 的开发,这是一个好的开始,相信在可见的未来,Apple 的转型决心会让国内的公司更重视这方面工作的重要性。
+
+本篇主要结合下面几个纬度分析了 2021 年 Swift 在 iOS 整个生态圈的现状:
+
+1. Swift 语言
+ - 版本变化
+ - On the road to Swift 6
+2. 技术社区
+ - 语言排行榜
+ - 社区活跃度
+ - 商用 SDK 的技术选型
+3. Apple 生态
+ - SDK 能力
+ - 原生 App 分析
+ - iOS 中不同编程语言的发展
+4. 国内外客户端的使用现状
+ - 数据样本
+ - 2021 年现状
+ - 数据解读
+
+### 🌟 🐢 [基于 Flutter 的 Web 渲染引擎「北海」正式开源](https://mp.weixin.qq.com/s/tnHbceedNsoKgMrgoTyyuA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):单看标题想必大家已经有一个大致的猜测,不错,淘系技术团队基于 Flutter 做了一个跨端的渲染框架,你可以使用完全的前端开发方式来写 Flutter,同样的前端开发中可以用到的工具 / 框架等,都可以无缝用到该项目中,棒极了!!!并且 Kraken 完全按照 W3C 标准,同时对一些组件做了性能优化,比如滚动组件.
+
+### 🐕 [Why Swift closures are not Equatable](https://www.jessesquires.com/blog/2021/04/05/why-swift-closures-are-not-equatable/)
+
+[@极速男孩](https://github.com/ztlyyznf001):Swift 中的闭包与 C 和 Objective-C 中的代码块或者其他语言中的匿名函数类似,但是当我们用 == 或者 === 去比较两个闭包时都会报错,这篇文章解释了为什么不能比较两个闭包,以及如果可以比较两个闭包所带来的问题。
+
+### 🐎 [开源神器:可快速在 iOS 设备上安装 Windows、Linux 等操作系统!](https://mp.weixin.qq.com/s/Q8CvdNBnpoLow98MM1MZ1g)
+
+[@老驴](https://www.weibo.com/6090610445):有没有想过在 iOS 上运行其他操作系统?按照现在 iPhone 的计算性能,性能上完全可以的。国外的一位叫 osy86 的开发者就搞出了这样的一个虚拟机,可以让你在 iPhone 上跑任意操作系统。不过因为 iOS 本身的限制,你需要自己签名或者在越狱的机器上安装。兴趣的可以试试看。
+
+### 🐎 [Getting Ready for App Tracking Transparency](https://swiftsenpai.com/development/get-ready-apptrackingtransparency/)
+
+[@老峰](https://swiftsenpai.com/development/get-ready-apptrackingtransparency/):4 月 6 日 Apple 发布公告 [Get ready for AppTrackingTransparency](https://developer.apple.com/news/?id=8h0btjq7) 要求开发者如果应用有收集用户数据,并出于跨应用和网站跟踪的目的与第三方分享用户数据,那么从 iOS 14.5 必须通过 AppTrackingTransparency 框架获得用户授权。文章简要介绍了 IDFA 概念,以及如何接入 AppTrackingTransparency框架,有需求的同学建议阅读。
+
+### 🐕 [Every SwiftUI protocol explained](https://www.fivestars.blog/articles/swiftui-protocols/)
+
+[@AidenRao](https://weibo.com/AidenRao):本文详细介绍了 SwiftUI 定义的 54 种协议,例如:核心协议 View 和 ViewModifier 用于定义视图和视图修饰符。APP 和 Scene 使 APP 的完整生命周期都可以基于 SwiftUI 实现。19 种 styles 协议用于修饰 label,button 等特定视图,Shape 和 InsettableShape 用于定义形状,Animatable 和 AnimatableModifier 用于实现动画。
+
+## 工具
+
+### [GitHub 缓存加速网站:GitClone](https://gitclone.com/)
+
+[@J_Knight_](https://github.com/knightsj):该网站提供了远程缓存 GitHub 库的方案:可以提高从 GitHub clone 代码的速度。具体有三种使用方法:
+1. 替换 url:将 gitclone.com 嵌入到克隆地址
+2. 设置 git 参数
+3. 使用 cgit 客户端
+
+详细的介绍可以进入该网站主页查看:https://gitclone.com
+
+## 代码
+
+### [ExposureKit](https://github.com/623637646/ExposureKit)
+
+[@红纸](https://github.com/nianran):ExposureKit 是一款检测 View 曝光库,一行代码即可集成,让业务曝光数据统计分析变得更方便。该库同时支持 Swift/OC 的检测,其功能基于原作者 [Yanni Wang 王氩](https://github.com/623637646) 的另外一个仓库 [EasySwiftHook](https://github.com/623637646/SwiftHook/blob/master/Documents/README.zh-Hans.md) 实现函数 Hook。
+
+> 自荐:[Yanni Wang 王氩](https://github.com/623637646)
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#158-2021.05.10.md b/Reports/2021/#158-2021.05.10.md
new file mode 100644
index 000000000..a3c4621be
--- /dev/null
+++ b/Reports/2021/#158-2021.05.10.md
@@ -0,0 +1,96 @@
+# 老司机 iOS 周报 #158 | 2021-05-10
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 福利
+
+极客时间戴铭老师的「[iOS 开发高手课](https://time.geekbang.org/column/intro/100024501?code=0eTznNzpAbVisw%2FesJ9iM9iraIX21mfPuPgxm1jY5tI%3D)」**优惠活动截止时间是 5.12**,想要购买的读者可以通过周报二维码渠道,不仅**享受半价**,而且我们会将官方返现的 **20 元全额退款**给大家。更多详细内容可以参考 - [系统构建自己的 iOS 知识体系](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&tempkey=MTExMl9EcWloZVlNQyt6MjA1NS9pUEVtQ2RIY2JwcE1nQV9HeERVVkJBZk0zTVZjb2dCLUZaZEtsT1M3aFFCcURwM3ZJLU85OWVzYm9fei1UcnJRN2tDOVNFcGdkdDVoMElpcC1sMXNkd21LeWZaSEJWalRGNkQ2d25Bb012MWYxa2dnRmxGWFNWeGd6N0lCbk9rV1AxcWJRRW42X1Y3c3hEZW40M194c05Bfn4%3D&chksm=6aa285285dd50c3ef2fed31f056abbd0e6b0b9f0512b8ff8ec2e1560716fda253d1c28ecf600#rd)。
+
+## 新闻
+
+### 周报开通视频号了!
+
+[@Parsifal](https://github.com/ParsifalC):号外号外!!周报编辑组正式开通微信视频号了!为了丰富我们的内容形式,更好地将优质知识传递给大家,我们接下来也会尝试不同的方法。WWDC 2021 临近,我们今年也在考虑更多样化的『WWDC 内参』活动,关注视频号,或许 6 月有惊喜哦(**开通直播服务需要 1000+ 粉丝,希望大家多多帮忙!**)~
+
+> **iTDriverr** 视频号开通在周报微信号里,欢迎大家添加!
+
+### [swift-5-4-released](https://swift.org/blog/swift-5-4-released/)
+
+[@享耳先森](https://github.com/iblacksun):五一长假前 Apple 随 Xcode 12.5 一起发布了 Swift 5.4 版,除 `Result 生成器` 等新特性外,5.4 主要集中在编译和运行性能的提升,具体内容也可以参考「知识小集」翻译的[这篇文章](https://mp.weixin.qq.com/s/CKx-UhzBkhDMDvDbzjX09g)。
+
+## 文章
+
+### 🌟 🐎 [美团做 React Native 性能优化的三个关键点](https://mp.weixin.qq.com/s/2D2l7NF0kmwAkfCI_PbZug)
+
+[@looping](https://github.com/looping):这是一篇 InfoQ 对美团移动端的采访记录,提到了美团在 React Native 性能优化实践层面的一些经验,以及对于技术框架选型的一些建议。里面讲的有些点还是比较干的,像是预告片,期待之后能在 QCon 大会上稀释下。本文可作为大纲参考,对罗列的问题结合我们自身的实际情况来分析,再看下跟大厂的差距,找到提升空间和下一阶段的演进方向。
+
+### 🌟 🐕 [解读 Flutter 中热重载原理](https://mp.weixin.qq.com/s/Rd03kZLr26AJGcW2RXZc3w)
+
+[@Parsifal](https://github.com/ParsifalC):相比于前端圈子,开发调试体验是客户端人员挺头疼的痛点。而近些年 React Native/Weex/Flutter 等跨端框架吸引人的一方面也是其**热重载**这一开发体验,早之前社区有利用 File Watcher 监听文件变化并通过动态库注入与 runtime 在模拟器上实现热重载的 [InjectionIII](https://github.com/johnno1962/InjectionIII) ,甚至苹果自己也在 SwiftUI 上支持了实时预览。本文则基于 Flutter 源码,解读了 Flutter 是如何用 Dart 语言特性和 DartVM 实现其热重载功能。全文思路比较清晰,如果你也对 flutter 热重载机制有很大兴趣,阅读此文,应该能解决掉不少你的疑问。
+
+### 🌟 🐕 [干货 | 携程火车票 Flutter 最佳实践](https://mp.weixin.qq.com/s/VP6WEQkEel3W4tdo3ThYDw)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):本文介绍了携程火车票选择 Flutter 的初衷,Provider 状态管理的实际使用,建议 Flutter 主体的构架采用 MVVM 模式,还介绍了一些 Flutter 性能检测、量化工具和一些性能优化点供大家参考。收集了 Flutter 开发过程中常见并且大量发生的问题,并提供了相应的解决方案。
+
+### 🐢 [听说你想写个渲染引擎(布局树 + 绘制)](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485323&idx=1&sn=af965b57deaa2aabdd990348f7aa09ce&chksm=cf558843f822015544defa0c6af508642c840fc53f418c80d37b1af9b0018144b5139d6162f5&token=1028691144&lang=zh_CN#rd)
+
+[@xiaofei86](https://github.com/xiaofei86):讲述浏览器渲染引擎工作原理的系列文章,代码[开源](https://github.com/silan-liu/tiny-web-render-engine-swift)。作者参考了 “动手写浏览器渲染引擎” 系列文章,原文用 rust 编写,作者使用 Swift 进行了重写。
+
+根据渲染引擎的工作流程,分为 “HTML 解析”、“CSS 解析”、“生成样式树”、“生成布局树”、“绘制” 5 篇内容。在往期周报中,我们已经推荐前 3 篇,本期作者更新了最后 2 篇。至此,本系列已全部完结,感兴趣的读者可以一起动手练习,对我们理解现代浏览器渲染引擎的工作原理会有所帮助。
+
+### 🐎 [How OrderedSet works](https://oleb.net/2021/ordered-set/)
+
+[@四娘](https://kemchenj.github.io/):新的 [Swift Collection](https://swift.org/blog/swift-collections/) 库为我们带来了一些实用的集合数据结构,在这篇文章里作者就为我们分析了其中 OrderedSet 的实现方式。
+
+## 代码
+
+### [GetX](https://github.com/jonataslaw/getx)
+
+[@Damienn](https://github.com/ZengyiMa):GetX 是 Flutter 的一个轻巧并且强大的库。它具有高性能的状态管理、智能的依赖注入和路由管理的能力。并且 GetX 围绕着研发的生产力、高性能和优秀的代码架构这 3 点设计原则去整体性的设计,对于使用 Flutter 的同学不妨一试。
+
+### [ResponderChain](https://github.com/GodL/ResponderChain)
+
+[@红纸](https://github.com/nianran):ResponderChain 提供了一种通过响应者链传递事件/数据的新方式,有别于传统 iOS 开发中 delegate 与 block 的形式,无需找到具体实例,即可进行数据和事件的传递。
+
+> 自荐:[GodL](https://github.com/GodL)
+
+## 音视频
+
+### [GGTalk | 某 C:两年前从合肥去广州,两年后从广州回合肥,我为什么放弃一线城市和一线大厂](https://www.xiaoyuzhoufm.com/episode/6087ff41d99c5b06d55584f7?s=eyJ1IjoiNWU3ZDRiZTBhMmYyZTUwM2NlYzQzZTM3IiwiZCI6MX0%3D)
+
+ [@含笑饮砒霜](https://weibo.com/chinafishnews/):这是一篇值得一听的播客,请到的嘉宾是两年前从合肥去广州,两年后又从广州回合肥的 BNC。这两年在微信工作的 BNC 也谈到了大家比较感兴趣的一些问题,比如在微信的工作体验以及为什么离开微信,微信为什么总是被骂等。逃离北上广还是回到北上广这几年时常会引起社会讨论,这是一个没有标准答案的选择,不管在哪里,遵从自己的内心,我们终将都有光明的未来!
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 哈啰出行(杭州/上海)招聘 资深/专家 iOS 开发工程师,参与哈啰出行 App 的软件架构设计 / 日常迭代开发;负责客户端应用优化及相关领域的技术探索;有大中型项目的开发经验优先,有跨端 (Flutter/ReactNative) 项目开发经验优先,有安全性、性能优化经验的优先。联系方式:邮箱:shishaoyong11215@hellobike.com 微信:CrazyCoder_SY
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#159-2021.05.17.md b/Reports/2021/#159-2021.05.17.md
new file mode 100644
index 000000000..1e242219a
--- /dev/null
+++ b/Reports/2021/#159-2021.05.17.md
@@ -0,0 +1,114 @@
+# 老司机 iOS 周报 #159 | 2021-05-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Announcing the Swift Mentorship Program](https://swift.org/blog/swift-mentorship-program/)
+
+> [知识小集](https://mp.weixin.qq.com/s/0B7kTL3UkvA_Nfpkzy7jUw):近日,Swift 官方针对 Swift 社区的新贡献者,发布了 Swift 导师计划。这一计划旨在为成为 Swift 项目积极开源贡献者的开发人员提供帮助与支持,同时可以获得社区中经验丰富的贡献者的直接指导。
+>
+> 参与计划的每位开发者都有机会与 Swift 社区中经验丰富的开发人员联系,并向他们学习。同时,根据自己的学习目标,开发者可以为 Swift 项目甚至 Swift 编译器项目贡献代码。社区会根据学习目标来匹配开发者和导师,并让他们一起在开源项目上合作 12 周时间。
+>
+> 一方面,对于新贡献者而言,降低了贡献代码的准入门槛,不需要事先为项目做出贡献,同时能提升更多的技能;另一方面,对于导师来说,也是一个不错的增加领导技能的机会。对于双方而言,都是有益的。
+>
+> 感兴趣的小伙伴们,特别是在校的学生朋友们,可以考虑加入这一计划,相信一定能从中受益匪浅。该计划的详情可点击原文链接查看。
+
+## 文章
+
+### 🌟 🐕 [LLVM Link Time Optimization](https://mp.weixin.qq.com/s/Th1C3_pVES6Km6A7isgYGw)
+
+[@Leo](https://github.com/leomobiledeveloper):Link Time Optimization,简称 LTO 是一种在链接期间对代码进行优化的技术,因为链接过程能看到应用程序的全貌,所以能做一些全局的优化来提高运行时的性能以及减小二进制的大小。本文是一篇 LTO 入门的佳作,作者不仅分析了实际场景下如何让 LTO 产生效果,还从原理的角度讲解了 LTO 是如何工作的,推荐阅读。
+
+### 🌟 🐕 [XD to Flutter 2.0 现已发布](https://mp.weixin.qq.com/s/VWSzeQb_pV9EWXqdWuu51A)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):XD to Flutter 插件是一个功能强大、易于使用的工具,可将您的 Adobe XD 设计导出为简洁、有效的 Flutter 代码。您可以从自己的设计中复制特定视觉元素的代码,导出各种可再利用的 Widgets,甚至可以将一些视图整个导出,无论您是要使用它来复制某个构思精妙的渐变效果的代码,还是要导出完全响应式、参数化、交互式的 Widget,都非常简单。
+
+### 🌟 🐕 [A站 的 Swift 实践 —— 上篇](https://mp.weixin.qq.com/s/rUZ8RwhWf4DWAa5YHHynsQ)
+
+[@xiaofei86](https://github.com/xiaofei86):经过不断迭代,Swift 如今已成 iOS 乃至苹果全平台首选开发语言,A 站也已经完全投入到 Swift 浪潮中,享受到 Swift 语言带来的舒适和高效开发体验。作为 A 站的 Swift 实践上篇,本文介绍了 Swift 的技术背景,A 站使用 Swift 的架构演进过程,以及对最新框架 SwiftUI 和 Combine 等技术的选型。大家可以关注“快手大前端技术”公众号,下篇内容会详细介绍混编和 Swift 动态性。
+
+### 🐢 [自由、开源及其敌人 —— RMS事件簿](https://mp.weixin.qq.com/s/Q3DDYYiGbJJREii7ZPBuMg)
+[@zvving](https://github.com/zvving):无论你身处大厂还是创业团队,不可避免,我们大量的工作要用到开源项目。除了不同开源协议对源码开放&商用的已有约定外,你可曾想过:基于公司或个人的道德判断,你也许不能再使用部分开源项目。
+
+[『开源项目是否需要考虑使用者道德』](http://esr.ibiblio.org/?p=8106)这一争论从未停止,而今愈演愈烈。
+本文用罗列各方事件的方式,尽可能客观的描述围绕[RMS(Richard M. Stallman)](https://stallmansupport.org/who-is-richard-stallman.html)以及开源&[道德平权思潮](https://ethicalsource.dev/)讨论的纷争。
+
+作为软件行业从业者,这纷争成因以及对开源社区的影响,值得我们每个人关注。
+
+> 1. RMS是自由软件运动&GNU 的发起人,GCC、EMACS 作者
+> 2. 值得参考的相关评论:[围绕RMS、开源、自由软件的两场“战争”](https://mp.weixin.qq.com/s/Kr0FzkpA-EHT51F7PVX76A)
+
+### 🐕 [Monitoring for iOS with MetricKit: Getting Started](https://www.raywenderlich.com/20952676-monitoring-for-ios-with-metrickit-getting-started/)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了苹果官方提供的用于监控 iOS 程序的 MetricKit,该组件自 iOS 13 之后提供,在 iOS 14 也提供了新的 API。本文介绍了该组件的几个关键部分:
+
+- MXMetricManager:核心管理类
+- MXMetricPayload:封装了每日上报的数据
+- MXDiagnosticPayload:具体的性能相关的信息
+- MXCallStackTree:调用栈相关的信息
+- MXAppExitMetric:APP 退出的相关信息(iOS 14提供)
+
+最后也介绍了该组件在 Organizer 上的使用方法。
+
+### [Flutter 状态管理: 使用 MobX](https://mp.weixin.qq.com/s/ken-UT3cmxc5aeWKkM-Lzg)
+
+[@Damien](https://github.com/ZengyiMa):众所周知,状态管理是每个软件项目都需要持续迭代更新的方向。在 Flutter 项目中,你可以使用 MobX 来管理应用中的各种状态,要在 Flutter 中高效地使用 MobX,需要遵循以下原则:
+* 我们能访问任意状态中的可观察对象(即在我们应用运行过程中发生变化的变量)。
+* 我们可以在 View 中展示这些状态,并响应 Action 意图。
+* 我们可以修改状态,从而更新可观察对象以及相应的 View。
+
+除此之外,本文还配套了详细的使用示例,使用 Flutter 的同学不妨一试。
+
+## 代码
+
+### [SwiftUI-Hooks](https://github.com/ra1028/SwiftUI-Hooks)
+
+[@AidenRao](https://weibo.com/AidenRao):作者基于 React Hooks 的思想,开发了一套 SwiftUI Hooks。SwiftUI Hooks 将状态和生命周期引入视图,而不必依赖于类似 @State 或 @ObservedObject 这些仅允许在视图中使用的元素。它还允许我们通过构建由多个钩子组成的自定义钩子在视图之间重用状态逻辑。此外,诸如 useEffect 之类的钩子也解决了 SwiftUI 中缺乏生命周期的问题。
+
+### [Animatable - 使用 PropertyWrapper 实现动画代码复用](https://github.com/GodL/Animatable)
+
+[@享耳先森](https://github.com/iblacksun):`PropertyWrapper` 结合 `Codable` 实现 Model 的安全解析相信大家在使用了,作者利用 `PropertyWrapper` 实现了一个 CAAnimation 复用的库,代码非常简单,可以直接跳到 Github 浏览。
+
+> 自荐:[GodL](https://github.com/GodL)
+
+### [OverlayContainer](https://github.com/applidium/OverlayContainer)
+
+[@JonyFang](https://github.com/JonyFang):`OverlayContainer` 是一个 Swift 编写的 UI 库。它的作用是让一些场景下的界面开发变得更加轻便,例如在 Apple Maps、Stocks 或 Shortcuts 应用中看到的界面。
+
+### [SwiftRegexDSL](https://github.com/kodlian/SwiftRegexDSL)
+
+[@老峰](https://github.com/GesanTung):在开发中我们经常会写正则表达式处理字符串,虽然每天都在使用和创建正则表达式,但是每次我们都必须依靠网络搜索和旧版文档。`SwiftRegexDSL` 提供了一种使用声明式结构化的 API 来使用正则表达式,它主要提供 match、range、replacingOccurrences 等字符串处理方法。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#160-2021.05.24.md b/Reports/2021/#160-2021.05.24.md
new file mode 100644
index 000000000..2ee4d2479
--- /dev/null
+++ b/Reports/2021/#160-2021.05.24.md
@@ -0,0 +1,99 @@
+# 老司机 iOS 周报 #160 | 2021-05-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+### 🌟 周报公众号新增关键词自动回复
+
+[@Parsifal](https://github.com/ParsifalC):公众号后台不时都有读者发送一些希望查询检索的词语,为此我们根据“个人经验”设置了几条较常见的内容,并配上对应的 GitHub 检索页面和可能有的专辑链接。已经设置的关键词有 **招聘**、**flutter**、**swift**、**webview**、**swiftui**、**性能优化**和 **IAP** 等。
+
+当然,我们更鼓励喜欢自己动手,丰衣足食的朋友,目前检索周报内容有两种方式:
+
+- 到我们 [GitHub Repo 利用 “Search In Repo” 的功能](https://github.com/SwiftOldDriver/iOS-Weekly/search?q=swift) 对周报全仓库内容进行检索
+- 到我们微信公众号主页的右上角搜索功能进行公众号内检索,由于我们迁移过一次公众号,这种搜索方式只能搜索去年下半年开始的内容
+
+### 🌟 周报公众号代发内推信息事宜
+
+[@Parsifal](https://github.com/ParsifalC):目前客户端,尤其是 iOS 岗位,都比较缺乏高级工程师,理解各位招聘负责人的不容易。所以周报目前是友情代发招聘信息不收费,以后也不会收费。但正如大家所看到的那样,我们收到的招聘信息只会放在次条推送,而次条则依赖于我们首条的文章。所以首条如果没内容的话,自然就不会有次条了。这就导致如果招聘需求多的话,就会排队比较久。介于这种情况,我们很希望大家向我们公众号投稿,以稿发招聘信息,我们会将该招聘需求从队列里提前发送,并且从招人诚意上来看,用一篇值得大家认可的文章来切入招聘,也会更有说服力,得到曝光的机会也更多。
+
+最后,所有招聘事宜和投稿事宜,可以加 V 联系 **iTDriverr**。
+
+## 文章
+
+### 🐢 [Flutter 2.0 iOS 包大小优化 ](https://juejin.cn/post/6959811895645700132/)
+
+[@邦Ben](https://weibo.com/linwenbang):该文章介绍了在 Flutter 2.0 下如何拆分 AOT 编译产物,以实现动态下发这部分产物从而达成包体积优化的目的。Flutter 2.0 对比 1.x 的版本来说调整了不少流程,因此对于做过 1.x 拆分的同学升级会有所有帮助,想了解整体加载流程的话也值得一看。不过这里值得注意,任何动态下发都会存在失败率的可能,因此如果你的 APP Flutter 作为核心部分不可缺少的话,并不太建议做拆分,也需要考虑好容错降级的处理,同时 iOS 的包体积要求一般也相对宽松。
+
+### 🐕 [iOS 极致速度优化:快速打开任意 APP 的设置界面](https://mp.weixin.qq.com/s/DpLy_o3wMpZauiPnU1aSBw)
+
+ [@含笑饮砒霜](https://weibo.com/chinafishnews/):本文通过分析 [UIApplication openURL:] 的背后逻辑,提供了一种打开任意 APP 设置页面的方法。同时也可以发现,该方案可以减少了很多检验逻辑,并减少了 xpc 调用,可以大幅度提升打开设置页面的速度。
+
+### 🌟 🐕 [探索微信聊天 UI 逻辑实现](https://everettjf.github.io/2016/06/19/reverse-explore-wechat-message-design/)
+
+[@zvving](https://github.com/zvving):『聊天页面 cell 有两种实现方式:一种是每类消息定义不同 Cell,另一种是微信的实现方式。』是段子也是事实。本文作者 [Everettjf](https://everettjf.github.io/about/) 详细记录逆向执行及分析过程,带你一起了解微信聊天界面的实现方式,是不可多得的逆向学习案例。
+
+> 文章成于 2016 年,经与微信同学确认,诸多内容已经调整,文章逆向的探索过程依旧值得学习。
+
+### 🌟 🐢 [普通技术人的成长路径 - 一位客户端老兵的经验之谈](https://mp.weixin.qq.com/s/IrSQyyc0J3SXBuWs9M3SYA)
+
+[@折腾范儿_唯敬](https://weibo.com/agvicking/):做客户端的同学或多或少都会进入一些迷茫期,客户端这条路的发展有多深?我该如何提升自己?如何摆正自己的心态来面对现今工作上越来越多的焦虑?不妨看看牟爽的这一篇经验之谈,看看过来人这一路是如何走过来的。整篇文章更多是老兵的个人感慨分享,因为每个人的工作经历与成长历程不同,老兵在文中所讲的也许不见得能100%和每个人不同的经历产生共鸣,而且短短的文字无法深刻的表达出这些真实经历背后真实的故事所对应的思考。但相信老兵的感慨是能够让读者感受到真诚与一些作为经历过人的苦口婆心,有不解和困惑也欢迎和老兵进一步进行交流与解惑
+
+### 🐢 [【译】SE-0306 Actors](https://github.com/SwiftOldDriver/iOS-Weekly/issues/2792)
+
+[@四娘](https://kemchenj.github.io/):Swift 在下个版本 5.5 将会带来 async/await 语法的支持,它解决的是异步编程控制流复杂的问题,让我们可以像同步代码一样去组织代码的控制流。
+
+从异步迈向并发的路上,我们还需要考虑如何组织调度这些异步操作,并且避免并发数据访问带来的数据竞赛问题。Swift 选择了 Actor 作为它的并发模型,**将 actor 作为一种新的类型引入,并且为其提供了静态的 data-race 检测**。
+
+这是自 1.0 版本之后首次引入的新类型,足以说明这次改动之大,与过去两年的小修小补不同,强烈推荐大家阅读这份提案,它将会在未来两三年,影响 Swift 编程模型的方方面面。
+
+### 🐎 [越狱 iOS app 砸壳这件事儿](https://mp.weixin.qq.com/s/xFHA2tlc6HCLti_ihlrsZA)
+
+[@Damien](https://github.com/ZengyiMa):你对逆向感兴趣吗?在所有逆向教程中都会从砸壳这一步开始,那么什么是砸壳呢?以及砸壳的原理是什么呢?那就一起来深入了解一下吧,本文会详细介绍如何砸壳,以及砸壳的多种思路和手段。对想了解逆向知识的同学是个不可多得的入门教程。
+
+## 摸鱼周报
+
+[@摸鱼周报 #11](https://mp.weixin.qq.com/s/hE9wYlLX8F1sKjIF5eIPVQ):本期摸鱼周报带来了 **程序员必知的硬核知识大全** 的内容解读,它由 [crisxuan](https://github.com/crisxuan/bestJavaer) 整理完成,经作者授权该 PDF 已经放在了周报仓库里,有兴趣的同学可以下载阅读全文。我们以概念的形式对一些重要知识进行解释,会分三期,本期周报是第一期内容,包含有:CPU、寄存器、程序计数器、内存,IC 等内容的介绍。
+
+另外我们还总结了几个实用的 Tips :如何在不继承第三方 SDK 的情况下完成对应的身份验证以及如何使用 Charles 为 Apple TV 端的网络请求进行抓包。
+
+## 代码
+
+### [UIImageColorRatio](https://github.com/623637646/UIImageColorRatio)
+
+[@水水](https://www.xuyanlan.com):使用 Swift 实现的计算 UIImage 各颜色占比的工具。
+
+> 由 [Yanni Wang 王氩](https://github.com/623637646) 自荐
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#161-2021.05.31.md b/Reports/2021/#161-2021.05.31.md
new file mode 100644
index 000000000..acf65e555
--- /dev/null
+++ b/Reports/2021/#161-2021.05.31.md
@@ -0,0 +1,108 @@
+# 老司机 iOS 周报 #161 | 2021-05-31
+
+
+老司机 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)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#162-2021.06.07.md b/Reports/2021/#162-2021.06.07.md
new file mode 100644
index 000000000..3d9e61c67
--- /dev/null
+++ b/Reports/2021/#162-2021.06.07.md
@@ -0,0 +1,158 @@
+# 老司机 iOS 周报 #162 | 2021-06-07
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC 2021
+
+**明天,也就是 6 月 8 日凌晨 1 点,WWDC 21 正式拉开序幕,周报编辑组也将投入到 WWDC 21 的相关活动中去,所以下周周报将会停更一期,欢迎大家关注我们接下来的一系列 WWDC 专题活动!**
+
+### 🌟 [WWDC 21 内参作者招募 & WWDC 20 内参免费领取](https://mp.weixin.qq.com/s/_VdIsQbnnwb1MQUTpAGOyA)
+
+[@Parsifal](https://github.com/ParsifalC):伴随着 WWDC 即将开幕,由周报牵头举办的一年一度 WWDC 内参活动也开始了筹备工作。今年我们想尝试从广大读者中也邀请一些对 WWDC 内参编写感兴趣的人一起参与内参的编写。另外,我们**所有读者都可以免费领取** WWDC 20 的专栏。不管是想参与 WWDC 21 编辑工作,还是想免费领取 WWDC 20 内参,都可以点这里 - [我是福利](https://mp.weixin.qq.com/s/_VdIsQbnnwb1MQUTpAGOyA)
+
+### 🌟 [WWDC.playground by SwiftGG](https://swift.gg/wwdc/)
+
+[@Parsifal](https://github.com/ParsifalC):WWDC 21 将于 6 月 8 日凌晨 1 点正式在线上举行,今年国内的 iOS 社区组织了多个不同形式的活动,WWDC.playground 就是其中一项。SwiftGG 邀请了来自世界各地的设计师、产品经理以及 Swift 社区活跃开发者,站在他们各自的视角,和大家一起聊聊 WWDC21。帮助大家更好地跟上 WWDC21 的节奏,尽快把新技术集成到自己的产品中。值得一提的是,本次活动被苹果官方列入了 [Beyond WWDC](https://developer.apple.com/wwdc21/beyond-wwdc/) 的专题列表,快来关注吧~
+
+### 🐎 [A Swift developer’s WWDC dreams - 2021 edition](https://www.swiftbysundell.com/articles/a-swift-developers-wwdc-dreams-2021/)
+
+[@四娘](https://kemchenj.github.io/):今年 SwiftBySundell 也在博客里分享了他作为 Swift 开发者的心愿单,包括:
+
+- SwiftUI 提供更多可以自定义的接口
+- 让所有接口都 Async/await 化
+- 可交互的 Widget
+- 更加强大可靠的工具链
+- Xcode on iPad
+- 使用 Swift 全栈开发
+
+期望苹果今年也可以帮助所有开发者喜加一。
+
+### [WWDC NOTES](https://wwdcnotes.com/)
+
+[@老峰](https://github.com/gesantung):WWDC NOTES 是一个持续更新 WWDC Session 的网站,包含历年新功能、新设计、新框架、新开发工具,也可以在这个网站上提交新的笔记,对 WWDC21 感兴趣的同学可以收藏此网站,接下来会同步更新 WWDC21 相关内容。
+
+## 新手推荐
+
+### 🐕 [Dart 里的类型系统](https://mp.weixin.qq.com/s/aBOUm6E1CXGl-GyKP94TeA)
+
+[@邦Ben](https://weibo.com/linwenbang):该文是翻译文,文内主要讲述了 Dart 里面的类型系统,适合新手入门的时候看看。里面也提到一些不常见用法,例如 `names.forEach(print)` 等价于 `names.forEach((name){print(name);});`;以及可调用对象 `Foo()();` 这种比较 trick 的用法,详细可以看下文章。
+
+## 文章
+
+### 🐕 [无埋点核心技术:iOS Hook 在字节的实践经验](https://juejin.cn/post/6968275950786215944?utm_source=gold_browser_extension#heading-0)
+
+[@JonyFang](https://github.com/JonyFang):常见的埋点采集方案是在响应用户行为操作的路径上进行埋点,但由于 App 通常会有比较多界面和操作路径,主动埋点的维护成本会很大。所以行业的做法是无埋点,而无埋点实现需要 AOP 编程。
+
+实现方案的迭代及实践中碰到的坑:
+1. 方案的迭代
+ - Method Swizzle
+ - 代理模式
+2. 方案接入后的踩坑
+ - 野指针引发的问题的分析定位及修复方案
+ - RxCocoa 引发的问题的分析定位及修复方案
+
+Hook 不是很优雅的方式,原因在于随着实际应用场景复杂性的变化,任何 Hook 都有可能存在兼容性的问题。文中最后也给出了相应的建议:
+- 谨慎使用 Hook;
+- Hook 系统接口一定要遵循一定的规范,不能假想只有你在 Hook 这个接口;
+- 不要假想其他人会怎么处理,直接把多种方案集成到一起,构建多种场景,测试兼容性。
+
+### 🐎 [字节小哥带你揭秘 Dart VM 魔术盒](https://juejin.cn/post/6960932663095984136)
+
+[@Damien](https://github.com/ZengyiMa):本篇文章是由字节移动平台团队带来的 Dart VM 文章,本文会详细介绍在 Dart VM 中的 Dart VM Isolate, Run From Source Via JIT 以及 Running from Snapshots 3个核心运行机制,文章内容层层深入带读者逐步理解其原理,对学习 Flutter 以及 Dart 底层感兴趣的同学可以好好研读一番。
+
+### 🐕 [Adding Swift Code as Custom LLDB Command](https://swiftsenpai.com/testing/add-custom-lldb/)
+
+ [@含笑饮砒霜](https://weibo.com/chinafishnews/):多数开发者工作中都会使用到 LLDB 命令,但是很多人却不知道可以使用纯 Swift 代码定义自己的 LLDB 命令。本文介绍了如何添加你的第一个 LLDB 命令、添加带参数的 LLDB 命令以及将复杂的 Swift 代码转换为 LLDB 命令。有些自定义的命令特别有用,会让我们在开发中受益。
+
+### 🐎 [🐞 Insidious Bugs #3: Apple App Site Association File Identifiers](https://lickability.com/blog/insidious-bugs-number-3-apple-app-site-association-file/)
+
+[@Smallfly](https://github.com/iostalks):本文介绍了 Lickability 团队 App 在支持 [Associated Domains](https://developer.apple.com/documentation/xcode/supporting-associated-domains#Overview) 能力时的踩坑经历。根据苹果文档介绍,在创建 `apple-app-site-association` 文件时,其中的 `appIds` 字段值需由 `.` 格式组成,却没有说明 Application Identifier Prefix 前缀是什么。他们经过一系列的尝试之后,在 Team Identifier 和 App Identifier 之间找到了答案。
+
+> 想了解更多关于 universal link 相关的应用,建议阅读周报编辑 [@味精](https://github.com/Awhisper) 的这篇文章 - [Universal Link 前端部署采坑记](https://awhisper.github.io/2017/09/02/universallink/)。
+
+### 🐢 [What's new in Swift 5.5?](https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5)
+
+[@AidenRao](https://weibo.com/AidenRao):Swift 5.5 的第一个测试版本,即将在 WWDC 上放出。它将带来大量改进,async/await, actors, throwing properties 等,本文通过代码示例,逐一介绍每个改动。
+
+- [async/await](https://mp.weixin.qq.com/s/ofYWD4AHm8qR65n0P2mbeA):异步函数,允许将异步代码当作线性同步代码来编写
+- actors:在并发环境中可以安全使用的类,只能由单个线程访问 actor 内的可变状态
+
+### 🐎 听说你想写个 React
+
+* [听说你想写个 React - dom](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485430&idx=1&sn=6c7e1c1f2e54299305a314a4f79e6422&chksm=cf55883ef8220128caf3c4b07ef53d1f40ce742af40c8a2aef1f5ced37b18d1e2df6934eb80b&token=269095387&lang=zh_CN#rd)
+* [听说你想写个 React - jsx](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485430&idx=2&sn=7b738f351870748af72fc7db14877082&chksm=cf55883ef8220128bc4923c1ab1c4d619bc71bcc57750ae9cc71fe56504cd04f4e3d270a8ec6&token=269095387&lang=zh_CN#rd)
+* [听说你想写个 React - virtual dom](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485507&idx=1&sn=43a4f84434da7e654e8f5fccbf4d1bb2&chksm=cf55878bf8220e9db00cd7c2587c47197c3580d25fe73e4d9fcfd6c468bf4ae7ce846b9eba89&token=269095387&lang=zh_CN#rd)
+* [听说你想写个 React - Component](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485599&idx=1&sn=f4665f943af6bc916b0d669e7783d2e5&chksm=cf558757f8220e4143282eb9f608e1727326ddb9b68ea0bff467ac1ed16c9e6803fc21e3d549&token=1155900023&lang=zh_CN#rd)
+
+[@老驴](https://www.weibo.com/6090610445):这是个手把手教你从 0 开始写一个 React 系列文章。目前包含了 4 篇,跟作者一起动手实现 dom,jsx,virtual dom,Component。相信和作者一起写一遍之后,你对 React 的理解能更深入一层。
+
+### 🐢 [论证:iOS 安全性,为什么需要审核?](https://juejin.cn/post/6967199105541996575)
+
+[@anotheren](https://github.com/anotheren): 本文来自 Epic Games 与 Apple 诉讼中,针对 “iOS 安全性” 这个问题进行展开的辩论,即:苹果可以让 iOS 系统,在**应用分发**和**第三方访问**等方面更像 macOS,也*不会在安全性方面受到影响*。辩论中的内容,对于我们近一步了解 iOS/macOS 的安全机制十分有用,推荐阅读。
+
+### 🐢 [揭秘苹果应用审核团队(史上最全版)](https://juejin.cn/post/6970363897668698148/)
+
+[@Parsifal](https://github.com/ParsifalC):苹果的应用审核团队一直都很神秘,这篇文章从网上可查的一些蛛丝马迹,试图揭开审核团队的神秘面纱,读读还是比较有趣的,毕竟我们长期要与审核团队打交道,多了解一些他们的事情,不是坏事儿。
+
+> 本文由 [iHTCboy](https://github.com/iHTCboy) 推荐
+
+### 🐎 [面试过 500+ 位候选人之后,想谈谈面试官视角的一些期待](https://mp.weixin.qq.com/s/XNv3rYRJvv4N7Xaw-c5ZsA)
+
+[@莲叔](http://github.com/aaaron7): 一篇不错的讲通用面试技巧的文章,内容如标题,从一个大厂面试官的角度给出了一些实用中肯的建议。大厂的面试说难也难,说不难也不难。核心原因就是虽然 bar 很高,却有一套通用的方法论。比如不管哪个公司,面试官考察的套路都差不多。这篇文章乍看上去比较虚,但仔细的一条条看下来就是把这个套路很直白的说给你听。有需要的同学可以多多研究。
+
+### 🐢 [手把手教你 Debug — iOS 14 ImageIO Crash 分析](https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247488918&idx=1&sn=9d3f19288191569d4cdf4a6dcef80270&chksm=e9d0de74dea75762b0b77ccd20f0f50d7b42ba9ca847490f5a22decbd950ebe79b48d8e16c8e&scene=0&xtrack=1#rd)
+
+[@水水](https://www.xuyanlan.com):记录了一次 iOS 14 上大量出现的 ImageIO 相关堆栈的 Crash 问题的定位、分析、反汇编、最后修复的过程。读者不仅能够参考修复类似问题,也可以学习和借鉴本文 Crash 解决的思路。
+
+## 摸鱼周报
+
+[@摸鱼周报 #13](https://mp.weixin.qq.com/s/qJG74OQsJ1VV1cB6fDX8TA):本期摸鱼周报讨论了一个 Swift 5 出现的 `module stability` 问题,即使用不同版本 Swift 编译器编译的 binary 如何兼容。
+
+概念篇来到了**程序员必知的硬核知识大全**的最后一节,这节介绍的内容有:BIOS、汇编、虚拟机、外围中断、DMA 等。博客篇收集了一些介绍 watchdog 的文章,这些内容可以帮助你了解什么是 watchdog 以及如何定位这类问题。另外我们还收录了一个非常有意思的软件 [Whatpulse](https://whatpulse.org/),它可以为你统计你的键盘和鼠标使用情况,比如一天中你敲击了多少次按键以及各个按键的使用频率等。
+
+## 工具
+
+### 🐢 [XD to Flutter 2.0 现已发布!](https://mp.weixin.qq.com/s/VWSzeQb_pV9EWXqdWuu51A)
+
+[@极速男孩](https://github.com/ztlyyznf001): Adobe XD由 gskinner 与 Adobe 联合开发, 你可以将你的设计导出成 Flutter 代码,在 Adobe XD 2.0中,加入了 "堆栈" 和 "滚动组"的支持,可以转换成常见的 Flex Widget、Column、Row 以及 SingleChildScrollView 等Flutter Widget。
+
+## 音视频
+
+### [AirTag 有用,但不是完全有用](https://www.xiaoyuzhoufm.com/episode/60b419020013dcfe5cf0d581)
+
+[@没故事的卓同学](https://github.com/lacklock):我最近做了一个播客[卖鱼桥分桥](https://www.xiaoyuzhoufm.com/podcast/607e818b3bfd9e4d8913a87b),里面会有一些内容围绕程序员的生活方式展开,如果有感兴趣的朋友欢迎关注一下。未来也会出几期和 WWDC 有关的内容,也安排一些针对开发者的采访。欢迎大家订阅。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 微医云招聘高级 iOS 开发工程师,详细内容可参考 - [[杭州萧山] 微医 - 微医云 - 高级 iOS/Android 开发工程师](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&tempkey=MTExNl9Ga1hZTnRZL0orT0l3akY5TzhMWHk1MXNCeGQwX3pkRlB2QWFxQW1kTDJlOFRfU05NUWU5VTJ2dG1tcmRVRUUwa1E3RHRxRlNIb0tRamVzUmJ0b3JMc2ZuU1VXNWF5UF9zWGllemhBd1pzZWpFak9VQWU3dDdXMzlCeTVKYnZrb2Y1Z3RTZEcxYVpSSWtKck5ucHRsSFhaUjZTM29BYmN5d3EzWlZRfn4%3D&chksm=6aa2840b5dd50d1d947adf708480766b26d5729c6c39a24cb2cbf463af109980d5c0a37ddde3#rd),有意者简历投至邮箱:zhangmw1@wedoctor.com
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#163-2021.06.21.md b/Reports/2021/#163-2021.06.21.md
new file mode 100644
index 000000000..9a6801d9f
--- /dev/null
+++ b/Reports/2021/#163-2021.06.21.md
@@ -0,0 +1,135 @@
+# 老司机 iOS 周报 #163 | 2021-06-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**周报编辑组又迎来了一位新人 - [@Smallfly](https://github.com/iostalks),他是来自网易云音乐的开发者,对 Native 和跨端技术栈均有涉猎,希望未来能一起给大家持续输出高质量内容~**
+
+## WWDC 21
+
+[@Parisfal](https://github.com/ParsifalC):WWDC 21 圆满结束,但关于 WWDC 21 的学习才真正开始~苹果官方汇总了[新技术和已有框架的重点变化](https://developer.apple.com/documentation/New-Technologies-WWDC-2021),本周我们针对部分内容更新了 6 篇 WWDC 21 Session 的深度解读,每篇文章都是经过不断推敲和审核才完成。
+
+### [【WWDC21 10114】 初见 StoreKit 2](https://xiaozhuanlan.com/topic/6138790425)
+
+[@黄骋志](https://github.com/ChengzhiHuang): 开发过 In-App Purchase 的同学应该都应该体会过被它 生涩难懂的 API、不合理的数据结构、难以处理的掉单 等问题支配过的恐惧。WWDC21 针对 StoreKit 做了一次全新的升级,同时得益于 Swift 的新特性,进一步简化了 API 调用,并带来了诸多新特性,阅读本文后相信你会惊艳于这次的升级。
+
+### [【WWDC21 10101】使用 ReplayKit 记录你的高光时刻](https://xiaozhuanlan.com/topic/1068759324)
+
+[@七夜](https://github.com/qiyer): 主要介绍了 Apple 为 ReplayKit 新增了一个新的特色功能 Clips Recording,用于记录用户应用或游戏内不超过 15 秒长的精彩瞬间。
+
+### [【WWDC21 10158】使用 VideoToolbox 探索低延迟视频编码](https://xiaozhuanlan.com/topic/2530964187)
+
+[@bqlin](https://github.com/bqlin): 讲述通过 VideoToolbox 最新功能实现低延迟 H.264 硬件编码,最大限度地减少端到端的延迟,并提高性能,实现最佳的实时通信和高质量的视频播放。
+
+### [【WWDC21 10019】在 SwiftUI 中遇见并发编程](https://xiaozhuanlan.com/topic/2957164803)
+
+[@Edmond](https://github.com/looseyi): 众所周知,在计算机领域并发是很棘手的一个难题,现在您拥有了管理应用程序中这种复杂性的工具。我们希望您喜欢并了解 Swift 5.5 和 SwiftUI 中出色的新并发工具,我们期待看到您使用它们解决应用程序中棘手问题。
+
+### [【WWDC21 10134】 探索 Swift 结构化并发](https://xiaozhuanlan.com/topic/3625784190)
+
+[@SZ](https://github.com/imagiczhang): Swift 5.5 创新性地引入了结构化并发的概念。同时,也革命性地引入了不同风格的任务、任务树的自动管理机制以及编译时的数据安全检查,极大地降低了并发程序编写难度。尽管最终正式版还是存在更改部分 API 的可能,我们仍然推荐大家先学习并熟悉一下编写 Swift 程序的新方法。
+
+### [【WWDC21 10017】为 Swift 和 SwiftUI 带来 Core Data 并发](https://xiaozhuanlan.com/topic/4625791038)
+
+[@SZ](https://github.com/imagiczhang): 今年 Core Data 上带来了大量的功能增强,其中包括使用了 Swift 并发的新 API。 这些变化改善了使用 Core Data 进行 Swift 和 Swift UI 开发的体验,简化了异步数据操作的程序,因此我们推荐大家学习并逐渐开始使用这些新的 API。
+
+
+## 新闻
+
+### 🌟 WWDC. 技术沙龙 - 北京地区专场圆满结束
+
+[@Parsifal](https://github.com/ParsifalC):由 SwiftGG 和快手联合主办的 WWDC. 技术沙龙 - 北京专场于本周六在快手总部顺利举办,分享活动吸引了近 200 开发者朋友一起前来学习。本次分享的后续总结工作正在紧锣密鼓地进行中,同时由我们周报主办的杭州场和上海场技术沙龙也将陆续开放报名,欢迎各位同行好友来聚聚。本次活动我们不收取任何费用,除了嘉宾带来的主题分享外,现场更有主办方为每一位到场朋友悉心准备的伴手礼和茶歇,同时周报也将在现场免费赠送 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21) 哦。
+
+## 文章
+
+### 🌟 🐕 [Concurrency in Swift 5 and 6](https://forums.swift.org/t/concurrency-in-swift-5-and-6/49337)
+
+[@anotheren](https://github.com/anotheren):来 Swift 官方社区的帖子,介绍了 Swift 并发控制在 Swift 5 和 6 中的展望。Apple 需要考虑将 Swift 生态系统迁移到 Swift 6 会是什么样子,并预计这个过程需要数年时间。在此过程中,Apple 需要确保:
+
+- Swift 5.x 和 Swift 6 代码可以在并发模型的演进中,良好地相互操作
+- 逐步采用并发模型可以使代码更好维护,也更安全
+- 每个模块、包和程序都可以以自己的速度采用并发控制,而不会不必要地破坏原来的代码
+
+总的来说,Swift 5 中会更加宽松,以能够使并发控制逐步推广开,完成平稳过渡。而 Swift 6 会在需要的情况下要求异步执行的闭包满足 @Sendable (详见 [SE-0302 Sendable and @Sendable closures](https://github.com/apple/swift-evolution/blob/main/proposals/0302-concurrent-value-and-concurrent-closures.md))。
+
+### 🌟 🐕 [Xcode 工程文件解析](https://mp.weixin.qq.com/s/s5BQznKjSCt84ZLUlco7Vg)
+
+[@老峰](https://github.com/gesantung):从我们接触 iOS 开发就与 Xcode 工程配置文件 xcodeproj 打交道,本文作者详细介绍了 xcodeproj 文件结构,以及如何 xcodeproj 开源库 解析并修改 xcodeproj 文件,文章主要包含一下内容:
+
+- Xcode 工程文件组成:xcworkspace、xcodeproj
+- Project 解析、Object Module、Object Attributes、Xcode Object等
+- 通过代码编辑 Xcode 工程
+
+### 🐕 [iOS 14.5 如何用 PAC 保护 Objective-C 对象](https://mp.weixin.qq.com/s/VsqnWo6HGQT5LXdulpcaGg)
+
+[@AidenRao](https://weibo.com/AidenRao):一篇非常硬核的文章,本文介绍了 iOS 14.5 针对 Objective-C 运行时进一步加强 PAC 保护的两处改动。这些保护仅针对系统自带应用和服务启用,目的是防止跨进程和远程代码执行的漏洞利用。
+
+### 🐕 [Flutter IM 跨端架构设计和实现](https://mp.weixin.qq.com/s/ftZdQ-0GeMgr6kL9bZLA8w)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):一个非常好的跨端 IM 设计方案,从痛点分析到实施方案,到 DB 同步设计,以及状态管理,应有尽有。有相关业务小伙伴值得仔细阅读,文中很多解决方案可以带来不少参考.
+
+### 🐕 [从探索到实践,iOS 动态库懒加载实录](https://mp.weixin.qq.com/s/g5FKnOcW6KonqBSW8XO9Jw)
+
+[@红纸](https://github.com/nianran):本文是 58 同城对于 APP 模块动态化的实践总结,对方案定制、实现流程、方案结果对比、量化收益等多个方向进行描述。由于动态库的吸附性,团队整理完依赖树,选用自下而上的方式,将模块逐一动态库。并使用懒加载的形式加载动态库,而非启动加载,降低了启动耗时。
+
+### 🐕 [WWDC21 Ultimate application performance survival guide](https://gcsnnb.github.io/2021/06/09/APP%E6%80%A7%E8%83%BD%E7%BB%88%E6%9E%81%E7%94%9F%E5%AD%98%E6%8C%87%E5%8D%97/)
+
+[@Leo](https://github.com/leomobiledeveloper):性能是客户端永远绕不开的话题, 所以 WWDC 每年都会有很多 session 是关于性能的。这个 session 更像是一篇概述,讲解了苹果提供的性能相关监控、工具和诊断,推荐对性能感兴趣的同学阅读。
+
+* 推荐人:[GCSNNB](https://github.com/GCSNNB)
+
+### 🐕 [Code Signing - iOS 代码段的校验机制分析](https://mp.weixin.qq.com/s/msUwo3YUcfHXkuAp5wRfyQ)
+
+[@Smallfly](https://github.com/iostalks):从 iOS JIT 遇到 Crash 的神仙打架,到 iOS 代码段的校验机制。本文作者高级页面仔,从内核源码着手,详细地分析了 iOS 代码段合法性校验的时机和过程。最终给出了 Crash 的原因,并介绍了连接调试器和越狱环境下 JIT 不会 Crash 的实现原理。
+
+### 🐕 [听说你想写个 Lisp 解释器](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485878&idx=1&sn=3f1b37ad693bfd2f0da24aab2616aafe&chksm=cf55867ef8220f68719be7f9666675eff677b7922d27155a079f6b15181cfa65c699cfd7e7a8&token=273579944&lang=zh_CN#rd)
+
+[@折腾范儿_唯敬](https://weibo.com/agvicking):我们使用的编程语言,我们写下的代码,本质上就是一行又一行的字符串,而这些字符串到底是如何工作的,这本是属于编译原理范畴。很多书或者有些文章也会介绍到“词法分析/AST/解释执行”之类的高大上的概念,稍微有些抽象也有些晦涩。但是本文作者 [silan-liu](https://github.com/silan-liu) 从一个最基础最简单的 Lisp 语言入手,从 0 开始用 swift 写了一个解释器,在这个过程中你可以看到从分词到解析,再到生成 AST 的全部代码过程,亲自感受一遍代码被理解被执行的过程,相信会比书本上抽象的概念更容易吸收和理解。注:本文是该文章的第一篇,写到了生成抽象语法树 AST,而 AST 的执行运算出最终的结果,还请继续期待作者的下一篇文章。
+
+## 摸鱼周报
+
+[@摸鱼周报 #14](https://mp.weixin.qq.com/s/br4DUrrtj9-VF-VXnTIcZw):本期我们整理了一些包体优化的方案,从资源到代码层面,涉及的 Tips 很多,为了便于观看和记忆,我们将其制作成一张思维导图。开发者账号的续费问题最近有好几个小伙伴都有遇到,我们将其中的注意事项做了一个整理。
+
+概念篇开始整理一些 Web 前端知识,介绍了 React、Vue、React Native 这几个概念,还附带了一些代码片段,实际学习之前可以给大家带来一个初体验。
+
+资料内容收录了一个 Github 仓库 [Newbie Security List](https://github.com/findneo/Newbie-Security-List),其中整理了网络安全相关的博客、工具、电子书籍资料、在线知识库、在线漏洞库等内容。
+
+[@摸鱼周报 #15](https://mp.weixin.qq.com/s/6thW_YKforUy_EMkX0OVxA):本期介绍了几个去掉导航栏返回按钮文案的实现方案;还有个系统自带的命令行工具 `plutil`,通常我们将其用于打包脚本设置版本号,但它还可以用来检查多语言文件的格式问题。处理繁杂且巨大的多语言文件,自动化工具永远是最佳助手。
+
+概念篇 Web 前端知识第二弹:BootStrap、Webpack、Flutter。
+
+博客篇整理了一些逆向和签名相关文章,虽然不是新文章,但篇篇都是精品,值得反复阅读。
+
+资料内容收录了一个国外的网站:[SwiftLee](https://www.avanderlee.com/),一个分享关于 Swift、iOS 和 Xcode 技巧和窍门的周更博客,博客的文章写得清晰易懂,排版、配图和动画质量也很高。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#164-2021.06.28.md b/Reports/2021/#164-2021.06.28.md
new file mode 100644
index 000000000..4fd8e573e
--- /dev/null
+++ b/Reports/2021/#164-2021.06.28.md
@@ -0,0 +1,110 @@
+# 老司机 iOS 周报 #164 | 2021-06-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC 21
+
+[@Parisfal](https://github.com/ParsifalC):WWDC 21 圆满结束,但关于 WWDC 21 的学习才真正开始~苹果官方汇总了[新技术和已有框架的重点变化](https://developer.apple.com/documentation/New-Technologies-WWDC-2021),本周我们针对部分内容更新了 2 篇 WWDC 21 Session 的深度解读,每篇文章都是经过不断推敲和审核才完成。
+
+### [【WWDC21 10022】SwiftUI 技术内幕](https://xiaozhuanlan.com/topic/0619782354)
+
+[@MetaSky](https://github.com/CreatorMetaSky):通过阅读本文,带你一起深入解读 SwiftUI,提高应用程序的性能。
+
+### [【WWDC21 10267/10268/10269】窥探 Xcode Cloud](https://xiaozhuanlan.com/topic/7496513820)
+
+[@林永坚](https://github.com/JakeLin):CI 已经成为项目开发中必不可少的一个工程环节,同时也是推动团队工程师文化的重要手段。在 WWDC 21, 苹果公司发布了官方的 CI - Xcode Cloud。通过这篇文章,我们一起窥探一下 Xcode Cloud 到底能做什么,以及我们该如何使用它?
+
+## 新闻
+
+### [苹果 Apple Watch 国行获国家药品监督管理局医疗器械审批!ECG 移动心电图房颤提示软件过审](https://mp.weixin.qq.com/s/NNHRz-43YCZGo4M54uA6-g)
+
+[@Parisfal](https://github.com/ParsifalC):终于!大陆也将支持 ECG 功能了!喜大普奔!政策上已经支持,现在就看苹果什么时候开放了。
+
+## 文章
+
+### 🌟 🐕 [美团民宿跨端复用框架设计与实践](https://mp.weixin.qq.com/s/902BiSBx88rUSWBX64HZqA)
+
+[@JonyFang](https://github.com/JonyFang):从业务角度出发,跨端技术演进更多是在不同阶段、不同时间段内业务效率上的选择,美团民宿业务在大前端融合的浪潮中也在不断探索和迭代抉择,为解决业务痛点而产出跨端框架技术。本文主要分享美团民宿在跨端复用技术探索层面以及业务实践过程中积累的经验。文章目录如下:
+1. 背景
+ - 美团民宿业务介绍
+ - 美团民宿移动端现状
+2. 美团民宿跨端复用框架设计
+ - 行业现状
+ - 整体方案设计
+3. 美团民宿跨端复用实践
+ - 跨端复用场景下的问题
+ - 跨端复用应用架构
+ - 跨端复用方式设计
+ - 跨端复用流程规范
+ - 跨端复用质量保障
+ - 成果
+
+### 🌟 🐢 [Swift 编译器 Crash—Segmentation fault 解决方案](https://mp.weixin.qq.com/s/FSlJKnC0y51nsLDp1B3tXg)
+
+[@zvving](https://github.com/zvving):Swift 在国内普及缓慢,自身工具链不完善是重要制约因素之一:比如不少混编项目都碰到过偶现的 `Segmentation fault: 11` 和 `Illegal instruction: 4` 编译错误,开发者对这类编译器错误大多束手无策,只能寄望于『重试一下』以及 Xcode 后续更新解决。
+
+抖音基础技术团队深入编译链路定位问题:从编译基础概念,到提取编译参数、调试 SIL 异常定位问题,进而引入静态检查规避。内容表达上层层递进,对编译器产生的 Crash 如何调试解决提供了思路,为『面向编译器编程』提供难得一见的参考!
+
+### 🌟 🐢 [抖音研发效能建设 - CocoaPods 优化实践](https://mp.weixin.qq.com/s/Pt6pcxKCHhdnnWPYrToNvA)
+
+[@红纸](https://github.com/nianran):Cocoapods 是 iOS 常用的包管理工具之一,当我们工程日渐庞大,在成百上千个组件之后,pod install 的执行效率有明显的降低。本文是抖音在实践中对于 Cocoapods 的原理分析和数点优化总结。
+
+这边不占用篇幅,简单描述其中几点优化,详细优化方案可以查看原文进行阅读:
+1. 性能评估:利用 Ruby-perf 方法级别统计系统耗时,为量化数据指标奠定基础
+2. Source 源按需更新:解决研发同学忘记更新 source 源的烦恼
+3. 简化决议:研发流程直接使用 Podfile.lock 进行线性决议,Molinillo 的图决议占少数比例
+4. 并发下载:并发下载依赖,使用 HTTP 代替 Git 访问
+5. 沙盒软连接:使用软链接代替拷贝,减少磁盘消耗
+
+### 🐕 [Tagged Pointer对象安全气垫为何会失效](https://juejin.cn/post/6975765788355461133#heading-9)
+[@Smallfly](https://github.com/iostalks):Objective-C 作为一门动态语言,在运行时做安全防护非常有必要。本文记录了作者加了安全防护后,依然发生了 `Unrecognized Selector` 类型崩溃的定位过程。为什么 Tagged Pointer 类型的对象,安全防护失效了?作者从原理出发,通过分析 Tagged Pointer 在不同系统的内存结构,最终修复了这个问题。推荐对 Tagged Pointer 实现原理感兴趣的同学阅读。
+
+### 🐕 [Swift Hook新思路--虚函数表](https://mp.weixin.qq.com/s/mjwOVdPZUlEMgLUNdT6o9g)
+
+[@四娘](https://kemchenj.github.io):这是由 58 团队带来的文章,深入分析 Swift 的类结构以及基于 vtable 的函数调用过程,并且提出了通过修改 vtable 实现 method swizzle 的方法。
+
+### 🐎 [SSWG Annual Update 2020](https://forums.swift.org/t/sswg-annual-update-2020/49223)
+
+[@xiaofei86](https://github.com/xiaofei86):自从上次 Swift 服务端工作组(SSWG: Swift server work group)进行重大更新以来,发生了很多事情。本文对 SSWG 过去一年的工作成果进行回顾,包括 gRPC、MongoDB、AWS Lambda 的引入;对明年的目标进行展望,包括 Concurrency 的接入、文档和工具的改进,以便对非苹果平台的开发提供更好的支持。感兴趣的同学可以持续关注。
+
+## 代码
+
+### [Surge](https://github.com/Jounce/Surge)
+
+[@老峰](https://github.com/gesantung):[Accelerate](https://developer.apple.com/documentation/accelerate) 框架为 iOS 提供了大规模的数学和图像高性能计算能力, 但其 API 却不易使用, Surge 正是这样一个 Swift 库,它使用 Accelerate 框架为矩阵数学、数字信号处理和图像处理提供简单易用的高性能 API,如常用的 + ,- , * ,/ ,有需求的同学可以了解一下。
+
+## 音视频
+
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#165-2021.07.05.md b/Reports/2021/#165-2021.07.05.md
new file mode 100644
index 000000000..4fb1bb3cb
--- /dev/null
+++ b/Reports/2021/#165-2021.07.05.md
@@ -0,0 +1,146 @@
+# 老司机 iOS 周报 #165 | 2021-07-05
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC 21
+
+### 🌟 线下沙龙:杭州场圆满结束!上海场迎来第二波免费门票开放~
+
+[@Parisfal](https://github.com/ParsifalC):WWDC 系列活动 - 淘系技术.T 沙龙杭州专场在上周六下午已经圆满结束了!杭州专场同样邀请到了 4 位国内讲师以及 2 位特邀国外讲师。他们分别是来自手淘终端平台技术的无线开发专家**倾寒**、来自有赞的移动技术负责人 **Jackie**、来自抖音创作工具基础架构团队的移动端架构师 **Crespo** 以及来自西瓜视频的移动端工程师**黄骋志**,国外的特邀嘉宾还是我们熟悉的 Hacking With Swift 系列书籍作者 **Paul Hudson** 和 objc 联合创始人 **Chris Eidhof**。沙龙现场近 160 位开发者朋友相聚一堂,技术探讨氛围十分浓烈。
+
+错过杭州场的朋友不用着急,**上海场我们也将在这周六正式举办**!上海场之前在我们 **WWDC.playground by SwiftGG** 直播活动中开放了第一批超过 100 张门票,很快就售罄了,现在**第二波门票也正式开放**,数量有限,想来现场的朋友抓紧扫码报名~
+
+### 🌟 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21)
+
+[@Parisfal](https://github.com/ParsifalC):除了线下沙龙在火热进行,我们内参的更新也如火如荼。已经订阅的读者有福啦,本周我们一次性更新了 29 篇 session 的解读,每篇文章都是经过不断推敲和审核才完成。感谢所有作者和审核人员。
+
+- @Style月月:【WWDC21 10032】探索 WKWebView 新增功能
+- @琦乐无穷的小蘑菇:【WWDC21 10089】探索电子病历在 HealthKit 中的使用
+- @Leppard:【WWDC21 10145】Advanced Video Quality Tool 使用指北
+- @Rec:【WWDC21 10256】初探 Swift 算法和集合 & 【WWDC 10168】开发 Mail App 扩展
+- @Watermelon:【WWDC21 10268/10269】探索 Xcode Cloud Workflows
+- @Ronbin:【WWDC21 10298】在 HomeKit 中添加对 Matter 协议的支持
+- @阿尘:【WWDC21 10039】Create ML 新妙用:手势分类和手部动作分类 &【WWDC21 10040】使用 Vision 框架来检测人物、人脸和姿势
+- @atuo:【WWDC21 10057】让你的 iPad 应用更进一步
+- @ljcoder:【WWDC21 10118】CloudKit 自动化开发
+- @Ckitakishi:【WWDC21 10121】为内容丰富的应用量身打造高效 VoiceOver 体验
+- @Frank:【WWDC21 10212】强大的 Network Instruments,诊断你的 APP 网络请求及流量控管
+- @希徳:【WWDC21 10264】让你的 App 支持快速备忘录
+- @Damien:【WWDC21 10061】Meet TextKit 2
+- @Tamarous:【WWDC21 10063】更好用的 Sheet
+- @鸭嘴兽:【WWDC21 10085】聚焦苹果隐私原则
+- @刘杰:【WWDC 2021 10096】 苹果为了你的隐私又做了什么
+- @happts:【WWDC21 10098】在 Spotlight 中呈现 App 的数据
+- @志远:【WWDC21 10115】依托更完善的 App 分析指标,优化 App 展示页面的新方案
+- @DengXiaoBai:【WWDC21 10158】使用 VideoToolbox 探索低延时视频编码
+- @旷明:【WWDC21 10166/10167/10235/10236】DocC: 未曾设想的苹果文档
+- @张凡:【WWDC21 10203】Xcode Organizer 功能升级
+- @Semyon:【WWDC21 10204/10261/10170】云签与 Mac App 分发流程简化探索
+- @PerTerbin:【WWDC21 10209】通过断点技巧让调试更高效
+- @jojotov:【WWDC21 10254】Swift 并发编程:原理探究
+- @小铁匠Linus:【WWDC21 10259】键盘布局指南
+- @Uyloal:【WWDC21 10023/10260】构建使用键盘导航的应用程序
+- @瓮杰:【WWDC21 10265】将你的应用沉浸在空间音频中
+
+## 文章
+
+### 🌟 🐕 [在 iOS 客户端上通过 bitcode 为第三方库修复 bug](https://mp.weixin.qq.com/s/BuDnfl1ZbUtiZBhy8_Z7wA)
+
+[@JonyFang](https://github.com/JonyFang):本文主要记录了便利蜂技术团队 iOS 移动端遇到的一个疑难 bug 的排查过程,介绍了他们是如何通过修改 bitcode,成功在没有源码的情况下为有问题的三方库修复 bug 的。
+
+文中用到的知识点总结如下:
+1. 崩溃现场中,在主线程发现 `exit`,多半是由于 C++ 全局变量析构 + 多线程导致的;
+2. 在有源码的情况下,可以通过调整编译参数消除全局变量析构;
+3. 使用 7-zip 可以无损解包静态库文件;
+4. 使用 otool 可以看到目标文件是否嵌入了 bitcode;
+5. 使用 llvm 提供的工具,可以对 bitcode 进行修改、重新生成机器码;
+6. 通过私有 API 可以模拟出应用退出,制造复现场景。
+
+### 🌟 🐕 [iOS Pod 构建缓存方案](https://mp.weixin.qq.com/s/zWhgpuhq3r799ZYQPMsdFw)
+
+[@红纸](https://github.com/nianran):编译加速通常有两种方案二进制化和源码编译缓存,相较于二进制化,源码编译能解决二进制化带来的问题:编译宏问题、函数不存在等一系列问题。文中,作者使用基于 MD5 和 Xcode Cache 来做缓存机制,使得每次编译都是增量编译而不是全量编译。感兴趣的同学可以看下作者的方案描述。
+
+此外本文是基于 Xcode Cache 实现的编译缓存机制,在即将到来的《老司机技术沙龙-上海场》中,第二场来自 Bilibili 的同学会介绍基于 Bazel 的远端编译缓存技术实践,也欢迎大家来现场聆听~
+
+> 自荐: [WeijunDeng](https://github.com/WeijunDeng)
+
+### 🐢 [深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析](https://mp.weixin.qq.com/s/VdkVBIQwj7WkAk8-5wppmQ)
+
+[@享耳先森](https://github.com/iblacksun):移动互联网时代,网页依旧是内容展示的重要媒介,开发者经常需要与 `WKWebView` 打交道,但当遇到疑难问题时官方文档不足以解惑。本系列文章介绍了如果从 WebKit 源码入手,建立可调试工程,基于此深入理解 WebKit 核心内容。
+
+### 🐢 [Swift 并发初步](https://onevcat.com/2021/07/swift-concurrency/)
+
+[@zvving](https://github.com/zvving):今年 Swift 的最大更新无疑是对 `async/await` 的支持,作为新手的你很可能已经跃跃欲试。但并发编程向来以错综复杂著称,光是并发/并行、同步/异步、串行/并行就已经让人傻傻分不清,更不必提 `Actor`、`Structured Concurrency`、`Async Sequence` 这些翻译起来都困难的概念。如果你也有以上这些疑惑,或许可以从本文中找到答案。这篇图文并茂的博客同时也是喵神新书[《Swift 异步和并发》](https://objccn.io/products/async-swift)的开篇之作。
+
+> 本文推荐语来自 [弥明-KeithBird](https://github.com/KeithBird)
+
+### 🐎 [How Swift runs an async executable](https://oleb.net/2021/async-program-launch-sequence/)
+
+[@kemchenj](https://kemchenj.github.io):Swift 5.5 最大的更新就是加入了 Concurrency,@main 也添加了对应的支持,让我们可以将 main 函数标记为 async,由编译器负责生成代码,提供一个 async context 让 async main 函数执行,这篇文章就深入了 Swift 源码来探究其中的奥秘。
+
+## 摸鱼周报
+
+[@摸鱼周报 #16](https://mp.weixin.qq.com/s/nuij8iKsARAF2rLwkVtA8w):iOS 摸鱼周报不知不觉已经发布到第 16 期了,为了了解大家对周报的想法和建议,前段时间我们做了一次问卷调查。根据问卷反馈,我们停更一期进行了格式上的调整:去掉了`那些 Bug`、`编程概念`模块,增加了`本期话题`和`面试解析`。
+
+改版之后内容更讲究实用性,特别是呼声很高的`面试解析`模块,我们对众多面试题目进行筛选,选出一些高频且实用的内容,然后用更通俗易懂的话讲明白其中的知识点,首期`面试解析`带来的是网络相关的一些题目。
+
+其他更多内容欢迎阅读本期[完整版](https://mp.weixin.qq.com/s/nuij8iKsARAF2rLwkVtA8w)进行探索,如果有其他建议也欢迎后台留言告诉我们。
+
+## 代码
+
+### [世界上第一个浏览器源码](https://github.com/cynthia/WorldWideWeb)
+
+[@折腾范儿_唯敬](https://www.weibo.com/agvicking/home?wvr=5):这个 repo 其实算得上是一个考古 repo 。维基百科上记载,世界上第一个浏览器是在 NextStep 的电脑上(repo 的 readme 上有索引),用 C 和 Objective-C 语言完成的,被 repo 作者从原始 WorldWideWeb 的仓库中剥离,保存于此。虽然这个项目中的代码过于老旧,已经无法编译,但有兴趣的人还是可以前往一探究竟,看看上古时代的浏览器代码大概是什么样子。
+
+### [VideoLab - 高性能且灵活的 iOS 视频剪辑与特效框架](https://mp.weixin.qq.com/s/duLk1mNLdcqRlfzpnh2LEA)
+
+[@anotheren](https://github.com/anotheren):这是一个为视频剪辑编辑处理的框架,使用了 AVFoundation 和 Metal 作为其处理核心,目前已有以下特性:
+* 高性能实时剪辑与导出
+* 高自由度组合视频,图片,音频
+* 支持音频音高设置,音量调节
+* 支持 CALayer 矢量动画,可以支持复杂的文字动画
+* 支持关键帧动画
+* 支持类似于 AE 的预合成
+* 支持转场
+* 支持自定义各类特效,如 LUT 滤镜,Zoom Blur 等等(MSL 编写脚本)
+
+如果你也有视频处理的相关需求,不妨看看能否满足项目需要。
+
+## 音视频
+
+### 🐢 [“Structured concurrency” with special guest Doug Gregor](https://www.swiftbysundell.com/podcast/99/)
+
+[@老驴](https://www.weibo.com/6090610445):这期 Swift By Sundell 节目请到了 Swift 开发组的成员之一 Doug Gregor 来聊聊 Swift Concurrency 和背后的故事。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#166-2021.07.12.md b/Reports/2021/#166-2021.07.12.md
new file mode 100644
index 000000000..bef732ddc
--- /dev/null
+++ b/Reports/2021/#166-2021.07.12.md
@@ -0,0 +1,181 @@
+# 老司机 iOS 周报 #166 | 2021-07-12
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**周报编辑阵容继续升级,本周我们迎来了 [@Barney](https://github.com/BarnyZhao) 加入团队,Barney 目前就职于 Bilibili,熟悉移动架构治理,启动优化,复杂列表流畅度优化,稳定性等方向。**
+
+## WWDC 21
+
+### 🌟 线下沙龙:上海场和深圳场也成功举办~
+
+[@Parisfal](https://github.com/ParsifalC):WWDC 系列活动 - WWDC.T 沙龙上海场和深圳场已经在这个周末圆满结束了,感谢上海场的联合主办方字节音乐以及深圳场的联合主办货拉拉技术团队!至此,今年我们与 SwiftGG 一起举办的四场沙龙活动均已拉上帷幕,每场活动都有 4 个不同的讲师分享自己对于移动技术开发的干货见解,在社区内外都引发了很大的反响。针对大家比较关注的几个问题,我们这边做下统一回复:
+
+> 活动的录像和 PPT 等内容是否会放出?
+
+活动刚结束,我们所有的收尾工作都在有序进行中,计划在本月下旬会陆续将沙龙的相关资料在**老司机技术周报**公众号上发布,大家敬请期待~
+
+> 以后还会不会有类似的活动?
+
+线下沙龙是今年尝试的一种方式,目前得到很多正反馈,我们也从几个城市的举办中汲取了很多经验,未来如果可行的话我们还是会继续尝试的。这次得到 SwiftGG、快手、淘系技术、字节音乐和货拉拉技术等团队的支持,我们也为到场的每一位朋友都准备了精美的礼品和茶歇,同时每个讲师嘉宾的无偿倾力相助也让我们非常感激。但毕竟我们是纯公益的活动,每场沙龙都是免费门票,沙龙投入的人力物力仍然是比较大的。短期内暂时没有在计划中的沙龙活动了,我们需要好好总结,也需要休息一下。当然,一旦有了新的计划,我们也会第一时间告诉大家,感谢大家一直以来的支持。
+
+> 我所在的技术团队也想合作举办一场这样的沙龙活动?
+
+首先感谢你的关注与认可,不过正如上个问题所述的那样,我们短期是没有计划了。如果你确实感兴趣的话,可以添加我们的周报微信 **iTDriverr** 做个简单沟通,后续我们有计划了可以再详谈。
+
+### 🌟 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21)
+
+[@Parisfal](https://github.com/ParsifalC):线下活动圆满结束,我们内参的更新也已经进入高潮。已经订阅的读者有福啦,本周我们一次性更新了 32 篇 session 的解读,总的更新文章数已达 69 篇!每篇文章都是经过不断推敲和审核才完成。感谢所有作者和审核人员。如果你喜欢的话,记得给作者点个赞~
+
+- [【WWDC21 10183/10184】初探 Group Activities ](https://xiaozhuanlan.com/topic/0593748621)
+- [【WWDC21 10225】使用 Group Activity 共享媒体](https://xiaozhuanlan.com/topic/2560189374)
+- [【WWDC21 10187】使用 Group Activity 共享定制化内容](https://xiaozhuanlan.com/topic/6205739184)
+- [【WWDC21 10189】使用 Group Activity 在 Safari 中共享媒体](https://xiaozhuanlan.com/topic/7165042893)
+
+@Darwin-lv & @刘思源:刚刚结束的 WWDC 2021,苹果给 Facetime 带来了新功能 SharePlay。使用苹果设备的用户,无论是 iOS、iPadOS 还是 MacOS,都可以通过 FaceTime 开启 SharePlay,和其他苹果用户,无论他使用什么类型的苹果设备,都可以实时的共享内容。
+
+- [【WWDC21 10132/10133/10134】认识 Swift 中的异步与并发](https://xiaozhuanlan.com/topic/8627905413)
+
+@nuomi1:Swift 5.5 带来了万众期待的异步与并发的原生语言级支持,async/await 简化了异步编程,结构化并发为异步任务提供并发性,而 actor 则解决了共享可变状态带来的数据一致性问题。
+
+- [【WWDC21 10258】理解和消除 App 中的卡死](https://xiaozhuanlan.com/topic/9027453618)
+- [【WWDC21 10211】iOS 符号化:基础与进阶](https://xiaozhuanlan.com/topic/8652104379)
+- [【WWC21 10216】Swift 中的 ARC 机制: 从基础到进阶](https://xiaozhuanlan.com/topic/1569740283)
+- [【WWDC21 10180】检测和诊断 App 内存问题](https://xiaozhuanlan.com/topic/2079653148)
+
+@Rickey 王小吉 & @米广 & @刘夏 & @薛云强:WWDC 2021 继续在 App 性能上带来了很多 session,这几篇文章能够帮你深度理解性能问题的源头。
+
+受限于周报篇幅,其他文章也同样精彩,但不便详述,欢迎大家自行订阅阅读~
+
+- @saitjr:【WWDC21 10232/10283】Shortcuts 的新功能
+- @lmh:【WWDC21 10239】为你的 App 减少网络延迟
+- @牟爽:【WWDC21 10146】AVFoundation 的新变化 & 【WWDC21 10290】AVKit 的新变化
+- @展菲:【WWDC21 10092】了解并使用 Wallet 和 Apple Pay
+- @师大小海腾:【WWDC21 10052】Mac Catalyst 的新功能
+- @Jimbaby:【WWDC21 10079】使用 PHASE 探索几何感知的音频
+- @大灰灰:【WWDC21 10048】构建优雅小组件的准则
+- @Kam:【WWDC21 10252】打造拥有流畅体验的列表和集合视图
+- @DylanYang:【WWDC21 10291/10294/10295】MusicKit 概述
+- @Hummer:【WWDC21 10033】基于隐私保护的广告归因
+- @East:【WWDC21 10041】使用 Vision 提取文档里的数据
+- @郑一一:【WWDC21 10102】遇见 Location Button
+- @刘杰:【WWDC21 10123】初见 Screen Time API
+- @kukushi:【WWDC21 10045】用 ShazamKit 创造自定义音频体验
+- @Chars:【WWDC21 10003】再谈 Apple Watch 的数据传输
+- @素燕(Lefex):【WWDC21 10104】在 iOS 中给 Safari 开发插件
+- @Chafferer:【WWDC21 10205】在 Xcode 中 Review Code 以及多人合作
+- @夏天:【WWDC21 10068/10069/10282】从 0 开始构建用户健康的研究和护理 APP
+- @Nemo:【WWDC21 10160】ProRAW 的拍摄与处理
+- @wiilen:【WWDC21 10181】APP 性能优化终极求生指南
+- @SeaHub:【WWDC21 10175】IAP 用户退款与客诉处理优化 & 【WWDC21 10174】 IAP 后台通信优化与实践
+
+## 文章
+
+### 🌟 🐕 [Klee:用 C++ 实现数据驱动开发](https://mp.weixin.qq.com/s/y2700SOPIvETJ-x2BC5q5w)
+
+[@Barney](https://github.com/BarnyZhao):本文主要介绍了企业微信客户端团队对 C++ 实现数据驱动开发的探索,为读者介绍了暂时内部开源的 Klee 框架,,通过几个简单易懂的小例子,一步步讲述了 Klee 的强大特性, 并且未来有开源的打算,十分令人期待。
+
+文中的关键点总结如下:
+1. 数据驱动的核心思想,程序的状态由数据确定,通过接口操作数据来控制程序逻辑。
+2. 通过企业微信消息泡的例子,表达了 响应式数据的优雅。
+3. `Klee` 的声明式开发能力,组件化开发,混合开发。
+4. `Klee` 三大组件生态, 布局组件、视图组件、逻辑组件,并且可组合嵌套为复合组件。
+5. `Klee` 与 `RxSwift` 的对比,从数据源、流程可控性、多输入源、生命周期管理四个维度阐述了 Klee 的优势。
+6. 对未来的展望,代码开源、跨平台能力、可视化界面搭建。
+
+### 🐕 [听说你想写个 Lisp 解释器(下篇)](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486230&idx=1&sn=b11b86685064968edd023851c47a981a&chksm=cf5584def8220dc83ff16b3c2216f555d481735b51c2687c433243953b1515b4cf1a7ab1c806&token=232571047&lang=zh_CN#rd)
+
+[@折腾范儿_唯敬](https://weibo.com/agvicking):在之前的周报中,我们介绍了“听说你想写个 Lisp 解释器(上篇)”,作者[silan-liu](https://github.com/silan-liu) 带着我们从0深入到了一个语言编译解析的过程,学习了从分词到解析,再到生成 AST 的过程。这次给大家带来了下篇,本文作者继续从 AST 入手,分析运算符,分析表达式,分析方法调用,最终给我们讲解了一个语法树最终执行出结果的全部过程。自此一个语言的完整编译过程,简单明了的呈现在了读者面前。
+
+### 🐎 [淘系工程师亲述经历:如何避免成为“技术工具人”?](https://mp.weixin.qq.com/s/qBgEjtcTTVuZsAK6j0SEMw)
+
+[@Smallfly](https://github.com/iostalks):本文从不同角度讲述了作者加入阿里一年收获的成长。
+
+- **关于思考:** 按照主管分配机制做事,只会让自己成为工具人,要思考如何「让事情因为自己而与众不同」。
+- **技术与业务两条腿走路:** 身为技术同学,很容易陷入技术自嗨,却没有多大贡献。建议用技术去赋能业务,让技术和业务相互成就彼此,共同成长。
+- **稳定发挥:** 稳定发挥、线性成长的选手比波峰波谷选手更受青睐。
+- **求同尊异:** 在团队引入一种新的机制,不被认可,应该如何思考与推进。
+- **身为 PM 如何做事:** 项目安全永远是第一位,有风险要及时同步;遇到线上问题立即向上反馈,并注意反馈的方式;让合适的人做合适的事情;如果不确定一件事情能否按时完成,就给悲观的答复;技术判断是核心竞争力。
+
+### 🐎 [Swift5.5、DocC、Notifications,苹果 WWDC21 带来的最大技术变化](https://mp.weixin.qq.com/s/jw0R-83z9oCnVoffwy-ykg)
+
+[@Damien](https://github.com/ZengyiMa):苹果在 WWDC21 中给我们带来了许多的新的技术和解决方案,让我们来看看今年 Swift 的 async/await 特性、DocC(文档编译器)、以及系统中的 Notifications 通知中的的一些详细变化的内容吧。
+
+### 🐕 [How iOS 15 makes your app launch faster](https://medium.com/geekculture/how-ios-15-makes-your-app-launch-faster-51cf0aa6c520)
+
+[@Leo](https://github.com/leomobiledeveloper):对于 deployment target 是 iOS 15 或者 macOS 12 的应用来说,苹果采用了一种新的格式来存储启动时候需要 fixup 的信息。目前像 bind/rebase 这种 fixup 信息是存储在二进制不同的表中的,修改后使用 chained fixups 格式,这种格式能带来包体积和启动时间的提升。
+
+### 🐢 [深入理解 WKWebView(基础篇)—— WKWebView 加载生命周期与代理方法剖析](https://mp.weixin.qq.com/s/ZFui9IiMTWyLXGKZlbnzwQ)
+
+[@享耳先森](https://github.com/iblacksun):本篇是系列第二篇,第一篇见 [深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析](https://mp.weixin.qq.com/s/VdkVBIQwj7WkAk8-5wppmQ),本篇在上一篇的基础上介绍了 `WebKit` 内部的三个进程是如何协作及通信的。
+
+### 🐕 [Diffable data source behavior changes and reconfiguring cells in iOS 15](https://www.jessesquires.com/blog/2021/07/08/diffable-data-source-behavior-changes-and-reconfiguring-cells-in-ios-15/)
+
+[@老峰](https://github.com/gesantung):从 iOS 13 开始 Apple 为 TableView&CollectionView 引入 Diffable Data Source 特性实现局部刷新,iOS 15 提供了新 API 带来了更流畅的滚动体验,主要包含如下内容:
+
+- applySnapshotUsingReloadData(_:completion:):提供简洁的 API 处理非动画 diff reload
+- reconfigureItems(_:):提供更高效的 cell 刷新,避免 dequeuing
+
+另外 [【WWDC21 10252】打造拥有流畅体验的列表和集合视图](https://xiaozhuanlan.com/topic/6813072594) 也有相关阅读,感兴趣对的读者建议阅读。
+
+## 摸鱼周报
+
+[@摸鱼周报 #17](https://mp.weixin.qq.com/s/3vukUOskJzoPyES2R7rJNg):第十七期摸鱼周报来了~这期概要如下:
+
+本期话题从一个同学的问题入手,谈了些关于习惯的理解。
+
+Tips 部分围绕一个问题展开:“String.count 和 NSString.length 结果是一样的吗?他们之间有什么差别?”。
+
+面试专题带来网络部分的第二弹,关于 TCP 连接,关于三次握手,四次挥手。
+
+博客部分整理了一些网络优化的文章,网络请求分为:请求前阶段,连接阶段,数据处理阶段,各个阶段都是可以进行优化的。
+
+如何用 Swift 实现常用的数据结构?来看 Swift Algorithm Club 吧。
+
+两个实用工具推荐,桌面版 Homebrew:Cakebrew,一个好用的剪切板工具:Paste - Clipboard Manager。
+
+## 工具
+
+### [GitHub Copilot](https://copilot.github.com/)
+
+GitHub Copilot 是一个可以与你结对编程的 AI 程序员,它可以帮助你以更少的工作量更快地编写代码。它能够从注释和代码中提取上下文,并实时补完单个行或整个函数代码。GitHub Copilot 技术预览版目前以 Visual Studio Code 插件的方式提供,你需要在官网申请加入测试等待名单之后才有机会体验使用。虽然 AI 自动生成代码的话题经久不衰,各种工具也层出不穷,但 GitHub Copilot 的出现可能是距离该类工具真正落地使用最近的一次,感兴趣的朋友快点击官网申请试用吧。
+
+* 推荐人:[Zero.D.Saber](https://github.com/faimin)
+
+## 代码
+
+### [Pulse](https://github.com/kean/Pulse)
+
+[@AidenRao](https://weibo.com/AidenRao):Pulse 是适用于 Apple 平台的强大日志记录系统,基于 SwiftUI 构建。使用 Pulse Console 直接从你的 iOS 应用程序中检查网络请求和日志,并通过 PulseUI 展示出来。你的 QA 团队在问题反馈时可以轻松共享它们,附带在错误报告中。你可以在 Pulse macOS 应用程序中查看共享日志。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#167-2021.07.19.md b/Reports/2021/#167-2021.07.19.md
new file mode 100644
index 000000000..620662158
--- /dev/null
+++ b/Reports/2021/#167-2021.07.19.md
@@ -0,0 +1,128 @@
+# 老司机 iOS 周报 #167 | 2021-07-19
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新手推荐
+
+### 🌟 🐢 [Develop Apps for iOS](https://developer.apple.com/tutorials/app-dev-training/)
+
+[@EyreFree](https://github.com/EyreFree):苹果官方 iOS 开发教程终于来了,原来苹果没有忘记!此教程预计需阅读 12 小时左右,介绍 Xcode 的基础用法以及如何利用 SwiftUI 和 UIKit 两个框架来开发 iOS 原生 App,渐进式的代码演示,通俗易懂,非常适合初学者。
+
+* 推荐人:[Keith](https://twitter.com/KeithBirdKTH)
+
+### 🐕 [使用 Swift 提高代码质量](https://juejin.cn/post/6984768684250120222)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):文章首先简单介绍了 Swift 的类型安全等特性,接着列举了一些容易忽略却较为有效的代码实践以及性能优化方案,例如 `` 减少方法动态派发 ``、`` 避免随意给予可选值默认值 ``、``protocol 添加 AnyObject`` 等等。如果团队计划投入 Swift,不失为一份大家可以参考的编码规范的最佳实践。
+
+## WWDC 21 内参本周更新
+
+### [【WWDC21 10030】高级 Web 内容开发](https://xiaozhuanlan.com/topic/5637428091)
+
+[@LittleSmart](https://github.com/LittleSmart): Web 应用作为互联网内容的重要组成部分,近些年随着 Web2.0 概念的蓬勃发展和包括 WebAssembly、WebGL2.0 等技术的演进,Web 应用在很多场景下已经具备和原生相媲美的性能,Apple 在过去的一年中为 Web应用带来了哪些改进,Safari 和 Webkit 又新添了一些怎样有趣又好玩的功能呢,让我们跟随 WWDC21 一起来探索一下吧~
+
+### [【WWDC21 10053】优秀 Mac Catalyst App 的品质](https://xiaozhuanlan.com/topic/9324781605)
+
+[@OneeMe](https://github.com/OneeMe): Catalyst 这项技术是苹果于 2019 年的 WWDC 上推出的新技术,其目的在于让开发者能够很快的将一个 iPad App 转换成一个能够跑在 Mac 上的 App。三年来的积累也给这项技术带来了足够丰富的特性。那么,面对 Catalyst 中丰富的各种能力,如何才能让我们所创建的 App 在 Catalyst 下有更好的体验呢?让我们来逐一看看苹果工程师给我们的建议吧!
+
+### [【WWDC21 10122】图表的无障碍支持进阶](https://xiaozhuanlan.com/topic/7904561328)
+
+[@Ckitakishi](https://github.com/Ckitakishi): 今年,Apple 带来了全新的音频图表(Audio Graphs),以此为契机,本文将围绕图表无障碍化的基础知识,现状和新特性展开讨论,旨在为正在探索图表无障碍访问的你点亮一盏明灯。
+
+### [【WWDC21 10276】使用相机进行键盘输入](https://xiaozhuanlan.com/topic/0281395647)
+
+[@LinusLing](https://github.com/LinusLing): 我们在日常生活中使用 iOS 应用程序时,常常对那些非数字文本的输入感到很头疼,比如发票,活动传单,还有酒店房间的大活页等。幸运的是,iOS 15 出了一个新功能,可以让你使用相机从周围的世界直接捕获文本,不再需要自己在键盘打字输入了。本文将探讨使用相机进行键盘输入的内容过滤方式以及原理,从而帮助开发者开发相应场景的功能,从而让用户在使用应用程序时获得更流畅、更愉快的体验。
+
+## 播客
+
+### [WWDC21 瞎谈:Swift 支棱起来了吗?](https://www.xiaoyuzhoufm.com/episode/60ef7aababf61dc037c4a96a)
+
+[@没故事的卓同学](https://github.com/lacklock):我们终于录上了一期技术播客,本期播客中我、四娘、老驴三人谈了谈对 Xcode cloud 的看法,也谈了 Swift 的异步和并发的新特性。欢迎大家收听、评论、订阅。本期节目在苹果播客、网易云音乐、QQ 音乐、汽水儿、喜马拉雅中也有上线。
+
+## 文章
+
+### 🌟 🐕 [西瓜客户端埋点实践:基于责任链的埋点框架](https://mp.weixin.qq.com/s/iMn--4FNugtH26G90N1MaQ)
+
+[@Barney](https://github.com/BarnyZhao):本文深入浅出,从一个基本的收藏点击埋点切入,对比分析了常见的透传埋点,全埋点的优劣,最后引出基于责任链的埋点介绍。
+
+文中的关键信息总结如下:
+1. 埋点的背景介绍,经典消费场景分析。
+2. 以收藏场景为例,通过伪代码分析对比透传和全埋点的优劣。
+3. 基于责任链的埋点框架介绍
+ - 优点:侵入性小、关注点分离
+ - 缺点:理解成本、无强制约束
+
+### 🐎 [Experience of using VSCode as a Swift IDE](https://forums.swift.org/t/experience-of-using-vscode-as-a-swift-ide/50271)
+
+[@Keith](https://github.com/KeithBird):上周我们介绍了码农批量下岗项目 Copilot,该项目还在测试阶段就已经让无数程序员大呼 woc。解放全 GitHub 的项目自然少不了 Swift 代码的投喂,虽然 Copilot 目前只可在宇宙 IDE - VS Code 中使用,但支持多平台一直是 Swift 服务端团队 [SSWG](https://swift.org/sswg/) 的目标之一。[Experience of using VSCode as a Swift IDE](https://forums.swift.org/t/experience-of-using-vscode-as-a-swift-ide/50271) 一文介绍了目前在 VS Code 写 Swift 的优缺点和对未来的展望。至于如何进行部署,可以参考官方的 [IDEs/Editors with Swift Support](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md),和非官方但更加通俗详细的 [iOS Development on VSCode](https://medium.com/swlh/ios-development-on-vscode-27be37293fe1)。值得一提的是,尽管目前 Copilot 只对 Python、JS、Go、Ruby 等网红语言才有最完美的支持,但在少有人用 VS Code 开发 iOS 的情况下,其对 Swift 的支持依然十分惊艳。最后,因此对人类失去信心的同学可以复习王垠的「[人工智能的局限性](https://www.yinwang.org/blog-cn/2017/04/23/ai)」,重拾改一辈子 bug 的无产阶级觉悟。
+
+> 由 [@Keith](https://github.com/KeithBird) 推荐并完成简评
+
+### 🐕 [听说你想写个 DNS 服务器 - 数据包](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486555&idx=1&sn=a1e7e018a549ad155cfad6eb4b135e3e&chksm=cf558393f8220a852fdd90d0919981239d2bbe0266f511ffd27ecbde6e972399b24fdeaec9b8&token=1949232915&lang=zh_CN#rd)
+
+[@J_Knight_](https://github.com/knightsj):本文作者开始了一个新的系列来讲解如何用 Swift 语言来实现 DNS 服务器。作为本系列的开篇,本文主要介绍了 DNS 数据包的结构(包头和包体数据),各个部分的字段定义,布局信息以及介绍了如何通过抓 DNS 数据包来解析 DNS 相关数据的方法。
+
+扩展阅读:
+
+- [听说你想写个 DNS 服务器 - 数据写入](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486681&idx=1&sn=daebc908f4fe22c6d773f1e4e38fa350&chksm=cf558311f8220a07af12fe2a0956fd76ddff0006162ebb983b1795eb201bbe11c3a8456ebced&token=540344501&lang=zh_CN#rd)
+
+### 🐕 [Improving Platform Channel Performance in Flutter](https://medium.com/flutter/improving-platform-channel-performance-in-flutter-e5b4e5df04af)
+
+[@Damien](https://github.com/ZengyiMa):本文是 pigeon 的作者 Aaron Clarke 带来的精彩好文,Aaron Clarke 通过减少在 Dart、C++、ObjC、JVM 之间信息传递中发生的多余 copy 优化,来提升 Native 与 Flutter 通信的性能。最终取得的效果在老设备上 15% 的提升,新设备上获得了 42% 的性能提升。并在文章最后给出了一些优化建议,如果对性能要求高场景,可以使用 BasicMessageChannel 和 FlutterBinaryCodec 并且配合自己实现 encode & decode,通过这个组合来提高 Flutter 和 Native 之间的性能。
+
+## 摸鱼周报
+
+[@摸鱼周报 #18](https://mp.weixin.qq.com/s/JsGmu7pzYLI3Svrmk5i2cA):第十八期摸鱼周报来啦,一起看看本期概要:
+
+本期话题:什么是暗时间,来源于刘未鹏的《暗时间》。
+
+Tips 内容用一张详细的思维导图总结了 Fastlane 几乎所有的常见方法。
+
+面试解析围绕 block 的变量捕获机制展开说明了 block 的一些用法和面试高频考察点。
+
+优秀博客带来了几篇编译优化相关的文章。
+
+学习资料带来了一个从 0 设计计算机的视频教程,偏电路一些;还有 Git 和正则表达式的文字教程。
+
+开发工具介绍了两个代码片段整理应用:SnippetsLab 和 CodeExpander。
+
+
+## 代码
+
+### [Hammer](https://github.com/lyft/Hammer)
+
+[@Smallfly](https://github.com/iostalks):[Hammer](https://github.com/lyft/Hammer) 是一款模拟交互事件的 Swift 开源库,支持模拟触摸,iPad 手写笔,键盘输入。它能很好地用于 UI 自动化测试,尽可能替代一系列的人工操作。有兴趣的同学可以了解一下。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 杭州网易云音乐社区团队招聘高级/资深 iOS 开发工程师,包含云音乐动态,MLog 视频,评论,播客,云圈,音视频编辑等多条核心业务。负责音视频社区生产分发建设,打造良好的社区互动氛围。我们保持将最新技术引入,提升开发效率,带给用户更好的体验。联系方式:简历发送至 iostalkboy@gmail.com。
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#168-2021.07.26.md b/Reports/2021/#168-2021.07.26.md
new file mode 100644
index 000000000..3e178db8d
--- /dev/null
+++ b/Reports/2021/#168-2021.07.26.md
@@ -0,0 +1,148 @@
+# 老司机 iOS 周报 #168 | 2021-07-26
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC
+
+### WWDC 21 内参
+
+老王身体抱恙,停更一周~
+
+## 新手推荐
+
+### 🌟 🐢 [干货 | Flutter 控件 CustomScrollView 原理解析及应用实践](https://mp.weixin.qq.com/s/dF5Id3w_To4aXeXDbUnUjQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):CustomScrollView 可以说是 Flutter 开发中一定会用到的一个控件,List,Grid,Sliver 等都是基于 CustomScrollView 实现的,那么如何用好 CustomScrollView 是一个技术活,本文由携程技术产出,从原理上讲解如何更好的使用 CustomScrollView,文中涉及诸多开箱即用的知识点,小编强烈推荐各位仔细学习一遍。
+
+## 文章
+
+### 🌟 🐢 [深入理解 WKWebView(基础篇)—— 聊聊 Cookie 管理那些事](https://mp.weixin.qq.com/s/jZP2DsAa5OV91wdNMw39cA)
+[@享耳先森](https://github.com/iblacksun):本篇是系列第三篇,文章首先介绍了 Cookie 相关 API,然后深入介绍 WebKit 内部 Cookie 管理方式及技术原理。前两篇见:
+
+- [深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析](https://mp.weixin.qq.com/s/VdkVBIQwj7WkAk8-5wppmQ)
+- [深入理解 WKWebView(基础篇)—— WKWebView 加载生命周期与代理方法剖析](https://mp.weixin.qq.com/s/ZFui9IiMTWyLXGKZlbnzwQ)
+
+
+### 🐕 [详解:mach-o 文件如何分析多余的类和方法](https://mp.weixin.qq.com/s/z0eK4cOfvYWFhHl16rGnEg)
+
+Mach-O 是 Mach Object 的缩写,是 Mac 上的可执行文件的格式。本文通过对 Mach-O 的介绍,让我们了解到如何通过 Mach-O 来分析无用类,从而减少包体积的大小。作者还基于此封装了一个分析工具,有兴趣的读者可以了解一下。
+
+### 🐕 [iOS 优化 - 瘦身](https://mp.weixin.qq.com/s/wDcYvea5dTq0dh0PBwRu4A)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文介绍了 iOS 的经典问题,瘦身优化,从最基础的概念讲起,新人友好,同时也适合大家温故而知新。这是一个优化的专题系列,可以持续关注。
+
+关键点脉络梳理如下:
+- APP 的**下载大小**简单介绍
+- 瘦身方向
+- App Thinning
+- 资源文件瘦身
+- 编译选项优化
+- Mach-O 可执行文件瘦身
+
+### 🐎 [Mutating and non-mutating Swift contexts](https://www.swiftbysundell.com/articles/mutating-and-nonmutating-swift-contexts/)
+
+[@xiaofei86](https://github.com/xiaofei86):Swift 帮助我们编写更健壮代码的方法之一是通过其广泛使用的值类型。在使用值类型时,所有更改默认情况下仅对我们正在使用的副本执行,并且实际执行更改的 API 必须清楚地标记为 mutating。本文将探讨 mutating 及其不太常用的对应项 nonmutating 的能力和使用场景,感兴趣的同学可以阅读原文了解。
+
+### 🐎 [Fixing a hard-to-find bug in Dark Mode](https://www.jessesquires.com/blog/2021/07/15/fixing-a-hard-to-find-bug-in-dark-mode/)
+
+[@Smallfly](https://github.com/iostalks):市面上主流 iOS App 基本都支持了系统的深色模式。本文作者在支持深色模式时,遇到 UIButton 在系统主题切换后,部分颜色没有被正常更新。经过一系列的分析,最终定位到问题出在 [Dynamic System Colors](https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/) 上。这个坑在支持换肤时还是比较容易踩到的,有需求的同学可以关注一下。
+
+### 🐎 [重磅开源|AOP for Flutter 开发利器——AspectD](https://mp.weixin.qq.com/s/lvP2UFHOG0HrtqMMf7na0g)
+
+[@Damien](https://github.com/ZengyiMa):面向切面的编程意为:通过预编译方式和动态代理技术在不侵入代码的前提下在指定位置插入功能代码,由于在 Flutter 中禁止了反射的功能,所以在 Flutter 实现 AOP 框架只能另辟蹊径。本文是咸鱼团队在实现 FLutter 的 AOP 框架带来的新的思路,通过对 FLutter 的 dill(Dart Intermediate Language)文件的修改来实现了 AOP 的功能,在 Flutter 中有 AOP 需求的同学不妨可以仔细阅读。
+
+### 🐎 [听说你想写个 DNS 服务器 - 记录类型扩展](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486727&idx=1&sn=a71ed08275433e15593069e010c31c02&chksm=cf5582cff8220bd96ce28f0dd8874f27064e3999792e6ad25d90a0cf2f56651278495a6927de&token=87205550&lang=zh_CN#rd)
+
+[@J_Knight_](https://github.com/knightsj):本文是《听说你想写个 DNS 服务器》系列的第三篇,介绍了记录结构以及除 ipv4 映射记录之外的其他四种记录类型:
+
+- AAAA:域名与 ip 映射记录,ipv6 地址
+- NS:DNS 域名服务器记录
+- CNAME:域名对应的另一个域名,表示真正查找的域名
+- MX:邮件服务器域名记录
+
+并结合代码展示了如何处理记录读取扩展和记录展示扩展。
+
+## 摸鱼周报
+
+[@摸鱼周报 #19](https://mp.weixin.qq.com/s/dtyozlqCO7PcpyGhx2qB5g):第十九期摸鱼周报来了,一起来看下本期概要:
+
+- 本期话题通过对《暗时间》里内容的总结,分享了一些学习和记忆的方法。
+- 开发 Tips 讲了如何区分 `minimumLineSpacing `和 `minimumInteritemSpacing` 这两个属性及本地化关于日期的注意事项。
+- 面试解析讲解了属性及属性关键字的几个知识点,由@师大小海腾和@反向抽烟整理,内容非常之详细。
+- 优秀博客整理了几篇卡顿优化的优质文章。
+- 学习资料有两个内容,Combine Operators:帮助理解 Combine 操作符的手机端 App;还有 Stanford 最新的 SwiftUI 2.0 双语教程。
+- 开发工具带来了一个基于 linkmap 分析执行文件大小的工具:LinkMap。
+
+## 工具
+
+### [Xcodes.app](https://github.com/RobotsAndPencils/XcodesApp)
+
+[@AidenRao](https://weibo.com/AidenRao):一个可以安装多个 Xcode 版本,并在它们之间快速切换的应用。
+
+- 可安装所有可用的 Xcode 版本
+- 自动化安装,并使用多达 16 个链接,下载速度比直接通过 URLSession 快 3-5 倍
+- 一键安装对应版本的 xcode-select
+- 可查看发布说明,操作系统兼容性。
+
+
+### [Flutter 应用内调试工具 UME 开源啦](https://github.com/bytedance/flutter_ume)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang): 由字节跳动开源。UME 当前内置了如 性能浮层、日志展示、颜色吸管、代码查看 等 10 个插件,可以按需注册插件。已满足大部分日常开发所需。[pub 地址 >>>](https://pub.dev/packages/flutter_ume)
+- 优点:
+ - 插件可以按需注册,且支持开发者自己定制件,UME 欢迎大家共建
+ - 对 ``1.12.13``,``2.0.1`` 等几个较为稳定的版本都有兼容
+ - 有单测保证工具稳定性
+- 不足:
+ - 有一定侵入性。由于 UME 内部管理路由,因此 APP 内其余 showDialog 等方法需要传入参数 ``useRootNavigator: false``
+ - 部分功能依赖 ``VM Service``,本地运行需对脚本进行修改(添加 ``--no-dds`` 参数)
+ - 插件内部实现还未兼容 ``nullsafety``,当前只能通过 ``dependency_overrides`` 覆盖版本在 ``no-sound-null-safety`` 模式下使用的,期待适配
+
+## 代码
+
+### [GodL/Binder](https://github.com/GodL/Binder)
+
+[@JonyFang](https://github.com/JonyFang):Binder 是一个由 `PropertyWrapper` 驱动的数据绑定库,实现了一些类似 RxSwift 的变换操作函数,函数之间支持相互组合。
+
+### [CalendarApp](https://github.com/richardtop/CalendarApp)
+
+[@Parsifal](https://github.com/ParsifalC):[@Richard][https://github.com/richardtop] 录制了一期关于使用 [CalendarKit](https://github.com/richardtop/CalendarKit) 打造一个简单仿原生日历 App 的视频教程 - [Create iOS Calendar App in Swift with CalendarKit](https://www.youtube.com/watch?v=iC4XxmExqFA),这是他最后完成的一个 Demo 代码。Calendar 相关的教程不多,[CalendarKit](https://github.com/richardtop/CalendarKit) 可以迅速帮你在 App 内创建类似系统日历 UI 的功能。
+
+> 由 [@Richard][https://github.com/richardtop] 自荐
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> bilibili 主站技术中心招聘 高级/资深 移动开发工程师 (包含 iOS Android C++ 等方向)
+本团队为核心团队,包含基础架构,播放业务,流量业务,创新业务,通用业务等等众多选择,是内部最大的移动端团队。
+负责横向支撑整个平台,追求极致的用户体验,对新技术保持敏感,是国内少数使用 bazel 的团队。
+联系方式:简历发送至 zhaohan01@bilibili.com。(注明岗位)
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#169-2021.08.02.md b/Reports/2021/#169-2021.08.02.md
new file mode 100644
index 000000000..9e48ad315
--- /dev/null
+++ b/Reports/2021/#169-2021.08.02.md
@@ -0,0 +1,182 @@
+# 老司机 iOS 周报 #169 | 2021-08-02
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## WWDC 21
+
+### 🌟 线下沙龙
+
+[@Parsifal](https://github.com/ParsifalC):上周四开始,我们已经在周报公众号上开始陆续发布今年杭州场沙龙的分享文章、PPT 和视频等内容了,本周也会继续发布杭州场和上海场的相关内容信息,欢迎大家继续关注~
+
+- [淘宝工程渐进式拥抱 Swift - 倾寒](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491478&idx=1&sn=8dc4a6a6062056b9bed801ea043f7919&chksm=eaa2809dddd5098b4e8ecc06ba6d0649321f75981f56517ed25577e12de183e392577aba9267&token=1581804799&lang=zh_CN#rd)
+- [西瓜视频的 IAP 支付实践与 StoreKit 新特性 - 黄骋志](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491481&idx=1&sn=652c93ef30634f979008387cc029ec68&chksm=eaa28092ddd509848862d136c906a913bdb40a41f2220245393ed0498b4669671c0e4b41247e&token=1581804799&lang=zh_CN#rd)
+
+### 🌟 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21)
+
+[@Parsifal](https://github.com/ParsifalC):本周内参恢复更新,8 篇高质量内容已经发布~
+
+- @VincentMing:[【WWDC21 10132】 认识 Swift 的 Async/Await](https://xiaozhuanlan.com/topic/9307851264)
+- @fakeGourmet:[【WWDC21 10143】- 探索 AVFoundation 中的 HLS 变体](https://xiaozhuanlan.com/topic/8432795016) & [【WWDC21 10142】 - 使用 HLS 让媒体无缝切换](https://xiaozhuanlan.com/topic/7392854016) & [【 WWDC21 10141】 - 使用 HLS Content Steering 提升全球范围流媒体的可用性](https://xiaozhuanlan.com/topic/2956103478)
+- @Mim0sa:[【WWDC21 10097 10251 10349】- SF Symbols 使用指南](https://xiaozhuanlan.com/topic/9214865730)
+- @MarryNerV:[【WWDC21 10220 10221】 - 本地化功能上新](https://xiaozhuanlan.com/topic/6278501394)
+- @Nemo:[【WWDC21 10047】 - 相机拍摄新变化](https://xiaozhuanlan.com/topic/0729458136)
+- @kk:[【WWDC21 10002 10009】- watchOS 8 中的新特性](https://xiaozhuanlan.com/topic/0142735986)
+
+### WWDC 21 播客
+
+#### [WWDC21 瞎谈:Catalyst、SwiftUI、Flutter 谁是 UI 的未来?](https://www.xiaoyuzhoufm.com/episode/61009e2083c3728d82be24c4)
+
+[@没故事的卓同学](https://github.com/lacklock):这是我们第二期 WWDC 相关的播客,本期我和老驴、四娘、少庸一起聊了一下对 Catalyst、SwiftUI、Flutter 的看法。本期节目在苹果播客、网易云音乐、QQ 音乐、汽水儿、喜马拉雅中也有上线。
+
+## 文章
+
+### 🌟 🐢 [我写技术文章的一点心得](https://ming1016.github.io/2021/07/24/my-little-idea-about-writing-technical-article/)
+
+[@Barney](https://github.com/BarnyZhao):本文是戴铭老师对自己过往写作经验的深度总结,从四个写作要点开篇,分析了自己过往的经典文章以及当时的想法和灵感。紧接着结合本次 WWDC 举例,传授新手如何开始写作的经验。可谓是干货满满,适合反复阅读。
+
+关键点脉络:
+- 四个点
+- 过往经验
+- 我是新手怎么办
+- WWDC 和 经验总结
+
+### 🌟 🐕 [基于 Swift 编写严肃脚本工具](https://github.com/100mango/zen/blob/master/%E5%9F%BA%E4%BA%8E%20Swift%20%E7%BC%96%E5%86%99%E4%B8%A5%E8%82%83%E8%84%9A%E6%9C%AC%E5%B7%A5%E5%85%B7/%E5%9F%BA%E4%BA%8E%20Swift%20%E7%BC%96%E5%86%99%E4%B8%A5%E8%82%83%E8%84%9A%E6%9C%AC%E5%B7%A5%E5%85%B7.md)
+
+[@EyreFree](https://github.com/EyreFree):本文作者是目前就职于微信的 100mango 老师,开篇通过分析 Swift 在国内外的使用现状以及在微信的一些应用场景表现了 Swift 的光明前途,并且借由「微信支付跨平台代码生成器是由 Swift 编写的」这一事例引出了文章主题:如何通过 Swift 来编写脚本 / 自动化工具。主要分为以下四步:
+
+- 创建工程:通过 Swift Package Manger 创建了工程,并调整了工程结构,依赖管理;
+- 编写代码:通过编写一个简单生成随机数的工具感受 Swift 编写脚本工具,并给我们的工程引入了苹果开源的 Argument Parser 库。用于简化命令行参数解析,优化工具说明;
+- 测试:分别对逻辑代码和命令行 API 进行了测试;
+- 发布:通过一行简单的代码,就能生成可执行文件进行分发;
+- 进阶操作:最后介绍了几个进阶操作,我们还发现通过 Swift 编写脚本工具,还能直接和 AppKit / SwiftUI 进行交互,非常的具备扩展性。
+
+这篇文章并没有展示特别复杂的代码,但是根据上面展示的步骤、原则,就能编写出能够支撑像微信支付跨平台代码生成器这样的命令行工具。Swift 是一门优雅的编程语言,以后大家不管是遇到编写一些小脚本还是开发大型严肃工具的场景,都可以尝试用 Swift 实现了呢!
+
+### 🌟 🐕 [Calling Hidden/Private API from Swift in Style](https://medium.com/swlh/calling-ios-and-macos-hidden-api-in-style-1a924f244ad1)
+
+[@JonyFang](https://github.com/JonyFang):在 Swift 中使用 Objective-C 私有 API 一般有两种方式,自己创建头文件或消息的方式,但不管哪一种使用起来都会比较繁琐。本文中,作者基于 Swift 的 `@dynamicMemberLookup` 和 `@dynamicCallable` 特性封装了围绕 Objective-C 类和对象的库 -- [mhdhejazi/Dynamic](https://github.com/mhdhejazi/Dynamic)。`mhdhejazi/Dynamic` 满足了 Swift 可以以更简单和直观的方式来调用私有 API。
+
+### 🌟 🐕 [大家来找茬:记一起 clang 开启 -Oz 选项引发的血案](https://mp.weixin.qq.com/s/1RNsrmUKuxmQa0jPZozE9A)
+
+[@Leo](https://github.com/leomobiledeveloper):我们可以通过 -Oz 的编译选项来优化包体积,但是在某些极端情况下 -Oz 会导致编译器的某些优化失效,引起一些非预期的问题。本文就是关于一个开启了 -Oz 导致 autorelease 优化失效,对象误被放入 autoreleasepool 中,进而引起大量内存堆积的问题。文章干货颇多,推荐阅读。
+
+### 🐎 [技术债治理的四条原则](https://insights.thoughtworks.cn/managing-technical-debt/)
+
+[@莲叔](http://github.com/aaaron7):在我们的工作中,重构是一个经常提及的话题,毕竟现在都是业务优先,几乎没有一个业务的技术架构是一步一步稳扎稳打的建立起来的, 普遍都是上线要紧,随着而来的就是各种各样的技术债。对于技术债,重构还是不重构,这也是一个问题。不重构吧,做新需求很蛋疼,容易踩雷,稍不留神就线上故障。重构吧,投入很多人力物力,但其结果很难产生真正的业务收益,业务方不买单也就算了,还可能导致目前线上已经在跑的模块出现问题。不管从哪个方面来看,这都是一个很两难的问题。这篇文章针对这个两难问题进行了非常深入的分析与讨论,并且旗帜鲜明的给出了自己的态度:要解决,但是需要遵循几个基本的原则。感兴趣的同学可以阅读一下,或许可以找到符合你们团队实际情况的答案。
+
+### 🐕 [The flutter “const” Keyword demystified.](https://medium.com/flutter-community/the-flutter-const-keyword-demystified-c8d2a2609a80)
+
+[@邦Ben](https://weibo.com/linwenbang):这篇文章简单介绍了 const 的使用会对某些频繁创建的场景的性能有所优化,例如在构造方法中加入 const 声明,可以提高复用 widget,节省内存。总体而言,在频繁复用场景中(例如做动画),建议加上 const ,其他基本不复用的场景则作用不大。
+
+可以配合下方链接阅读,参考文章作者也对 const 的使用进行了简单的测试以证明效果。
+
+参考:
+[Flutter 的 Widget,刻意加上 const,真的值得吗?](https://juejin.cn/post/6977212326394986510)
+
+### 🐕 [网易新闻 iOS 工程组件化实践](https://mp.weixin.qq.com/s/mfvbRXEhJBqzhwQbjnuZgw)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):网易新闻也是迭代了 10 年的 APP 了,最终实现了主工程里只有一个 main 文件,组件数量达到了 268 个。
+
+每个 APP 会由于项目特点以及团队组织结构的区别,在实践中细节会有些许不同,但目的都是明确的:提高可维护性、开发效率。网易新闻业务之间耦合较多,业务之间频繁相互调用接口也有成本;团队没有按业务进行拆分,同时业务之间也不需要隔离。因此网易新闻没有选择通过路由将业务完全隔离,而是将业务拆为两层,顶部的展现层利用路由隔离,下方的业务层可以单项依赖。
+
+同时网易新闻还对工具链进行了改造:
+- 在组件配置信息中增加 level、binary 等参数,在 ``pod install`` 时前置报出 warning ,防止组件之间的错误依赖关系
+- 推行严格的代码责任制以及 Merge Request 规范化
+- 未选择版本号,而是采用通过 Xcode 缓存,MD5 区分版本的本地二进制方案,减少额外的人力成本
+
+> 自荐: [lixf](https://https://github.com/lixinfei)
+
+### 🐕 [美团 App 页面视图可测性改造实践](https://mp.weixin.qq.com/s/YcvFSs-97SpMKjlpj9Dzqg)
+
+ [@含笑饮砒霜](https://weibo.com/chinafishnews/):本文围绕动态化容器中的动态布局技术,阐述了如何通过可测性改造来帮助达成提升测试效率的目标。本文目录:
+
+* 美团App的页面特点
+
+* 自动化测试实施中的技术挑战
+ * 页面元素无法定位
+ * Appium元素定位的原理
+ * AccessibilityNodeInfo和Drawable
+
+* 页面视图可测性改造-XraySDK
+ * 定位方案对比
+ * 视图信息的获取和存储-XrayDumper
+ * 视图信息的输出-XrayServer
+ * SDK整体功能结构
+ * 视图信息的增强
+ * 动态布局自动化的收益
+
+* 未来展望
+ * 使用视图解析原理解决WebView元素定位
+ * 视图可测性改造更多的应用场景
+
+### 🐕 [面试中 LRU / LFU 的青铜与王者](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/LRU:LFU_interview.md)
+
+[@J_Knight_](https://github.com/knightsj):本文作者介绍了 LRU 和 LFU 算法的原理和 Go 语言的实现。也分享了 LRU 和 LFU 的优化方案和“如何实现一个高并发且线程安全的 LRU” 这个问题的实现思路。
+
+### 🐕 [从 WebKit 源码中学习手势处理的高级用法——WKWebView中的手势识别](https://mp.weixin.qq.com/s/pt1nk5z5nK-fPCKqQlP-sg)
+
+[@折腾范儿_唯敬](https://www.weibo.com/agvicking/home?wvr=5):本文的作者从对 iOS 事件响应与手势的基础原理入手,深挖到 WebKit 源码中对于手势的处理策略,针对 Web 界面中更复杂更多样的手势处理进行分析与总结,非常有助于我们加深对 iOS 手势的深入理解与运用。
+
+### 🐎 [Xcode 13 Missing Info.plist](https://useyourloaf.com/blog/xcode-13-missing-info.plist/)
+
+[@AidenRao](https://weibo.com/AidenRao):文中主要介绍了 2 点:
+
+1、Xcode 13 新起的 SwiftUI 项目,Info.plist 文件已经不存在,文中介绍了如何找回 Info.plist。
+
+2、Xcode 13 新建的项目无法用 Xcode 12 打开,文中介绍了如何更改设置来向前兼容 Xcode 12。
+
+> 感谢 [faimin](https://github.com/faimin) 的推荐
+
+## 摸鱼周报
+
+[@摸鱼周报 #20](https://mp.weixin.qq.com/s/PjiZzx3VSAfAGHRJs160aQ):第二十期摸鱼周报来了,一起来看下本期概要:
+
+* 小编整理了一些洪灾应对的指南,希望对大家有所帮助。
+* Tips 部分介绍了如何绘制一个高颜值的统计图。
+* 面试解析模块本期讲解深拷贝浅拷贝的知识点。
+* 优秀博客汇总了不少包体积优化的优秀文章。
+* 学习资料推荐了 [Better Explaine](https://betterexplained.com/) 这个网站,其用于帮助大家理解那些复杂的数学概念。
+* 截图工具 Snipaste,无用图片搜索工具 LSUnusedResources。
+
+## 代码
+
+### 🐕 [OpenCombine](https://github.com/OpenCombine/OpenCombine)
+
+[@zvving](https://github.com/zvving):与 SwiftUI 一起推出的 [Combine](https://developer.apple.com/documentation/combine) 本可以作为响应式框架独立使用,但最低系统 iOS13 的限制极大制约其应用。
+
+类似 [CombineX](https://github.com/cx-org/CombineX),[OpenCombine](https://github.com/OpenCombine/OpenCombine) 旨在为 iOS/macOS 低版本(>= iOS 8.0)及跨平台场景提供 API 一致的开源实现,为后续向官方 Combine 过渡提供『无缝切换体验』。项目依旧在早期阶段,感兴趣的朋友们可以提前了解,生产环境应用需谨慎。
+
+> 感谢 [XanderXu](https://github.com/XanderXu) 的推荐
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#170-2021.08.09.md b/Reports/2021/#170-2021.08.09.md
new file mode 100644
index 000000000..481240b04
--- /dev/null
+++ b/Reports/2021/#170-2021.08.09.md
@@ -0,0 +1,144 @@
+# 老司机 iOS 周报 #170 | 2021-08-09
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+**周报编辑组又来新人啦~欢迎黄骋志加入周报组织。骋志是我们这次杭州场线下沙龙的分享嘉宾,完成了 IAP 在西瓜视频上的落地,同时对跨端技术(Flutter & RN)均比较熟悉。希望骋志的加入也能为大家带来更多元化的内容输出!**
+
+### 🌟 线下沙龙
+
+[@Parsifal](https://github.com/ParsifalC):我们正在周报公众号上陆续发布今年杭州场和上海场沙龙的分享文章、PPT 和视频等内容,欢迎大家继续关注(公众号回复**杭州**即可获取杭州场文章和视频)~
+
+- [Flutter 混编工程的模块化架构设计实践 - Jackie](https://mp.weixin.qq.com/s/A2gYRPJ0u8TVXZyMtEArlA)
+- [抖音创作工具防劣化实践 - Crespo](https://mp.weixin.qq.com/s/_c3y9KnbKS6VnqTb0AKRWg)
+- [Async and Await in Swift 5.5 - 彭玉堂](https://mp.weixin.qq.com/s/DopuYyy479eSjgns3iaWaw)
+
+### 🌟 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21)
+
+[@Parsifal](https://github.com/ParsifalC):本周内参更新,6 篇高质量内容已经发布~
+
+- @Sinno:[【WWDC21 10278】Core Haptics 初体验](https://xiaozhuanlan.com/topic/0382695741)
+- @sunset:[【WWDC21 10267】一窥 Xcode Cloud](https://xiaozhuanlan.com/topic/2946158037)
+- @土土Edmond木:[【WWDC21 10056】让您的 iPad 与 iPhone 应用程序在 M1 的 Mac 上大放异彩](https://xiaozhuanlan.com/topic/4392718605) & [【WWDC21 10210】探索 Xcode 项目中构建配置的高级技巧](https://xiaozhuanlan.com/topic/3518046279)
+- @Sean:[【WWDC21 10202】Detect bug early using static analyzer](https://xiaozhuanlan.com/topic/7125309684)
+- @冬瓜:[【WWDC21 10253】使用 Swift 特性 Result Builder 定制 DSL](https://xiaozhuanlan.com/topic/9042736581)
+
+## 新闻
+
+### 🌟 [重要!与苹果工程师一对一咨询的机会~](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491606&idx=1&sn=15026f240a4597922aff0e2786473dfd&chksm=eaa17f1dddd6f60b43344e46cbc04cc8bc1d9c9c7f6c6e924abf5519b0670cee345367132f57&token=2123226571&lang=zh_CN#rd)
+
+[@Parsifal](https://github.com/ParsifalC):苹果官方的一对一咨询活动来啦!2021 年 8 月 17 日(周二)举办主题为 “Core ML 和 Create ML 的最新进展及更多”的在线研讨会。本次面向周报读者免费公开报名,扫码即可参与。苹果工程师一对一 30 分钟的咨询介绍,名额有限,报满即止。
+
+
+
+## 新手推荐
+
+### 🐎 [Flutter (able) 的单例模式 | Flutter 设计模式](https://mp.weixin.qq.com/s/hRvmbRcJlOj5iB1HqvUkog)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):单例模式,可以被称得上是诟病最多的设计模式了,objccn 中也有一篇[避免滥用单例](https://objccn.io/issue-13-2/)。但这并不是单例模式的错,而是使用单例的方式错误导致的。
+
+本文给大家展示了利用 工厂构造函数 + 空安全语法 + 箭头函数 写出符合 Dart 特性的单例代码,可以做个参考。**真的还是少用**。然后引出了 InheritedWidget,相对于一般的单例,这是前端中比较通用的状态同步方案,如果衡量下需要一个全局统一的数据仓库,那就在 InheritedWidget / Redux / Angular 中挑一个吧。若不清楚 InheritedWidget 可以配合下方链接了解。
+
+> [《Flutter 实战》 数据共享(InheritedWidget)](https://book.flutterchina.club/chapter7/inherited_widget.html)
+
+## 文章
+
+### 🌟 🐕 [脉脉 iOS 如何启动秒开 - 知乎](https://zhuanlan.zhihu.com/p/396550853)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文是脉脉技术团队对启动优化的实践总结,从理论到实践相结合,适合从零了解启动优化。
+
+关键点:
+- App 是如何启动的
+- 衡量 App 启动时间
+- 核心方法分析
+- 制定 App 启动优化方案
+- 验证 脉脉 App 启动优化效果
+
+### 🌟 🐕 [拿去吧你!Flutter 仿自如 App 裸眼 3D 效果](https://juejin.cn/post/6991409083765129229)
+
+[@邦Ben](https://weibo.com/linwenbang):该文模仿自如团队在 Flutter 上利用 Accelerometer (加速度传感器)、Gyroscope (陀螺仪)实现了视差形成的裸眼 3D 效果,看演示 Demo 效果不错,文章写的原理分析不错,也可以看一下自如团队 Android 端实现。
+
+> [自如客 APP 裸眼 3D 效果的实现](https://juejin.cn/post/6989227733410644005)
+
+### 🌟 🐕 [快手海外 Swift/ObjC 混编与二进制化工程实践](https://mp.weixin.qq.com/s/d-atu1J_gqd3-rM0UXAqbA)
+
+[@JonyFang](https://github.com/JonyFang):本篇主要记录了快手团队在 Swift/OC 二进制化混编实践过程中碰到的诸多问题及解决方法,最终的结果是:有效提高了编译效率。
+
+整体的目录结构如下:
+
+1. Swift/ObjC 混编背景介绍
+2. 单 Target 混编
+ - bridging header
+3. 多 Target 混编
+ - OC 组件 Clang module 化
+ - 处理难以 Module 化的 Pod 组件
+ - Swift 组件的二进制兼容
+ - 二进制化混编
+4. 实践中遇到的问题
+ - Framework search path 与 Header search path 的冲突问题
+ - Module 中使用宏的问题
+ - FakeFramework 解决依赖关系与编译顺序的问题
+5. 展望未来
+ - 基础库规范适配处理
+ - 规范公开头文件
+ - 提高 Module 化组件占比
+
+### 🌟 🐕 [浅析快手 iOS 启动优化方式——动态库懒加载](https://mp.weixin.qq.com/s/gNc3uK5ILbXsO8jB1O-jnQ)
+
+[@Leo](https://github.com/leomobiledeveloper):App 的启动速度与用户体验息息相关,启动速度越快,用户的留存率往往也会越高。对于 iOS 应用来说,其启动主要分为 main() 方法之前 (也称为 premain ) 和 main() 方法之后两个阶段。本文将要介绍的优化方式是动态库懒加载,即主要针对 premain 阶段进行优化。文中会重点介绍在动态库懒加载和启动代码动改静的实践过程中遇到的一些问题及处理方式。
+
+### 🐎 [StaticString, and how it works internally in Swift](https://swiftrocks.com/staticstring-in-swift)
+
+[@Smallfly](https://github.com/iostalks):字符串是开发中比较常用的类型,Swift `String` 作为结构体,运行时在栈内创建字符串实例。对于不可变的字符串,频繁使用 `String` 类型,对栈内存和 CPU 来说是一种浪费。Swift `StaticString` 类型在 `String` 的基础上进行了优化,实现了字符串引用,本文简单的介绍了它在编译器层的实现原理。
+
+## 摸鱼周报
+
+[@摸鱼周报 #21](https://mp.weixin.qq.com/s/Hcd8CtkyqD8IXM0SbVJo-A):第二十一期摸鱼周报来了,一起来看下本期概要:
+
+* 本期话题源于看到的一个讲解身体机制的视频,人在危重的时候身体会有哪些反应。
+* 关于 `UserDefaults` 的一些用法。
+* 面试解析本期讲解 load 和 initialize 的一些知识点。
+* 内存方面的优化,通常分为两个步骤:问题定位,利用 Instruments 中的 Leak,Allocation 进行分析。问题解决,解决特定内存问题或使用 mmap 方案进行优化。大家也可以带着问题去阅读相关文章。
+* Open Source Society University:非常受欢迎的计算机科学自学教程,Swift Programming for macOS:用 Swift 开发 Mac 应用的一些示例介绍。
+* Messier:一个 Objective-C 方法耗时监控的方案。
+
+
+## 工具
+
+### [cocoapods-TSPodfileTimeWatch](https://github.com/cxr0715/cocoapods-TSPodfileTimeWatch)
+
+[@红纸](https://github.com/nianran):这是一款开箱即用的 Cocoapods 插件,插件用于提供了 Cocoapods 中几项重要的耗时/磁盘占用指标(仓库下载耗时、仓库文件大小、Cache 文件大小、解压耗时、Git 版本差值),作者也很贴心的输出了 csv 格式文件。当小伙伴们需要 Cocoapods 相关的量化数据指标,做一些耗时跟磁盘相关优化的话,推荐可以使用此工具。
+
+> 自荐:[Ke哀](https://github.com/cxr0715),目前就于职手机 QQ,从事手 Q 基础开发
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#171-2021.08.16.md b/Reports/2021/#171-2021.08.16.md
new file mode 100644
index 000000000..f8050522e
--- /dev/null
+++ b/Reports/2021/#171-2021.08.16.md
@@ -0,0 +1,113 @@
+# 老司机 iOS 周报 #171 | 2021-08-16
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+### 🌟 线下沙龙
+
+[@Parsifal](https://github.com/ParsifalC):我们正在周报公众号上陆续发布今年杭州场和上海场沙龙的分享文章、PPT 和视频等内容,欢迎大家继续关注(公众号回复**杭州**即可获取杭州场文章和视频)~
+
+- [基于 Bazel的 iOS MonoRepo 实践 - 张忻正](https://mp.weixin.qq.com/s/zFrKoHPBv3qz8TiwdqP8Fw)
+- [Advanced Property Wrapper in Swift - 黄智杰](https://mp.weixin.qq.com/s/psgRgIZlVDtIeQeDmUmXOw)
+- [From Idea To Product - Roc](https://mp.weixin.qq.com/s/TZHrFOU65iG7QQwP8b96-w)
+
+### 🌟 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21)
+
+[@Parsifal](https://github.com/ParsifalC):本周内参更新,1 篇高质量内容已经发布~
+
+- @陈剑强:[【WWDC21 10036】使用 SoundAnalysis 内置分类器实现声音分类](https://xiaozhuanlan.com/topic/5627914803)
+
+## 新手推荐
+
+### 🐎 [iOS 页面渲染 - UIView & CALayer](https://mp.weixin.qq.com/s/ElGEsJoh3Y1-BWlvz1yJ9w)
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):UIView 所有 iOS 开发想必都接触过,但底下的 CALayer 大家了解就相对偏少,本文适合刚入门的开发者查漏补缺。内容如下:
+
+- CALayer 是如何与 UIView 配合实现动画,以及 内部的三份树形结构:layer tree (model tree)、presentation tree、render tree
+- CALayer 在页面的渲染流程中发挥的作用,通过 CALayerDelegate 可以实现手动绘制、异步绘制
+- bounds、position、anchorPoint 等属性的介绍,并总结了 frame 与其他属性的关系
+
+## 文章
+
+### 🌟 🐢 [深入理解 Swift 代码覆盖率](https://mp.weixin.qq.com/s/uKfrC2NB3njzF1JQUt_cbg)
+
+[@Parsifal](https://github.com/ParsifalC):对于基础架构团队,输出产物的稳定性是至关重要的,尤其是像字节这样一个超大型的客户端团队内。为了保障各项 SDK 的稳定性,提高自动化测试的覆盖率是很多团队的一个选择。若你也是 Swift 的长期使用者或关注者,不难发现自从 Swift 2 开始,官方便支持了 Swift 测试代码覆盖率的统计。对于一般的项目而言,只要简单在 Xcode 中开启对应开关,就可以轻松得到项目中的覆盖率。但本文讨论的是基于分布式编译和测试场景下的 Swift 代码覆盖率,这一场景下,精准统计覆盖率就变得不那么容易了。主要原因在于分布式执行 CI 任务,是在相对隔离的环境下进行的,每次任务间的编译路径并不相同,无法简单直接累加覆盖率合成实际完整的项目木覆盖率。抖音团队通过深入研究官方提供的覆盖率测试文档,具体的做法是:
+
+- 将每个测试结果的 `profraw` 文件解析为文本格式的 `profdata` 并且统一路径
+- 合并多个 `profdata` 得到真实的覆盖率数据
+- 使用 `llvm-cov -path-equivalence` 命令完成源码路径的映射
+
+### 🌟 🐕 [Reverse Engineering UIKit to Fix Our Top Crash | PSPDFKit](https://pspdfkit.com/blog/2021/reverse-engineering-uikit/)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文是 PSPDFKit 团队通过逆向修复 UIKit bug 的实践经验,分析问题的过程十分详细,值得学习借鉴。
+
+- 崩溃问题定位,Hopper 反汇编。
+- 问题分析,拆解。
+- UIPageViewController 逆向。
+- 通过 swizzling 修复并验证。
+- 复盘总结 Floating-point precision errors are vicious。
+
+### 🐢 [听说你想写个 DNS 服务器 - 代理](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486791&idx=1&sn=2695a508ea45e43527875058ad106e6d&chksm=cf55828ff8220b990eb722b4fb149b8cd424133d05646ea7e369ab4597c1e97503714a6f20dd&token=1722840270&lang=zh_CN#rd)
+[@水水](https://www.xuyanlan.com): 作者用实际代码详细的描述如何编写一个 DNS 服务器的雏形,包括对查询包的解析,然后返回对应的响应包。
+整个流程如下:
+- DNS 服务器开启本地 UDP 服务。
+- 本地 DNS 客户端发起请求。
+- DNS 服务器收到请求后,重新构造请求包,转发到公共 DNS 服务器。
+- 当收到公共 DNS 服务器的结果后,构造响应包,将数据返回给客户端。
+
+系列关联文章 - [听说你想写个 DNS 服务器 - 记录类型扩展](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486727&idx=1&sn=a71ed08275433e15593069e010c31c02&chksm=cf5582cff8220bd96ce28f0dd8874f27064e3999792e6ad25d90a0cf2f56651278495a6927de&token=1722840270&lang=zh_CN&scene=21#wechat_redirect)
+
+### 🐎 [深入浅出贝塞尔曲线](https://juejin.cn/post/6995482699037147166)
+[@Smallfly](https://github.com/iostalks):本文详细介绍了贝塞尔曲线的定义和推导过程,以及 iOS 提供绘制曲线能力的相关类和 API。通过实现波浪动图来展现二阶和三阶贝塞尔曲线的应用。最后还介绍了在已知曲线阶数的前提下,根据起点和终点反向推导控制点的计算过程。强烈推荐不了解贝塞尔曲线实现的同学阅读。
+
+### [Stack Overflow 2021 开发者调查报告出炉,开发浪潮中的变与不变](https://mp.weixin.qq.com/s/E6R3dXGBa4YzzuekxPMgOw)
+
+[@Parsifal](https://github.com/ParsifalC):2021 年 5 月 25 日,Stack Overflow 举办的一年一度的开发者调查重新启动,就在 8 月 2 日,调查结果新鲜出炉,超过 80,000 名开发者参与了调查,JavaScript 连续 9 年获得最常用编程语言冠军,React.js 首次赶超 jQuery 成为最常用的 Web 框架,而 Svelte 后来居上夺得最受欢迎 Web 框架。Rust 连续第 6 年登顶最受喜爱语言,受到超过 86% 开发者的喜爱。我们一起看一看 2021 年,开发者发生了怎样的变化。
+
+## 摸鱼周报
+
+[@摸鱼周报 #22](https://mp.weixin.qq.com/s/JI5mlzX9cYhXJS81k1WE6A):第二十二期摸鱼周报,一起来看下本期概要:
+
+* 本期话题:聊聊 iOS 博客环境,公众号vs掘金。
+* Tips:Reachability 的使用建议,SQL 中 JOIN、UNION 的含义,如何在项目中区分 AdHoc 和 AppStore 包。
+* 面试解析:本期讲解 block 类型的相关知识点。
+* 优秀博客:如何做电量方面的优化,关于 MetricKit 的使用。
+* 学习资料:布朗大学的学生制作的「看见统计」课程;一个 Github 仓库 Hacker Laws,总结各种定律和法则。
+* 一个帮助学习正则表达式的在线工具:regex101。
+
+## 工具
+
+### [mxcl/xcodebuild](https://github.com/mxcl/xcodebuild)
+
+[@红纸](https://github.com/nianran):这是一个基于 Github Actions 的 Action,其作用是帮助开发者去构建签名打出产物包和进行单元测试。其优势在于轻量化的配置方式和 Github Action 完整的自动化体系,只需要一个配置文件即可完成整个配置。如果你的整个持续集成体系是基于 Github Action 的值得进行一试。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#172-2021.08.23.md b/Reports/2021/#172-2021.08.23.md
new file mode 100644
index 000000000..e42886f02
--- /dev/null
+++ b/Reports/2021/#172-2021.08.23.md
@@ -0,0 +1,129 @@
+# 老司机 iOS 周报 #172 | 2021-08-23
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 🌟 [WWDC 21 内参](https://xiaozhuanlan.com/wwdc21)
+
+[@Parsifal](https://github.com/ParsifalC):本周内参更新,4 篇高质量内容已经发布,总更新文章已达 92 篇,实际包含 session 内容超过 100 个~
+
+### [【WWDC21 10012 】App Clip 新特性](https://xiaozhuanlan.com/topic/2048796351)
+
+@昊泽:App Clip 是 WWCD20 的一大亮点,它提供了一种“即时使用”的方式,基于苹果提供的各种唤醒方式,让用户在特定场景下很方便地体验 App 内的核心功能。现在一年过去了,世界各地的开发者开发出了各种优秀的 App Clip。同时 Apple 提供了一种全新的 App Clip Card 的展示方式,也一并完善和优化了本地体验,并提供了命令行工具来帮助开发者们生成轻应用码。 让我们一起来看看吧。
+
+### [【WWDC21 10076】使用 Object Capture 创建 3D 模型](https://xiaozhuanlan.com/topic/8026419753)
+
+@Hays:Apple 自 2017 年推出 ARKit 以来一直在推动增强现实技术在其各个平台上的应用和发展,但 AR 内容的匮乏与高成本一直是制约开发者们投入 AR 的重要因素。在本次 WWDC 上,Apple 将 3D 模型的构建效率提升了到了前所未有的高度,RealityKit 2 框架中的新 Object Capture API 为我们提供了一种非常便捷的方式来为生活中的物体创建 3D 模型,而你需要的仅仅是为目标物拍摄几张照片。此外,配合 AR Quick Look 可以轻松将创建好的模型集成到你的应用之中。
+
+### [【WWDC21 10109】探索 Foundation 新增功能](https://xiaozhuanlan.com/topic/7093142658)
+
+@leejunhui:`Foundation` 作为最核心的系统库之一,今年带来了三大部分的新内容,分别是属性字符串,格式化器以及自动语法协议。这些内容的核心要点都表明 `Apple` 想要摒弃掉 `Objective-C` 时代留下的繁琐的 `API` 以及编程范式。
+
+### [【WWDC21 10153】基于苹果芯片的图像处理](https://xiaozhuanlan.com/topic/5796308412)
+
+@潘名扬:这篇 WWDC 的分享主要介绍了如何针对苹果芯片对图像处理应用进行优化,探索了如何充分发挥 Metal 渲染命令编码器、切片渲染、统一内存架构,以及 memoryless attachments 的优势。在文中的示例里,工程师为我们展示了如何针对苹果 GPU 的 TBDR 架构来降低应用的内存占用,减少能耗。通过本篇分享,你还可以了解到将应用中的图形运算从独立显卡迁移到苹果芯片的最佳实践。
+
+## 新闻
+
+### 🐎 ["同播共享"发布计划的更新](https://developer.apple.com/cn/news/?id=mxaeu6er)
+
+[@zvving](https://github.com/zvving):在最新的 iOS15 developer beta 6 中 SharePlay 被禁用。这意味着 iOS15 正式版发布临近,最初版本不会包含 SharePlay, SharePlay 会在后续更新版本中提供。
+
+在开发 SharePlay、GroupActivities 相关功能的朋友可以从原文下载配置文件确保开发不被中断,同时需要留意近期 App 提交不要包含 GroupActivities 授权配置,等待对应功能放开后再进行提交。
+
+## 文章
+
+### 🌟 🐎 [Making efficient use of the libdispatch (GCD) · GitHub](https://gist.github.com/tclementdev/6af616354912b0347cdf6db159c37057)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文针对 **libdispatch** 总结了很多使用技巧,列举了一些常见的误区。类似各种高效 tips 整合文章,方便大家找到自己不了解的地方深入学习。
+
+### 🐕 [微信跨平台硬件直播组件](https://mp.weixin.qq.com/s/qK73om3ueP_S6i8qp8hgHQ)
+
+[@anotheren](https://github.com/anotheren):微信视频号已提供跨平台硬件直播组件,支持移动平台(iOS/Android)、PC 平台(Windows/macOS)和嵌入式平台(以 Raspberrypi 为例)。文章简要介绍了其解决的问题以及实现的方案。相比传统的移动平台,广大云厂商早已推出了各自的成套解决方案,微信视频号这次应该是奔着相关直播硬件而来,只是不知会擦出怎样的火花。有嵌入式硬件需求,或者在设计直播组件的同学都可以仔细看看。
+
+### 🐕 [Creating Custom Parseable Format Styles in iOS 15](https://emptytheory.com/2021/08/14/creating-custom-parseable-format-styles-in-ios-15/)
+
+[@AidenRao](https://weibo.com/AidenRao):在 iOS 15 之前,为了将数字或日期转换为字符串,你通常需要多行代码,维护一个 Formatter 派生类,编码过程较复杂且不易维护。iOS 15 及更新的版本,不需要任何 Formatter,我们可以在大部分场景,一行代码搞定格式化。
+
+如果需要更灵活的格式化方式,可以自定义新的格式样式,本文实现了一个将简单的电话号码,格式化成标准美国格式电话号码的示例,413555212 → (413) - 555-1212,作为实现参考。
+
+## 摸鱼周报
+
+[@摸鱼周报 #23](https://mp.weixin.qq.com/s/1Vs50Lbo0Z27dnU-ARQ96A):第二十三期摸鱼周报来啦,一起来看下本期概要:
+
+- 话题:本期邀请 CoderStar 聊一下他的公众号和学习方法。
+- Tips:简版 PromiseKit 的设计思路;如何通过 embedded.mobileprovision 区分包类型。
+- 面试模块:isMemberOfClass、 isKindOfClass 的含义与区别。
+- 优秀博客:整理了Swift 指针、Swift 属性包裹器相关的几篇文章。
+- 学习资料:介绍三个机器学习的网站。
+- 开发工具:帮助解析 Shell 脚本的网站:explainshell。
+
+## 工具
+
+### [onefetch](https://github.com/o2sh/onefetch)
+
+[@EyreFree](https://github.com/EyreFree):Onefetch 是一款由 Rust 编写的命令行 Git 信息展示工具,它能够在终端中展示本地 Git 仓库的项目详情和代码统计等内容。使用时不需要网络连接,完全离线可用。它会自动从文本中检测开源许可证,并为用户提供有价值的信息,例如代码分发、pending、依赖数量、主要贡献者、占用磁盘大小、创建日期、代码行数等。Onefetch 可以通过命令行参数进行配置,以准确显示您想要的内容和方式:您可以自定义 ASCII/文本格式、禁用信息行、忽略文件和目录、以多种格式输出(Json、Yaml)等等。有需要的朋友们快试试吧。
+
+### [网页 ipa 一键砸壳](https://www.dumpapp.com)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):iOS 中所有 APP 上传到 APP Store 后都会被加上一层保护壳,如果我们想拿到 IPA 进行研究分析, 需要对 IPA 进行脱壳。这个平台可以实现导出全网 IPA 进行自动脱壳功能,不过有些功能需要付费才能体验。
+
+
+## 代码
+
+### [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)
+
+## 赞助者
+
+### flomo 浮墨笔记
+
+新一代卡片笔记,像聊天一样无压力输入,帮你积累知识的复利。还有极简的 API 可打通更多产品。老司机读者专属注册码(可以获得 45 天 PRO 会员):https://flomoapp.com/register2/?Mjk4Njk
+
+### 产品沉思录
+
+一份由少楠& fonter 打理的付费邮件周刊及知识库,创建于 2017 年,累计 3000+ 用户付费订阅。涵盖了产品设计,服务设计,互联网技术,经济学,社会学等领域。我们尽量选择那些半衰期较长的内容,以确保这些知识能跨越时间。欢迎访问我们的免费精选集:https://index.pmthinking.com
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#173-2021.08.30.md b/Reports/2021/#173-2021.08.30.md
new file mode 100644
index 000000000..9ce5b980b
--- /dev/null
+++ b/Reports/2021/#173-2021.08.30.md
@@ -0,0 +1,129 @@
+# 老司机 iOS 周报 #173 | 2021-08-30
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [Apple 与美国开发者就 App Store 更新达成一致,这些更新将支持开发者业务,并持续为用户带来精彩体验](https://www.apple.com.cn/newsroom/2021/08/apple-us-developers-agree-to-app-store-updates/)
+
+[@Parsifal](https://github.com/ParsifalC):本周我们推送了一则短文 - [IAP 或将不再是唯一支付方式](https://mp.weixin.qq.com/s/vK3ilfP8MqdURooXEDH7kg),文章的主要内容便来自于苹果官方的这则新闻。新闻内容比较多,但最值得我们注意的便是苹果对于 IAP 使用条款的改变。虽然目前并没有明确说明,我们可以直接在应用内使用第三方支付,但从描述上看,苹果已经做出了比较大的改变,从原来不允许引导用户使用其他支付变为了可接受邮件等方式的引导。这些变更起源于美国的开发者群体与苹果的诉讼案,因而所有变更都仍需要那边的法庭最终同意才能正式推行。
+
+## 新手推荐
+
+### 🌟 [重磅首发|闲鱼构建Flutter企业级应用开发电子书新鲜出炉](https://mp.weixin.qq.com/s/DTLgVwUjfORBY5NCd9C-8g)
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 单看标题相信大家已经知道是什么了,没错,咸鱼团队出品的企业级 Flutter 应用开发指导书籍,本书从深度,广度,以及实用性几个方面着手,切合咸鱼项目的实际经验。对于正在学习和需要进阶的同学来说,可谓是不可多得的好资料,关键还免费 😄
+
+## 文章
+
+### 🌟 🐕 [How iOS 15 makes your app launch faster](https://www.emergetools.com/blog/posts/iOS15LaunchTime)
+
+[@Leo](https://github.com/leomobiledeveloper):对于 deployment targe 是 iOS 15 或者 macOS 12 的 App 来说,苹果使用了一种新的二进制格式来存储启动时候需要 bind 和 rebase 的信息。新的格式下 bind 和 rebase 被合并存储在 LC_DYLD_CHAINED_FIXUPS 段,合并后意味着更少的安装包占用,启动时需要的 page fault 也更少,进而提高启动速度。
+
+### 🌟 🐕 [Building a token refresh flow with async/await and Swift Concurrency](https://www.donnywals.com/building-a-token-refresh-flow-with-async-await-and-swift-concurrency/)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文简述了如何使用 async/await 和 Swift Concurrency 构建刷新流,并配有流程图和代码示例,方便大家开启实践思路。
+
+- 流程了解
+- **AuthManager** 的实现
+- 网络请求实践
+
+### 🌟 🐕 [Flutter 疑难杂症系列:键盘原理及常见问题解决方案](https://mp.weixin.qq.com/s/snU-mNlmEnOUHw3I-DrJ_w)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):Flutter 的键盘、输入框在双端的实现,大致都是借助 Native 的输入能力,通过 Channel 在 Flutter 和 Native 侧进行数据的同步。具体到 iOS 上,则是通过 FlutterTextInputPlugin 调用到了 Native 的 FlutterTextInputView 上,再调用 becomeFirstResponder 实现键盘弹出。
+
+本文详细介绍了 Flutter 在如何实现:键盘调起之后页面的重绘逻辑、页面收缩动画。同时还列举了一些问题发现以及定位方法,值得细细钻研。其中Android部分机型的问题也有助于我们理解重绘的逻辑,具体如下:
+
+- 锁屏后键盘无法收回
+- Android 键盘动画卡顿
+- iOS 上搜狗输入法长按发送未换行
+- iOS 光标动画使得 CPU 飙升
+- iOS 上键盘收起之后,光标依旧存在
+- iOS12+ 长按系统输入法空格光标卡顿不灵敏
+
+### 🐎 [Why Conditional View Modifiers are a Bad Idea](https://www.objc.io/blog/2021/08/24/conditional-view-modifiers/)
+[@zvving](https://github.com/zvving):SwiftUI 中通过自定义视图修饰符(View Modifiers),能复用项目中的的定制视图逻辑,简化 View 声明代码。但是对于条件视图修饰符,并不像看起来那么美好。
+
+使用条件视图修饰符(Conditional View Modifiers),初始样式一切正常,但是当条件变化时,动画可能并不符合你的预期,状态值也会在条件变化时莫名消失。这本质与 SwiftUI 中 if-else 内部实现有关:条件变化并非修改视图属性,而是对应的不同视图——在条件变化时移除或插入。文章详细解释这些问题背后的成因,相信能帮助你更好的使用 SwiftUI。
+
+### 🐕 [降低 APP 卸载率,测试人员可以做些什么?](https://mp.weixin.qq.com/s/ogiOlV-eXkDFlGEp-pLgMQ)
+
+[@Smallfly](https://github.com/iostalks):随着移动互联网竞争白热化,各大厂商都希望能多抢占一些用户时间,App 的使用体验就变得越来越重要。对于不满足预期的 App,用户很可能会毫不留情的卸载。
+
+闲鱼借鉴了马斯洛人类需求层次结构,从安全性、功能性、稳定性、易用性、愉悦性等五个逐级递增的层次,抽象出 App 用户体验金字塔模型。并介绍了他们在各个层次上做的具体改善措施,分别是:
+* 隐私安全是底座
+* 跳出功能测试“陷阱”
+ * 探索性测试
+ * 新用户视角测试
+ * Bug Bash
+* 重视全链路性能
+* 引入可用性测试
+
+### 🐎 [Deprecating Workarounds](https://www.basbroek.nl/deprecating-workarounds)
+
+[@xiaofei86](https://github.com/xiaofei86):当我们在最新的系统版本遇到 BUG 时,往往直接判断当前版本,并提供将解决方案。这种情况下,如果下一个系统版本仍然存在此问题,就会导致线上 BUG。如果为大于当前版本的系统都应用此解决方案,如果下一个系统版本修复了此问题,那么我们的修复方案也会出现不可预知的情况。
+
+本文提供了一个小 Tips 来更好的处理这种问题。我们定义单独的方法来解决此版本的问题,并将此方法标记为在下个版本废弃,这样我们可以在升级后获得一个编译警告提醒,以便于重新判断此问题是否已经被系统修复。如果没有被修复,就继续在下一个版本提醒,如果被修复就改为在特定版本应用。
+
+## 摸鱼周报
+
+[@摸鱼周报 #24](https://mp.weixin.qq.com/s/vXyD_q5p2WGdoM_YmT-iQg):第二十四期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:跟一位刚入职某一线大厂的同学聊一下最近的面试感受。
+* Tips:设计 OC 版本的 defer 功能;使用现有证书创建 Fastlane match 格式加密文件。
+* 面试模块:离屏渲染相关知识点。
+* 优秀博客:整理了Swift 闭包相关的文章。
+* 学习资料:介绍两个仓库,一个是大家容易读错的开发词汇汇总,一个是微软出品的物联网课程。
+* 开发工具:一款免费开源的跨平台密码管理工具:KeeWeb。
+
+## 代码
+
+### [swift-custom-dump](https://github.com/pointfreeco/swift-custom-dump)
+
+[@Damien](https://github.com/ZengyiMa):swift-custom-dump 库是针对 Swift App 中的数据进行调试、Diff 以及测试功能的工具集合,除此之外还具备了自定义扩展功能,有数据调试需求的同学不妨一试。
+
+### [PreviewView](https://github.com/theoriginalbit/PreviewView)
+
+[@JonyFang](https://github.com/JonyFang):PreviewView 的作用是利用 SwiftUI 预览画布快速制作 UIViewController 和 UIView 原型。有类似需求的同学可以一试~
+
+## 赞助者
+
+### flomo 浮墨笔记
+
+新一代卡片笔记,像聊天一样无压力输入,帮你积累知识的复利。还有极简的 API 可打通更多产品。老司机读者专属注册码(可以获得 45 天 PRO 会员):https://flomoapp.com/register2/?Mjk4Njk
+
+### 产品沉思录
+
+一份由少楠& fonter 打理的付费邮件周刊及知识库,创建于 2017 年,累计 3000+ 用户付费订阅。涵盖了产品设计,服务设计,互联网技术,经济学,社会学等领域。我们尽量选择那些半衰期较长的内容,以确保这些知识能跨越时间。欢迎访问我们的免费精选集:https://index.pmthinking.com
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 抖音生活服务(上海/成都)招人,Android / iOS / Server 工程师,我们致力于将用户创建内容与用户兴趣相关业务、生活服务连接,通过生活服务带动抖音用户活跃度提升。
+>
+> 简历发送至:fuxiang.666@bytedance.com
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#174-2021.09.06.md b/Reports/2021/#174-2021.09.06.md
new file mode 100644
index 000000000..e149d1285
--- /dev/null
+++ b/Reports/2021/#174-2021.09.06.md
@@ -0,0 +1,127 @@
+# 老司机 iOS 周报 #174 | 2021-09-06
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## Apple 专家一对一
+
+### 🌟 [第二期:探索 iPadOS 技术](https://developer.apple.com/cn/accelerator/)
+
+[@Parsifal](https://github.com/ParsifalC):苹果官方的一对一咨询活动第二期来啦!2021 年 9 月 14 日(下周二)举办主题为 “探索 iPadOS 技术”的在线研讨会。本次面向周报读者免费公开报名,**扫码即可参与**。独一无二的机会,直接向 Apple 的专家学习,**报名截止日 9 月 10 日,名额有限,报满即止**。
+
+
+
+## 新手推荐
+
+### 🐕 [Flutter 里的语法糖解析,知其所然方能潇洒舞剑](https://mp.weixin.qq.com/s/Wi2jJ8KnsSnrV8Dk_eIqDg)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):以往大家都是从官方的介绍文档中认识 dart 的中的 关键字 / 语法糖 的,本文通过 [dump_kernel.dart](https://github.com/dart-lang/sdk/blob/master/pkg/vm/bin/dump_kernel.dart) 解析 dill 二进制执行文件,从编译产物的角度分析了 late 、 typedef 、extension 、 async / await 的具体实现。知道现象的你,如果也对下面的问题有所疑惑,在看了生成后函数就能明白底层是如何实现的。
+
+- 当我们访问 late 声明的对象时,如果对象还没有初始化,为什么会返回一个异常?
+- 使用 typedef 会不会对性能和运行结果产生影响?
+- extension 关键字是如何在原对象基础上实现拓展呢?
+- 为什么我们在外部对一个 Future 进行 try catch 不能捕获异常?
+
+想实操反解 dill 文件的同学可以参照这篇[文章](http://gityuan.com/2019/10/05/dart_vm/#25-%E6%9F%A5%E7%9C%8Bkernel%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F) 进行操作。
+
+## 文章
+
+### 🌟 🐕 [一文读懂字节跳动自研移动研发工具链 MBox](https://mp.weixin.qq.com/s/5_IlQPWnCug_f3SDrnImCw)
+
+[@Barney](https://github.com/BarneyZhaoooo):瓜神曾参与开发的 **Mbox** 终于开源了,文章从现状与问题开篇,详细介绍了 Mbox 诞生的背后思考、架构设计、核心功能、困难与挑战,给业内开发者带来了很好的参考。
+
+### 🐕 [APP 隐私合规](https://mp.weixin.qq.com/s/_RP6EEYfYGJn877tRdXOFA)
+
+[@AidenRao](https://weibo.com/AidenRao):作者公司的 APP 收到通信管理局,关于 APP 侵害用户权益整治专项行动中核查整改问题的通知。整改要求是 10 天内完成对有问题 APP 的整改,并提交整改情况报告。
+
+作者整理了中国网信网关于 APP 违规的认定标准,针对容易出现的违规问题,给出了整改方式建议。
+
+### 🐕 [Reverse engineering a 5 year old Xcode issue](https://swiftrocks.com/reverse-engineering-xcode-issue-crash-symbol)
+
+[@Damien](https://github.com/ZengyiMa):你是否注意到 Xcode 中的 Organizer 中如果不是你本地机器打出的包将无法进行符号解析,作者通过 Hopper 等逆向手段定位到了 DVTAnalytics 框架中的一个 Bug,并且做了对应的修复,好奇是怎么实现的吗?对逆向感兴趣的同学值得一读。
+
+### 🐢 [Swift 与 Objective-C 混编时,我们是如何将编译时间优化了 35%?](https://mp.weixin.qq.com/s/9BpfKhT1tQM_gAUNb2mQLg)
+
+[@Smallfly](https://github.com/iostalks):这篇文章比较长,详细地介绍了 58 同城在 Swift 和 Objective-C 混编过程中,编译速度优化的分析与实践。
+
+Swift 和 OC 混编,要实现 Swift 引用 OC 文件,一种方案是添加桥接文件,另一种是采用 Module 化的方式引用,第一种方案有较高的维护成本,58 采用了第二种。
+
+然而,在尝试 Module 化之后,整体的编译耗时比非 Module 化增加了,这和苹果官方给出的性能数据是不符的。
+
+经过深层次的分析,最终通过 hmap 方案实现了编译耗时优化。对其他 App 的 Module 化有比较好的借鉴意义。
+
+### 🐕 [添加编译警告的另一种方式:clang 开发入门](https://juejin.cn/post/7002999613984768031#heading-6)
+
+[@红纸](https://github.com/nianran):本文是一个 **clang** 插件开发的一个入门开发的实践文章。以检查 if 语句的过度嵌套提示 warning 为目标,对 AST 中 if 节点进行解析,输出 warning。对于没有了解过 clang 插件开发的同学,本文还是比较有意思的文章。
+
+### 🐕 [Core Data with CloudKit (一)](https://www.fatbobman.com/posts/coreDataWithCloudKit-1/)
+
+[@JonyFang](https://github.com/JonyFang):WWDC 2019 Core Data 的更新引入了 `NSPersistentCloudKitContainer`,由此可以便捷的使用 Core Data with CloudKit 来进行多设备数据同步。本篇主要对 Core Data with CloudKit 的基础介绍,内容大概为:
+
+1. Core Data with CloudKit 的局限性
+2. Core Data with CloudKit 的优点
+3. 简介 Core Data 和 CloudKit
+4. Core Data 对象 vs CloudKit 对象、
+
+### 🐢 [Flutter Fish Redux 2.0 架构演进实践](https://mp.weixin.qq.com/s/5LUCFZWts9Q0lUNqtocADQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Fish-Redux 作为 Flutter 状态管理工具已经开源已久,也在大量应用和业务中被验证,特别是咸鱼。但随着业务和场景的复杂度不断增长,在有些场景下显得捉襟见肘,无法很好的满足,于是有了此次架构的演进,致力于解决复杂页面编排,动态 AB 问题,以及提升灵活度。
+
+## 摸鱼周报
+
+[@摸鱼周报 #25](https://mp.weixin.qq.com/s/LLwiEmezRkXHVk66A6GDlQ):第二十五期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:本期跟竹立交流一下关于求职和学习方法的话题。
+* Tips:如何清除启动图的缓存;如何优化 SwiftLint 流程。
+* 面试模块:本期解析一道 GCD 死锁题。
+* 优秀博客:整理了 Swift 泛型相关的几篇文章。
+* 学习资料:Adobe 的调色板网站:Adobe Color Wheel;知识小集的 Tips 汇总:Awesome-tips。
+* 开发工具:管理 Github 项目 Star 的工具:OhMyStar。
+
+## 代码
+
+### [swift-atomics](https://github.com/apple/swift-atomics)
+
+[@Parsifal](https://github.com/ParsifalC):去年 10 月,Apple 正式推出并开源了 swift-atomics,我们可以通过它使用纯 Swift 代码实现高性能的无锁并发数据结构。而近日,swift-atomics 终于发布了 1.0.0 版本,这也意味着 swift-atomics 有了一个正式的稳定版。
+
+延伸:
+- [Introducing Swift Atomics](https://swift.org/blog/swift-atomics/),非常详尽的官方介绍文档。
+- [【译】SE-0282 Low-Level Atomic Operations ⚛︎](https://kemchenj.github.io/2020-10-02/):周报编辑四娘翻译了 swift-atomics 的原始 Proposal,有助于更全面的了解它。
+
+## 赞助者
+
+### flomo 浮墨笔记
+
+新一代卡片笔记,像聊天一样无压力输入,帮你积累知识的复利。还有极简的 API 可打通更多产品。老司机读者专属注册码(可以获得 45 天 PRO 会员):https://flomoapp.com/register2/?Mjk4Njk
+
+### 产品沉思录
+
+一份由少楠& fonter 打理的付费邮件周刊及知识库,创建于 2017 年,累计 3000+ 用户付费订阅。涵盖了产品设计,服务设计,互联网技术,经济学,社会学等领域。我们尽量选择那些半衰期较长的内容,以确保这些知识能跨越时间。欢迎访问我们的免费精选集:https://index.pmthinking.com
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#175-2021.09.13.md b/Reports/2021/#175-2021.09.13.md
new file mode 100644
index 000000000..48a6548f7
--- /dev/null
+++ b/Reports/2021/#175-2021.09.13.md
@@ -0,0 +1,126 @@
+# 老司机 iOS 周报 #175 | 2021-09-13
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [有消息了,找你的。](https://mp.weixin.qq.com/s/FPml7P1RHTc0QBbFb3TKbg)
+
+[@Parsifal](https://github.com/ParsifalC):苹果今年的秋季发布会正式官宣将在北京时间 9 月 15 日凌晨 1 点举行,iPhone 13 和 iPad 9 等主要硬件设备有望悉数登场,另外近年来一直传言的 AR & VR 领域也值得期待是否会在这次有所透露~
+
+## 新手推荐
+
+### 🐕 [灵动的适配器模式 | Flutter 设计模式](https://mp.weixin.qq.com/s/w0msBQnDzkZ4rsL1EtPyVA)
+
+[@邦Ben](https://weibo.com/linwenbang):本文以 Flutter 的角度来说明了 Adapter 模式的用法,如果是 Android 的同学会对这个模式更为熟悉。文中给出了具体的例子,感兴趣的同学可以一看。
+
+## 文章
+
+### 🌟 🐕 [iOS 端容器之 WKWebView 那些事](https://mp.weixin.qq.com/s/39u-48KvO-Fmkn9t0nJ-fA)
+
+[@JonyFang](https://github.com/JonyFang):本文主要总结了阿里在端容器设计开发过程中,WKWebView 使用上遇到的一些经典问题和对应的解决办法,能够为受此类问题困扰的同学提供一些帮助。
+
+主要细述了 3 件事情:
+- WKWebView 使用中的典型问题有哪些?
+- 为什么会出现这些问题?
+- 这些问题的解决办法有哪些?
+
+### 🌟 🐕 [iOS 崩溃日志在线符号化实践](https://mp.weixin.qq.com/s/MIun-eV4_J1hXGDRjGoLaw)
+
+[@Barney](https://github.com/BarneyZhaoooo):由百度 App 技术出品的崩溃符号化实践,从什么是符号化等最基础的概念入手,深入浅出,详细描述了在线符号化落地的全过程。
+
+- 什么是符号化
+- 符号化原理
+- 本地符号化
+- 在线符号化
+- 效果和收益
+
+### 🐢 [iOS 符号解析重构之路](https://mp.weixin.qq.com/s/TVRYXhiOXIsMmXZo9GmEVA)
+
+[@水水](https://www.xuyanlan.com):本文介绍了几种单机解析工具的简单使用,并详细的介绍了字节跳动终端技术的在线符号解析服务的历史方案探索路程,结合最终方案深入的介绍了符号解析原理相关知识。
+读者能够通过此文深入的了解符号解析的原理,也能为正在搭建符号解析平台的读者提供参考。
+
+> WWDC 21 内参中的 [iOS 符号化:基础与进阶](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491945&idx=1&sn=0d320492230940db88e34887dee96b76&chksm=eaa17e62ddd6f7747acf2fa6d86a9cf4aaf8e0ba6fd18a9d374b1ffcfbc1ca2e1a65c2cf9cc5&token=1941754559&lang=zh_CN#rd) 一文也值得大家学习。
+
+### 🐕 [再探ARC,Autoreleasepool,NSString— —由一场直播 OOM 引发的故事](https://mp.weixin.qq.com/s/oU9DWR4OP8DMp6smMhIxZg)
+
+我们在日常的开发中,可能不会过多的关注内存的问题,因为 ARC 通常可以帮我们避免 99% 的内存泄漏问题,但是,ARC 毕竟不是万能的,对于剩下的 1% 内存问题,却可能造成很大的影响。快手最近就遇到了一个由 NSString 引发 的OOM 问题,本文详细回顾了问题的原因以及如果定位和解决的。
+
+### 🐕 [在 SwiftUI 中使用 UIKit 视图](https://mp.weixin.qq.com/s/QEDd9cIHi3lk0O63fc-ApQ)
+
+[@zvving](https://github.com/zvving):SwiftUI 组件与细节功能日益完善,而实际项目中,但仍有大量的事情需要基于 UIKit 实现。如何封装 UIKit 组件,使其可以在 SwiftUI 中应用,怎样提供 SwiftUI 风格的调用方式,选择不同方案时又要注意哪些问题?本文从二者生命周期的不同出发,再通过实际代码带你了解 SwiftUI 使用 UIKit 的具体过程。
+
+> 来自作者自荐:[@东坡肘子](https://www.fatbobman.com/)
+
+### 🐕 [一个 JavaScriptCore 框架中对象与 Timer 引发的死锁问题内幕](https://mp.weixin.qq.com/s/ywYj886iVoU3OvcV4pAC6g)
+
+[@Smallfly](https://github.com/iostalks):本文来自快手大前端团队,介绍了一个 Main Thread 与 JSC Heap Collector Thread 互相等待发生的死锁问题,并分享了相应的解决方案。其中详细的描述分析、验证、解决问题的过程,有不错的参考价值。
+
+### 🐕 [Preventing Data Races Using Actors in Swift](https://swiftsenpai.com/swift/actor-prevent-data-race/)
+
+[@享耳先森](https://github.com/iblacksun):数据竞争一直是并行编程下的难点,其往往难以检测与解决。本文先介绍了数据竞争的的基础,再介绍 Swift 5.5 引入的 Actor 如何优雅的解决这个问题。
+
+### 🐢 [Flutter 多引擎支持 PlatformView 以及线程合并解决方案](https://mp.weixin.qq.com/s/6aW9vbithMWTOJ_PGniQTA)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):在多引擎使用 Flutter 时,会遇到一些问题,本文详述了使用 PlatformView 时遇到的问题。解决了 ``普通多引擎``与``轻量化多引擎`` 情况下 Platform Task Runner 与 GPU Task Runner (Raster Task Runner) 合并的问题,并以 PR 的方式合入了 Flutter 主分支。其中对源码的讲解十分有价值,有助于大家理解 engine 层的四大 Task Runner 是如何工作的。
+同时本文还介绍了给 Flutter 提 PR 时的一些步骤与经验。
+
+### 🐎 [ARC 下还有 __NSStackBlock__ 吗](https://dengweijun.com/arc-nsstackblock-31c0c1d493974db5bd7f278dd20e223a)
+
+[@J_Knight_](https://github.com/knightsj):在 ARC 下,block 在赋值给强引用时会被复制到堆上,成为 __NSMallocBlock__ 类型的 block。本文作者结合代码介绍了如何在 ARC 下生成 __NSStackBlock__ 类型的 block 的方法,以及相关的 llvm 相关的在这方面做的优化。
+
+## 摸鱼周报
+
+[@摸鱼周报 #26](https://mp.weixin.qq.com/s/PnUZLoyKr8i_smi0H-pQgQ):第二十六期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:跟熊大聊一下独立开发和音视频开发。
+* Tips:对节流和防抖的再讨论;关于 TestFlight 外部测试的一些介绍。
+* 面试模块:本期解析 KVO 的实现原理。
+* 优秀博客:收录了一些 RxSwift 相关的文章。
+* 学习资料:靛青早期写的 RxSwift 学习教程。
+* 开发工具:公众号文章同步工具 Wechatsync。
+
+## 代码
+
+### [URLServiceRouter](https://github.com/lightank/URLServiceRouter)
+
+[@EyreFree](https://github.com/EyreFree):URLServiceRouter 是一个用 Swift 语言开发的基于 URL 的路由分发库,由一个高自由度的 nodeTree 和 RPC 来实现,可使开发者在 App 中很方便地实现诸如测试环境和生产环境切换之类的工作。
+
+## 赞助者
+
+### flomo 浮墨笔记
+
+新一代卡片笔记,像聊天一样无压力输入,帮你积累知识的复利。还有极简的 API 可打通更多产品。老司机读者专属注册码(可以获得 45 天 PRO 会员):https://flomoapp.com/register2/?Mjk4Njk
+
+### 产品沉思录
+
+一份由少楠& fonter 打理的付费邮件周刊及知识库,创建于 2017 年,累计 3000+ 用户付费订阅。涵盖了产品设计,服务设计,互联网技术,经济学,社会学等领域。我们尽量选择那些半衰期较长的内容,以确保这些知识能跨越时间。欢迎访问我们的免费精选集:https://index.pmthinking.com
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#176-2021.09.27.md b/Reports/2021/#176-2021.09.27.md
new file mode 100644
index 000000000..de17600de
--- /dev/null
+++ b/Reports/2021/#176-2021.09.27.md
@@ -0,0 +1,138 @@
+# 老司机 iOS 周报 #176 | 2021-09-27
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 🌟 通知
+
+[@Parsifal](https://github.com/ParsifalC):国庆长假即将到来,周报也将进入短暂休刊,**下一期发布时间将会是 10.18 号**,提前祝大家长假愉快~
+
+## 新闻
+
+### 🌟 得物技术 iOS 专场线下沙龙一期圆满结束
+
+[@Parsifal](https://github.com/ParsifalC):9.25 日上周六,我们在上海与得物技术一起联合主办了 iOS 专场沙龙活动。我们邀请到了 4 位嘉宾前来分享。他们分别来自于得物技术、字节跳动和阿里巴巴团队,主题涵盖 《得物 iOS 工程演进之路》、《字节跳动自研移动研发工具链 MBox》、《视频特效揭秘》和《基于 MNN 的移动端人工智能实践》。大家的参与热情远超我们预期,甚至现场还临时开了一个分会场,感谢所有人的支持~**活动相关的 PPT 和视频等资料我们正在整理之中,一切就绪之后便会在周报公众号及时发布。**
+
+### 🌟 [Back-deploy concurrency 已合并在 Swift 5.5 Release](https://github.com/apple/swift/pull/39342)
+
+[@Parsifal](https://github.com/ParsifalC):Swift Concurrency 的向后兼容的提案已于近日被 merge 进 Swift 5.5 的发布分支中,这就意味着 Concurrency 特性并不是 iOS 15 独有了,我们最低可在 iOS 13 中使用该特性。各平台最低支持版本为 macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0。值得一提的是,微信目前最低支持 iOS 11,按目前迭代速度最迟 23 年,将很可能提到 iOS 13+。
+
+> 由 [LeeCenY](https://github.com/LeeCenY) 推荐收录
+
+### [Flutter 2.5 版本发布](https://medium.com/flutter/whats-new-in-flutter-2-5-6f080c3f3dc)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 官方 9 月 9 日正式发布了 2.5 版本,本次版本关闭了 4600 多个 issues,同时包含了诸多性能和工具上的优化,当然也有一些组件及插件上的更新:
+
+- 性能优化
+ - 光栅化提升,时间缩减了 2/3
+ - UI isolate 事件循环策略优化,帧处理现在优先于处理其他异步事件
+ - GC 提升,使得未被使用图像内存能被及时回收
+ - 消息通道性能提升 50%
+ - Flutter 构建适配 Apple Silicon M1
+ - Dart 2.14, 新的语言格式化和特性,以及 lint
+
+- Widget 更新
+ - Android 全屏模式适配
+ - Float Action 更新
+ - ListView 底部和滚动条优化
+ - ScrollMetricNotification
+ - Android 设备上相机使用增强
+
+- DevTools
+ - 事件追踪能力增强
+ - 卡顿诊断加强
+ - CPU Flame 增强
+ - Widget Inspector 组件信息更加详细
+
+### [App Store 现已开放 iOS 15 和 iPadOS 15 app 提交](https://developer.apple.com/cn/news/?id=f87q5n2j)
+
+[@Parsifal](https://github.com/ParsifalC):9 月 14 日起 App Store Connect 已经开放 iOS 15 和 iPadOS 15 App 的提交,同时苹果宣布自 2022 年 4 月起,所有提交至 App Store 的 iOS 和 iPadOS app 都必须使用 Xcode 13 和 iOS 15 SDK 构建。
+
+## 文章
+
+### 🌟 🐢 [Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述](https://mp.weixin.qq.com/s/UaQUkdTboYGU0_VYiAooVw)
+[@Kyo](https://github.com/KyoLi):许多人期待已久的支付宝动态化方案 `Cube` 终于公开了,相比较于 Weex 或者 Flutter 这些跨平台方案,`Cube` 更加轻量级一些,尤其在首页卡片这类应用场景下非常适用。实际上,笔者个人也认为,在很多业务场景,这种自研的轻量跨平台动态化方案,其实是更好的选择,可以在技术上更加自主可控。本文是系列文章的第一篇,从项目背景、整体架构、应用场景上做了说明,期待后续的文章。
+
+### 🌟 🐢 [企业微信超大型工程-跨全平台UI框架最佳实践](https://mp.weixin.qq.com/s/JdQmgQ57nWQM99JW_ueFVg)
+[@折腾范儿_唯敬](https://www.weibo.com/agvicking/home?wvr=5):企业微信这次给我们带来了他们在 Flutter 跨平台方面的深度探索。企业微信自身的特点是大量业务逻辑已经抽离为 C++ 的跨平台模块,但各端的 UI 依然还是独立的代码与框架,因此他们对 Flutter 的诉求上定位相当的清晰,那就是“跨平台的UI渲染”。本文重点从,native 与 Flutter 的混合栈开发模式,到单引擎/多引擎的复杂交互实现。从 Flutter 与 native 与 c++ 的通信通道建设,到 Flutter 的性能与体验优化。同时还展现了企业微信庞大的 Flutter 一系列开发提效工具链,非常的实用也非常的强大。最后文章末尾稍微提了一些他们在 Flutter 动态化方面的探索,只是写的非常浅,而且也是基于别的 DSL/Layout 框架,本质上已经脱离了 Flutter 这个整体框架,单独借用其渲染模块,对 Flutter 动态化有兴趣的读者,更推荐深入去了解他们在文中提到的另外 2 种具体框架的动态化实践
+
+### 🐕 [Xcode 13 Release Notes](https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes)
+
+[@Smallfly](https://github.com/iostalks):本周 Xcode 13 正式版发布,包含 iOS 15,iPadOS 15,tvOS 15,watchOS 8 以及 macOS Big Sur 11.3 SDK。Xcode 13 需在 macOS 11.3 及以上版本运行,支持 iOS 9,tvOS 9,watchOS 2 及以上系统设备调试。
+
+本次更新包含 Swift、Clang、Linking 等二十几个模块的新特性,建议阅读原文了解全貌。
+
+> 另外特别说明一下,Xcode 13 正式支持了 Vim,Vim 党奔走相告。
+
+### 🐕 [The difference between Thread.sleep() and Task.sleep()](https://trycombine.com/posts/thread-task-sleep/)
+
+[@anotheren](https://github.com/anotheren):线程的休眠与任务的休眠,正如它们名字的字面意思。`Thread.sleep()` 是一个旧方法,来自 `Foundation`,它会在指定的时间内卡住线程(CPU无法响应其他工作);`Task.sleep()` 是全新的 async 方法,来自 `Swift Concurrency`,它只会让当前的 Task 暂停/休眠指定时间,而不是阻止线程,CPU 可以继续其他任务。更详细的对比与案例,请阅读原文。
+
+### 🐕 [Linting vs Formatting: A Swift Guide Part 1](https://jasonzurita.com/linting-and-formatting-swift-part-1/) [Part 2](https://jasonzurita.com/linting-and-formatting-swift-part-2/)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):Part 1 对 Linting 与 Formatting 的概念进行了明确,举个例子:Linting 包含 检查函数的圈复杂度、强制拆包等,Formatting 包含 code style 等。Part 2 推荐了一些工具如 [tailor](https://github.com/sleekbyte/tailor)、 [SwiftLint](https://github.com/realm/SwiftLint) 等,并介绍了这些工具在 PR 或 CI 中的最佳实践。
+
+### 🐕 [关于 Swift Package Manager 的一些经验分享](https://mp.weixin.qq.com/s/s2GZ13PVdVa5t-SABArtdA)
+
+[@四娘](https://kemchenj.github.io/):这是一篇来自字节跳动团队的 SPM 经验分享,介绍了 SPM 基本的使用方式,团队内部的实践经验,常见问题以及与 Cocoapods 的对比。
+
+### 🚧🐕 [迁往 Swift 5.5 Concurrency 之路:重构方式的选择](https://imtx.me/blog/migrate-to-swift-5-5-concurrency-choices-of-refactor-method/)
+
+[@极速男孩](https://github.com/ztlyyznf001/):苹果在 Swift 5.5 中加入了 Concurrency 的支持,最早在 iOS 15 上支持,但是最近苹果完成了 Back-Deploy 的开发支持 iOS 13 以上的系统。本文主要介绍了如何用 Xcode 中的 Refactor 工具将你的老的回调方法迁移到 async await 方法中去。
+
+### 🐕 [Alibaba iOS 工程架构腐化治理实践](https://mp.weixin.qq.com/s/gS9yC4HUWxi0vkjQPdo5tw)
+
+[@红纸](https://github.com/nianran):本文为作者在工程架构上的腐化治理实践,其主要问题是初期没有明确的项目规范导致工程环境混杂,出现一系列的蝴蝶效应:头文件都添加到了 search path -> import 没规范 -> 模块依赖没有补全 -> 循环依赖,模块强耦合 -> 子项目没办法打包 -> Swift 没办法进行。
+
+面对这样一个混杂的工程环境,作者从依赖树开始着手分析,四象限分层治理模块和依赖。利用自动化脚本,分析模块依赖关系、补全模块间依赖、自动生成 umbrella 头文件、修改不规范头文件等等来对腐化的工程进行整治。光治理还不够,为了防止项目继续腐化,在构建流水线末端设置构建卡口,设置规则防止不合规的代码继续产生。
+
+### 🐎 [你真的了解符号化么?](https://mp.weixin.qq.com/s/6Odq8JTYXL0bA8xyWEO1Og)
+
+[@Jimq](https://github.com/waz0820):周报第 175 期推介了两篇关于符号化的文章,分别来自字节和百度,本篇文章来自搜狐,可以对照着一起看。字节文侧重于符号化的在线解析,针对在 Linux 服务器上规模化部署的痛点,对最终方案的实现原理、解析流程中每个节点的具体实现进行了深入讲解。百度文本地符号化与线上符号化并重,内容比较全面。本文侧重于 macOS 上的本地符号化,详细列举了相关参数、流程和工具,更加规整实用,方便开发者个人快速上手及日后查阅。
+
+## 摸鱼周报
+
+[@摸鱼周报 #27](https://mp.weixin.qq.com/s/WvctY6OG1joJez2g6owroA):第二十七期摸鱼周报来啦,一起来看下本期概要:
+
+* 访谈内容:跟 RunsCode 聊聊编程和兴趣爱好,以及如何在 1min 之内复原魔方😏。
+* Tips:iOS 识别虚拟定位调研;使用 App Store Connect API Key 解决 Fastlane 双重验证问题。
+* 面试模块:KVC 取值和赋值过程的工作原理。
+* 优秀博客:关于 Combine 的相关文章推荐。
+* 学习资料:阮一峰最新发布的 C 语言入门教程,GitHub 漫游指南。
+* 开发工具:Xcode 工程管理工具 XcodeProjects。
+
+## 代码
+
+### [ScriptWidget](https://github.com/everettjf/ScriptWidget)
+
+[@JonyFang](https://github.com/JonyFang):ScriptWidget 开源了,使用 React JSX 样式的代码产生 iOS 上的小组件,repo 目前仅支持了 iOS,也是 SwiftUI 动态化生成界面的雏形。
+
+## 赞助者
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#177-2021.10.18.md b/Reports/2021/#177-2021.10.18.md
new file mode 100644
index 000000000..1ee9530dc
--- /dev/null
+++ b/Reports/2021/#177-2021.10.18.md
@@ -0,0 +1,132 @@
+# 老司机 iOS 周报 #177 | 2021-10-18
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [王炸候场中,19 号等你来。](https://mp.weixin.qq.com/s/5k9_up9CdWHVF5J8zzKSHg)
+
+[@Parsifal](https://github.com/ParsifalC):北京时间 10 月 19 日凌晨 1 点,也就是明天凌晨,苹果将举办新一期的硬件发布会。市场预期苹果将会发布 M1X 的 MacBook Pro,考虑换代的朋友们可以准备起来了~
+
+## 新手推荐
+
+### 🐕 [从《虾票票》带你入门 iOS 系列](https://mp.weixin.qq.com/s/lj1zYvVitD6v7z0gjl13qg)
+
+[@享耳先森](https://github.com/iblacksun):这是 [Bo2SS](https://bo2ss.ml) 在公众号连载的系列文章,适合想从零入门 iOS 的同学,建议和 Apple 的教程一起阅读,目前连载到第四篇:
+- [从《虾票票》带你入门 iOS(1)—— 定位与目标](https://mp.weixin.qq.com/s?__biz=Mzg3MzU3ODIxNg==&mid=2247484201&idx=1&sn=bbc328b36d7bcd5737d6508dcc2a03b2&chksm=cedca8aef9ab21b8bb10a5cc04e349c58b257e6a24886255c19373dac7265bd0dc7356f82636&scene=178&cur_album_id=1755942094336000006#rd)
+- [从《虾票票》带你入门 iOS(2)—— iOS 简史与工程创建](https://mp.weixin.qq.com/s?__biz=Mzg3MzU3ODIxNg==&mid=2247484230&idx=1&sn=5570b91784500b2da61e7779d095a302&chksm=cedca8c1f9ab21d72ed3368e9613e25a385ae37ff1840834f6ef5ddd24caeff4ffb2700ff153&scene=178&cur_album_id=1755942094336000006#rd)
+- [从《虾票票》带你入门 iOS(3)—— iOS 常用 UI 组件](https://mp.weixin.qq.com/s/lj1zYvVitD6v7z0gjl13qg)
+- [从《虾票票》带你入门 iOS(4)—— 调试](https://mp.weixin.qq.com/s?__biz=Mzg3MzU3ODIxNg==&mid=2247484371&idx=1&sn=2f1e8cb8f074114ed548f4da3bc9f77d&chksm=cedca854f9ab2142ad67c2a76ab2774fb26f6fbf14bddedaef093eff753016983b84022de47c&scene=178&cur_album_id=2056906778021298177#rd)
+
+> 自荐人 [Bo2SS](https://bo2ss.ml)
+
+## 文章
+
+### 🌟 🐢 [Telegram-iOS 源码导读](https://hubo.dev/2020-05-07-source-code-walkthrough-of-telegram-ios-part-1/)
+
+[@AidenRao](https://weibo.com/AidenRao):Telegram 是市场上最受欢迎的即时通讯工具之一,其 MAU 已突破 5 亿。大多数 Telegram 客户端应用程序都是开源的,以证明其安全性,这是一系列关于 Telegram-iOS 源码的文章。
+
+该代码库展示了它对其他 iOS 工程师,会遇到的许多实际工程问题的解决方案。例如可靠的网络、安全存储、复杂的列表 UI、对系统控制器的自定义等。
+
+基础:
+[Telegram-iOS: Part 1](https://hubo.dev/2020-05-07-source-code-walkthrough-of-telegram-ios-part-1/),[Telegram-iOS: Part 2](https://hubo.dev/2020-05-11-source-code-walkthrough-of-telegram-ios-part-2/),[Telegram-iOS: Part 3](https://hubo.dev/2020-05-15-source-code-walkthrough-of-telegram-ios-part-3/)
+
+协议:
+[Telegram-iOS Part 4: MTProto Connections](https://hubo.dev/2020-06-05-source-code-walkthrough-of-telegram-ios-part-4/)
+
+UI 架构:
+[Telegram-iOS Part 5: AsyncDisplayKit](https://hubo.dev/2020-06-14-source-code-walkthrough-of-telegram-ios-part-5/),[Telegram-iOS Part 6: Bubbles](https://hubo.dev/2020-06-22-source-code-walkthrough-of-telegram-ios-part-6/)
+
+内容消费:
+[Telegram-iOS Part-7: Link Preview and Instant View](https://hubo.dev/2020-07-12-source-code-walkthrough-of-telegram-ios-part-7/)
+
+> 由 [0x1306a94](https://github.com/0x1306a94) 推荐收录
+
+### 🌟 🐕 [AttributedString——不仅仅让文字更漂亮](https://mp.weixin.qq.com/s/4P8hX7WoBUeUtvBOS4Tx7g)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文从四个方面介绍了 WWDC 2021 上公布的新功能 AttributedString。
+
+- **AttributedString vs NSAttributedString** 对比
+- **基础用法**
+- **本地化**
+- **Markdown 解析**
+
+### 🐎 [Swift-DocC is Now Open Source](https://swift.org/blog/swift-docc/)
+[@Smallfly](https://github.com/iostalks):WWDC21 苹果发布了一款新的 Swift 文档编译器 Swift-DocC,它能更高效的把代码注释生成文档,以及为代码库生成综合性的在线文档。它的文档 API 支持 Markdown 格式的注释和长文,甚至能够集成图片。
+
+Swift-DocC 被集成在 Xcode 13 的工具链中,帮助用户在代码中写出更详细的文档。现在苹果宣布 Swift-DocC 正式开源了,阅读原文可了解更多特性和用法。
+
+### 🐎 [Apple documentation | canOpenURL:](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc)
+
+[@J_Knight_](https://github.com/knightsj):来自苹果官方文档:在 iOS 15后,限制了 LSApplicationQueriesSchemes 数量最多为50个。详情可以见文档中的内容。
+
+> 推荐阅读:[LSApplicationQueriesSchemes](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/plist/info/LSApplicationQueriesSchemes)
+
+### 🐕 [The Mysterious CodableWithConfiguration Protocol](https://www.andyibanez.com/posts/the-mysterious-codablewithconfiguration-protocol/)
+
+[@xiaofei86](https://github.com/xiaofei86):每年苹果都会在 WWDC 为我们带来许多新的 API,但那些不是 “big things” 的更新并不会在 Session 中提及。本篇文章将为你介绍一个有趣新接口 —— CodableWithConfiguration。
+
+如果你已经知道如何使用 Codable,那么你可以非常快速地开始使用这个新的 API。CodableWithConfiguration 允许你做与普通 Codable 完全相同的事情 —— 对来自不同格式的对象进行序列化,例如 JSON。
+
+但 CodableWithConfiguration 允许我们将自定义的配置对象注入可编码类型的编解码过程。你可以根据配置灵活地控制编解码过程,例如:有选择地解码或编码一些键,或者转换它们。这打开了一个充满可能性和更整洁代码的世界,阅读原文了解更多的使用场景。
+
+### 🐎 [Faster Builds with Code Signing Hacks](https://eisel.me/signing)
+
+[@老峰](https://github.com/gesantung):Code Sign 是为数不多的增量构建与 Clean 构建所需的时间一样的耗时操作之一,而且应用程序的规模越大,需要的时间也越长。本文介绍了在 Debug 环境下通过配置签名算法、签名规则等技巧,加快 Code Sign 速度,提升构建效率的轻量方案。
+
+## 摸鱼周报
+
+[@摸鱼周报 #29](https://mp.weixin.qq.com/s/TVBQgYuycelGBwTaCSfmxQ):第二十九期摸鱼周报来啦,一起来看下本期概要:
+
+* Tips:关于低电量模式的一些介绍。
+* 面试模块:Objective-C 的消息机制(下)。
+* 优秀博客:整理了几篇 Swift Tips 的文章。
+* 学习资料:gitmoji:一个 GitHub 提交信息的 emoji 指南😎。
+* 开发工具:能够使用 Swift 开发安卓应用的工具:SCADE;可视化解析 `.ndjson` 文件的工具:Privacy-Insight。
+
+本期访谈内容独立成篇了,介绍一位拿下微软 iOS 岗位 Offer 的朋友准备和面试的经历,完整内容可以查看:[人物访谈--微软Offer之路](https://mp.weixin.qq.com/s/nh9Rr7lFMy49bEUMWQO3-g)
+
+## 工具
+
+### [tuist](https://tuist.io)
+
+[@红纸](https://github.com/ninaran):Tuist 是一个命令行工具,其旨在 Xcode 项目的生成、维护和交互。其采用了清单格式来描述项目(使用 Swift 编写),可以彻底解决 xcode 项目文件的代码冲突问题。支持 Cocoapods、Carthage、SPM。
+
+## 代码
+
+### [swift-markdown](https://github.com/apple/swift-markdown)
+
+[@Parsifal](https://github.com/ParsifalC):苹果官方开源的 Markdown 工具,基于 Swift 编写,参考的是 GitHub 风格解析器。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#178-2021.10.25.md b/Reports/2021/#178-2021.10.25.md
new file mode 100644
index 000000000..6e4dea057
--- /dev/null
+++ b/Reports/2021/#178-2021.10.25.md
@@ -0,0 +1,107 @@
+# 老司机 iOS 周报 #178 | 2021-10-25
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [Tech Talks 2021](https://developer.apple.com/cn/tech-talks/)
+
+[@老峰](https://github.com/Gesantung):苹果上周宣布启动开发者参与的全新在线系列演讲 [Tech Talks 2021](https://developer.apple.com/cn/tech-talks/),包括 100 多场直播和超过 1500 小时的会谈时间,将在接下来的 8 周内展开。Tech Talks 将使开发者们有机会直接与 Apple 专家交流,深入了解新技术、解决疑难杂症以及相关指南与工具的理解,同时也包括分享他们在开发 App 与在 App Store 分发 App 的经验。[Tech Talks 2021](https://developer.apple.com/cn/tech-talks/) 面向 Apple 开发者计划和 Apple 开发者企业计划的现有成员开放,报名已开启,每两周会发布新演讲与会谈时间预约。关于日程和报名的信息,可访问 [Tech Talks 2021](https://developer.apple.com/cn/tech-talks/),感兴趣的 iOSer 快去报名吧~
+
+## 文章
+
+### 🌟 🐕 [Flutter 难点问题之 GPU 后台 Crash](https://mp.weixin.qq.com/s/KVux8rYCPXcvDODUskinBQ)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文介绍了后台访问 GPU 导致 App 后台被杀的修复方案。通过在主线程接收 App 退到后台的通知(退到后台即表示 GPU 不可用),并设置一个 bool 变量,在实际渲染的线程中根据 bool 变量,来进行分支处理:GPU 可用时照常使用 GPU 渲染;GPU 不可用时降级用 CPU 渲染。一般使用 SyncSwitch 时,语义都带 ``GpuDisabled`` ,因此 SetIfTrue 中才是 CPU 渲染的降级调用。
+
+同时本文还介绍了通过 ``xxx_impl.h`` 来暴露方法,既免去了解决过多头文件的担心,也得以使改动通过单元测试。
+
+### 🌟 🐕 [探究 iOS 编码对包大小的影响](https://juejin.cn/post/7015861914370736136)
+
+[@JonyFang](https://github.com/JonyFang):文中以分析属性为例子,从二进制文件层来分析编码对包大小的影响。介绍了属性、方法调用、函数调用、direct 方法调用、block 调用在汇编下的区别,能让我们对编写的代码在汇编时的表现有大概的认知。推荐阅读~
+
+### 🐎 [MetalKit.org 总结:What’s new in Metal at WWDC21](https://metalkit.org/2021/06/18/whats-new-in-metal-at-wwdc21/)
+
+[@莲叔](https://github.com/aaaron7):WWDC2021 Apple 发布了一系列激动人心的新的 Metal Feature。本篇文章的作者从用 Metal 来实现光线跟踪的各个环节的关键技术为例,说明了一系列新的 API 的使用场景和作用,比如 intersection query、Bindless 等新的 API 机制,以及 Xcode 针对光线跟踪的调试器,能够可视化算法中的许多关键信息。文章整体比较专业,不太适合新手观看,对于图形图像有开发经验的同学可以研究一下。
+
+### 🐎 [macOS 上 Flutter Desktop 与 Electron 的性能对比](https://mp.weixin.qq.com/s/uTHi8SfCvXJfbie1A1YNVA)
+
+[@Damien](https://github.com/ZengyiMa):Electron 和 Flutter Desktop 是当下最流行的 2 种跨端方案,本文分别从应用大小、运行效率、渲染机制、内存、帧数、CPU/GPU 等方面做了详细的对比。对 2 者的比较感兴趣的同学不妨一读。
+
+### 🐕 [微信终端自研 C++ 协程框架的设计与实现](https://mp.weixin.qq.com/s/c17DaD7JbKlDFT6J8haEFw)
+
+[@老驴](https://weibo.com/u/6090610445):微信客户端团队自研了一套跨平台 C++ 协程框架:owl(然而还没有开源)。文中微信团队解释了为什么需要重复造轮子,以及在设计过程中对语法,堆栈,调度,并发的一些思考。文章中干货不少,适合开发底层框架的同学阅读学习。(还是催一下,啥时候开源哈)
+
+### 🐕 [干货:探秘 WKWebView](https://mp.weixin.qq.com/s/l9D4V0ON3uJ0HfsJ7bpJiQ)
+
+[@享耳先森](https://github.com/iblacksun):讲 `WKWebView` 应用的文章之前推过不少,这篇算是最全的了,基本包含了使用层的方方面面,特别是缓存及 `Cookie` 机制,建议阅读。
+
+### 🐢 [SwiftUI by Example](https://jaywcjlove.gitee.io/swiftui-example/)
+
+[@kemchenj](https://kemchenj.github.io/):SwiftUI 示例,技巧和技术集合,可以帮助我们构建应用程序,解决常见问题以及了解 SwiftUI 的实际工作方式。
+
+这个网站翻译自 [hackingwithswift.com](https://www.hackingwithswift.com/quick-start/swiftui),内容所有实例都是在 macOS Big Sur 系统上运行,基于 Xcode 12.4 开发。
+
+> 由 [lijianfeigeek](https://github.com/lijianfeigeek) 推荐收录。
+
+## 摸鱼周报
+
+[@摸鱼周报 #30](https://mp.weixin.qq.com/s/KNyIcOKGfY5Ok-oSQqLs6w):不知不觉已经到第三十期摸鱼周报了,来看下这期内容概要:
+
+* Tips:分享 WKWebView 几个不常用的特性。
+* 面试模块:一道 Tagged Pointer 相关题目。
+* 优秀博客:本期博客整理了 Codable 在一些特殊场景的处理方式,Swift 处理 JSON 解析时的一些技术细节。
+* 学习资料:Xcode Build Settings 的参数说明网站;来自 Microsoft 的 Data Science 基础课程。
+* 开发工具:免费且开源的 Coding 时间追踪工具:wakapi。
+
+本期访谈对象是一位学习能力很强的在校生,可以通过这篇文章对他进行一定的了解:[人物访谈|一位在校生的 iOS 之路](https://mp.weixin.qq.com/s/9Z7-8trqc7MmIlrjHqbtsA)
+
+## 代码
+
+### [Apple Store 库存监控助手](https://github.com/Sunnyyoung/AppleReserver)
+
+[@anotheren](https://github.com/anotheren):今年没有抢到 iPhone 13 Pro 首发,并决定等到双十一的同学可能有点郁闷,不仅价格没啥变化,库存还异常紧张。如果你的城市有 Apple Store,那么预约线下取货也是快速拿到新手机的靠谱方式。这是一个线下门店放货监控的脚本工具,同时工具本身也使用 Swift 编写,同样是个学习的案例。
+
+### 🐢 [Dflat: Structured Data Store for Mobile](https://github.com/liuliu/dflat)
+
+[@zvving](https://github.com/zvving):对于复杂应用,结构化数据的持久存储一直是值得反复讨论的命题。CoreData、Realm、WCDB、FMDB 各自有不同的设计权衡和适用场景,Dflat 这个崭新的库尝试带来一些不同的思考与探索:
+
+- 使用 Swift 从头开始构建,充分利用语言定义类型(Struct、Enum 等),提供带有类型检查的查询、Combine 订阅等现代特性,更适合单向数据流的编程模型
+- 数据获取均为不可变数据类型,对并发/同步编程、数据传递有着良好的支持,支持 多写/多读 or 单写/多读 模式
+- 引入 [FlatBuffers](https://halfrost.com/flatbuffers_schema/) 生成 Swift 模型代码(with [Bazel](https://bazel.build/)),方案在序列化、内存占用等方面有明显优势,常规应用场景的性能对比也[明显优于](https://dflat.io/benchmark/)传统 DB 方案
+- 存储方案目前基于 SQLite,设计上兼容切换不同存储方案
+
+项目虽在早期阶段,文档规划清晰,非常值得提前了解学习:[官方文档](https://dflat.io/)。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#179-2021.11.01.md b/Reports/2021/#179-2021.11.01.md
new file mode 100644
index 000000000..440579957
--- /dev/null
+++ b/Reports/2021/#179-2021.11.01.md
@@ -0,0 +1,107 @@
+# 老司机 iOS 周报 #179 | 2021-11-01
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [App 内活动正式开放](https://developer.apple.com/cn/news/?id=zghdvfza)
+
+[@Parsifal](https://github.com/ParsifalC):WWDC 21 中提到的 App 内活动于 10 月 27 日正式开放了。需要注意的是,要开始相关操作,**帐户持有人需要在 App Store Connect 里加入新版 App Store 提交体验**。您将能够体验更多功能,包括在一次提交中包含多至 10 个活动、**不使用新的 App 版本即可提交活动**等。创建活动后,App Store 中进入对应 App 的主页后就会弹出该活动卡片,并允许分享至社交平台,后续苹果也会继续迭代优化 App 内活动的运营数据等功能。
+
+### [TestFlight 公开链接名额管理策略调整](https://developer.apple.com/cn/testflight/)
+
+[@Parsifal](https://github.com/ParsifalC):TestFlight 是苹果官方提供的内测平台,苹果也一直在优化它的使用体验。最近一次比较大的更新或许是 2019 年推出的公开链接,也自那个时候开始,国内也越来越多的厂家采用了 TestFlight 进行内测。按照 TestFlight 的使用文档,开发者可以通过公开链接提供 10000 个名额给内测用户。以往在实际使用中,部分开发者都会通过删除已经接受邀请的用户来释放名额,从而突破 10000 额度的限制。但最近,苹果似乎调整了这一策略。经过测试,目前单个 App 的 10000 个额度将会锁定在 90 日以内不变,也就是说不管是通过新建测试组、更新 build,还是通过删除已邀请用户或手动过期 build 等等这些方式,均不能释放 10000 以内的名额。
+
+## 文章
+
+### 🌟 🐕 [iOS 性能检测新方式 - AnimationHitches](https://mp.weixin.qq.com/s/SQgxvBztLQFZ6QV43iN2Vg)
+
+[@JonyFang](https://github.com/JonyFang):本篇主要介绍了 RenderLoop 及新的一帧展现给用户的整个流程。着眼于什么是卡顿,及它的两种类型:提交卡顿和渲染卡顿,最终定义了卡顿时间比,用以测量当前 App 的卡顿程度和性能。本篇可以带着读者对整个渲染循环和卡顿类型有更清晰的认识,日常编码中也可以尽量避免这些问题。
+
+### 🌟 🐕 [58 同城 iOS 混编项目无用代码检测方案介绍](https://mp.weixin.qq.com/s/RU8jhQJ_LSFEJcZX3bXmLg)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文介绍了混编项目无用代码检测在 58 的实践步骤和心得,已开源。
+
+- **混编项目无用代码检测的几种手段**
+* OC 和 Swift 各自的实现
+- 遇到的困难
+
+### 🐎 [苹果官方 “隐私洞见” 来了](https://mp.weixin.qq.com/s/jo9sb2AfrnzZWpDDuqJnCw)
+
+[@Smallfly](https://github.com/iostalks):苹果在 iOS 15.2 测试版中引入了应用隐私报告,旨在向用户提供已开启隐私权限的应用被获取敏感信息的频率。其中包括位置、联系人、相机、麦克风和照片等信息。
+
+Apple 还会记录应用程序在后台访问了哪些域名,这个功能可以说让偷窥应用无处遁形。
+
+通过如下方式可以启用隐私报告:
+* 打开 **设置** 应用程序
+* 进入 **隐私** 页面,滑到底部
+* 点击 **应用隐私报** 告,打开「应用隐私报告」页面
+* 点击 **打开应用隐私报告**
+
+### 🐢 🚧 [iOS 隱私與便利的前世今生](https://medium.com/zrealm-ios-dev/ios-隱私與便利的前世今生-9a05f632eba0)
+
+本文综述性的介绍了从 iOS 7 到 15 Apple 在隐私方面做的持续改进:这些改进背后的原因以及对用户来说有什么好处?
+
+> 推荐人 [zhgchgli0718](https://github.com/zhgchgli0718)
+
+### 🐕 [干货 | 携程 APP Native/RN 内嵌 Flutter UI 混合开发实践和探索](https://mp.weixin.qq.com/s/yqChBHJ_QEpjuGYdIJsVzg)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):携程当前 Flutter 的使用占比逐步提高,而老页面的技术栈还有 Native 或者 RN,因此做出了混栈的尝试。RN 嵌套 Flutter 的具体实现,其他资料相对较少,方案较为原始,仅供参考。相对于 RN 底层还是原生控件,Native 与 Flutter 交互还有很多细节值得研究。
+
+携程团队当前的选择可能基于历史负担,但个人还是不推荐同时维护三种技术栈,新项目选型更是不可取:内存问题与开发成本都将逐步不可控。可以观察携程团队的后续的取舍。
+
+### 🐕 [【译】 Flutter 延迟加载组件 【包体积优化 | 动态化】](https://juejin.cn/post/6970870114316976142)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi):Flutter 2.2 带来了很多新的功能,其中就有一个大家期待已久的功能: 按需加载「Deferred Components」。 这一特性可以让我们将 Flutter 产物拆分为多个组件,并在需要时再进行下载。 借助于这一特性,官方 Gallery 演示程序安装时的大小压缩了 46% (200KB 的代码和 43MB 的资源减少)本文向大家介绍,如何使用延迟加载功能。遗憾的是,该功能只能在 Android 平台使用,iOS 上不可用 😄。
+
+## 摸鱼周报
+
+[@摸鱼周报 #31](https://mp.weixin.qq.com/s/DQpsOw90UsRg6A5WDyT_pg):第三十一期周报来啦,从本期开始周报里面会尝试加入一些 Apple 最近公布的相关活动介绍。
+
+* 本期话题:关于 In-App Events 的一些介绍。
+* Tips:优化 Xcode 增量编译的几个小技巧。
+* 面试模块:一道 RunLoop 相关题目。
+* 优秀博客:本期博客主题是 Swift 的高级中间语言:SIL。
+* 学习资料:raywenderlich 新出的 Flutter 教程;一份认知者偏差手册。
+* 开发工具:一个终端命令补全工具:fig。
+
+## 工具
+
+### [Aquarius](https://github.com/CrazyFanFan/Aquarius/blob/master/README_CN.md)
+
+[@红纸](https://github.com/nianran): Aquarius 是一个解析 Podfile.lock 的 GUI 工具,输出相比于 [cocoapods-graph](https://github.com/erickjung/cocoapods-graph) 的图输出更加友好(依赖数量、依赖关系等),其使用 SwiftUI 进行编写,开发者可以定制自己的各种需求~
+
+> 推荐人:[lijianfeigeek](https://github.com/lijianfeigeek)
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#180-2021.11.08.md b/Reports/2021/#180-2021.11.08.md
new file mode 100644
index 000000000..d637de599
--- /dev/null
+++ b/Reports/2021/#180-2021.11.08.md
@@ -0,0 +1,123 @@
+# 老司机 iOS 周报 #180 | 2021-11-08
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [macOS 版 TestFlight 正式发布](https://developer.apple.com/cn/news/?id=0bemba6j)
+
+[@Parsifal](https://github.com/ParsifalC):TestFlight 正式支持 macOS 应用 分发了,规则总体与 iOS 版 TestFlight 差不多,总共 10000 个测试名额,支持分组等功能。另外,由于 Mac Catalyst 的存在,在 macOS 的 TestFlight 上体验 iOS App 的或许也会是一项新的分发尝试方向。
+
+## 新手推荐
+
+### 🌟 🐕 [GitHub - twostraws/Unwrap: Learn Swift interactively on your iPhone.](https://github.com/twostraws/Unwrap)
+
+[@Barney](https://github.com/BarneyZhaoooo):Unwrap 是一款开源的 Swift 应用程序,可以通过 100 节核心课程,或是运行代码进行实践,来更高效快速的学习 Swift。
+
+### 🐕 [Xcode 中代码注释编写小技巧](https://juejin.cn/post/7020590213361565726)
+
+[@老峰](https://github.com/gesantung):写好注释是每一个程序员的一个基本素养,本文介绍了使用 Xcode 为 Objective-C&Swift 代码添加以及修改注释的小技巧。
+
+## 文章
+
+### [Flutter 图片库高燃新登场](https://mp.weixin.qq.com/s/TdTGK21S-Yd3aD-yZDoYyQ)
+
+[@邦Ben](https://weibo.com/linwenbang):看这篇之前可以先看下[闲鱼Flutter图片框架架构演进(超详细)](https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247485142&idx=1&sn=b416f1d0c8f3fd2077075441154df090&scene=21#wechat_redirect),了解一下闲鱼之前对图片的一些优化,逐步递进更容易理解,闲鱼在基于原有的外接纹理优化的前提,继续尝试了 dart:ffi 的方式进行优化(dart:ffi 提供了同步调用 native c++ 层的能力,因为是直接调用,因此性能高于常规的 channel 调用),闲鱼通过外接纹理和 ffi 组合使用的方式,进一步优化了:
+
+- 支持加载 ui.image,特殊场景可以使用
+- 支持预加载
+- 新增纹理缓存,统一图片缓存
+- 支持模拟器
+- 完善自定义图片类型通道
+- 完善的异常捕获与收集
+- 支持动图
+
+结论:
+- Texture 适用于日常场景,优先选择;
+- FFI 更适用于:
+ - flutter <= 1.23.0-18.1.pre 版本中,在模拟器上显示图片
+ - 获取 ui.Image 图片数据
+ - flutter 侧解码,解码前的数据拷贝影响较小
+
+关于开源:
+目前还没开源,文中说计划12月底开源,可以期待一下
+
+参考链接:
+- [dart:ffi 官方文档](https://dart.dev/guides/libraries/c-interop)
+
+
+### 🐎 [工程实践 | 在 Flutter 中实现一个精准的滑动埋点](https://mp.weixin.qq.com/s/Q0HLJdqeRcYg6GKQQWq4CQ)
+
+[@Damien](https://github.com/ZengyiMa):埋点,为了对行为特征的数据进行量化分析、优化产品,我们常常需要在特定的时机上报数据埋点,而滑动埋点曝光埋点则是其中的一个高频使用场景。本文将会提供在 Flutter 中如何实现自动滑动曝光埋点实现思路,对此领域感兴趣的同学可以详细阅读此文章。
+
+### 🐕 [Introducing Swift Distributed Actors](https://www.swift.org/blog/distributed-actors/)
+
+[@xiaofei86](https://github.com/xiaofei86):Actor 模型是一种适用性非常好的通用并发编程模型。它不仅可以应用于共享内存架构,更适合应用于分布式内存架构,解决地理分布型的问题。如今,Swift on Server 生态也迎来了 [Swift Distributed Actors](https://github.com/apple/swift-distributed-actors/),一个面向服务器的完整集群库,用于即将推出的 Distributed Actors 语言功能。
+
+Distributed Actors 是 Swift 并发模型演变的下一步,本文除了介绍这项新特性外,也通过 [SwiftNIO](https://github.com/apple/swift-nio)、[Swift Service Discovery](https://swift.org/blog/swift-service-discovery/)、[Swift Cluster Membership](https://swift.org/blog/swift-cluster-membership/) 等 Swift 生态搭建具备服务通信、服务发现等功能的服务集群 Demo 做功能演示。感兴趣的同学可以阅读原文持续关注。
+
+### 🐕 [Flutter PlatformView 在闲鱼直播业务中的实践](https://mp.weixin.qq.com/s/u-nYmDm6doIMBoh8cTDzlQ)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):咸鱼直播的场景是 Flutter 套全屏的 Native 组件(通过全屏的 PlatformView ),特点是处于页面最上层且背景透明。需要解决“点击透明区域的时候让下层响应,点击非透明区域时 PlatformView 自己响应”的问题。
+
+文章首先介绍了 PlatformView 的实现原理,即:通过 DelayingGestureRecognizer 延迟其他手势的响应,并将消息处理转发至 Flutter,遵循 Flutter 内部的优先级处理机制;如果应该由 PlatformView 响应,则由 ForwardingGestureRecognizer 进行转发,走熟悉的 iOS 手势处理。
+
+因此咸鱼直播选择:在点击非透明区域时,在禁用 PlatformView 的两个手势,走 Native 手势处理;点击透明区域时,恢复 PlatformView 的两个手势,走 Flutter 内部处理。由此解决了全屏 PlatformView 的交互问题,有较大的借鉴意义。
+
+同时,即使实际开发中不会选择这么使用 PlatformView,对 PlatformView 的源码剖析也很值得一读。
+
+## 摸鱼周报
+
+[@摸鱼周报 #32](https://mp.weixin.qq.com/s/6CyL0B6Zkf6KXRrfocohoQ):第三十二期摸鱼周报来啦,一起看下本期内容概要:
+
+* 话题:Mac 版 TestFlight 已经上线。
+* Tips:介绍了关于中间层的一些概念,前后端之间的现状以及需要解决的问题等。
+* 面试模块:能否向编译后的类增加实例变量?能否向运行时动态创建的类增加实例变量?为什么?
+* 博客主题:Swift 关键字。
+* 学习资料:来自字节跳动的 OKR 学习网站;一个关于 SwiftUI 的 Cheat Sheet —— Fucking SwiftUI。
+* 开发工具:一个允许你在 App Store 上搜索 iOS 应用程序并下载应用程序包的命令行工具 —— ipatool。
+
+## 工具
+
+### [PillowTalk - iOS/Lite](https://github.com/Co2333/mobilePillowTalkLite)
+
+[@极速男孩](https://github.com/ztlyyznf001):一个使用 SwiftUI 编写的在 iOS 上对 linux 中的 RPC 服务进行监控的工具。
+
+## 音视频
+
+### 🐢 [5G,华为,土耳其——我花了两个月,搞懂了5G背后的秘密](https://www.bilibili.com/video/BV1fq4y1g7hq)
+
+[@zvving](https://github.com/zvving):5G 技术中的极化码是一个非常复杂的通信概念,UP 主作为一个『通信小白』,暴肝三个月,梳理信息论、信道容量、香农极限诸多知识,在此基础上介绍极化码及其背后的故事。视频是在讲解 5G 技术,更是表述刨根问底、用平和心态长期坚持的科研精神,分享给每一位有好奇心的朋友们。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#181-2021.11.15.md b/Reports/2021/#181-2021.11.15.md
new file mode 100644
index 000000000..e09da305d
--- /dev/null
+++ b/Reports/2021/#181-2021.11.15.md
@@ -0,0 +1,103 @@
+# 老司机 iOS 周报 #181 | 2021-11-15
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [针对在线多人活动的 app 内购买项目规定提醒](https://developer.apple.com/cn/news/?id=yeyd5xuh)
+
+[@Parsifal](https://github.com/ParsifalC):在多次推迟**在线多人活动 (一对几和一对多的实时服务体验)实行 IAP 制度**后,苹果终于决定正式实施了。在 2022 年起,若你的 App 存在在线多人活动的功能而又不是使用 IAP 进行支付的话,苹果将会予以拒绝。值得注意的是,仅在两个人之间提供实时一对一服务体验 (例如,学生辅导、医疗咨询、看房服务或健身训练) 的 app,则允许使用 app 内购买项目以外的购买方式。
+
+### [年末假期接受 app 提交](https://developer.apple.com/cn/news/?id=y4fgrhhe)
+
+[@Parsifal](https://github.com/ParsifalC):往年这个时候,苹果总是开始提醒开发者将会在圣诞节等假日期间停止接受 App Store Connect 审核,而近期苹果宣布了 App Store Connect 这次不放假!但同时,苹果也提醒开发者,在 11 月 24 日至 28 日以及 12 月 23 日至 27 日期间,完成审核可能需时较长。
+
+## 新手推荐
+
+### 🌟 🐕 [Understanding how and when SwiftUI decides to redraw views](https://www.donnywals.com/understanding-how-and-when-swiftui-decides-to-redraw-views/)
+
+[@JonyFang](https://github.com/JonyFang):SwiftUI 的使用逐渐普遍起来,本篇从实例出发深入分析了 SwiftUI 视图重绘的方式及时间节点,结合重绘的原理,可以在后续开发里更巧妙的发挥 SwiftUI 的优势。
+
+## 文章
+
+### 🐕 [What Is a Deprecated API on iOS?](https://pspdfkit.com/blog/2021/what-is-a-deprecated-api-on-ios/)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):iOS SDK 包含大量的类、方法和其他接口,其中每一个都可以称为应用程序编程接口 (API),所有这些 API 共同构成了 iOS SDK 的 API。那么 Apple 是如何随着时间发展弃用其中的 API 呢?
+
+- 介绍 API
+- Apple 意识到 API 存在问题,它被标记为已弃用但继续工作,引入替代 API
+- 之后,Apple 宣布将删除该 API
+- 之后,API 被删除
+
+当 API 被弃用时,这意味着 Apple 不建议使用该 API,但该 API(几乎总是)仍然有效,弃用可能意味着 Apple 打算在未来的某个时候删除 API,并提供较长的过渡期。API 演进是在改进 API 和维护现有应用程序兼容性之间的平衡。
+
+### 🐕 [闲鱼唤端的背后](https://mp.weixin.qq.com/s/MQ2XlroLF6vhM7qP1H-tBQ)
+
+[@享耳先森](https://github.com/iblacksun):如果你的 App 非常重运营,那么你一定非常想知道在每个运营活动中,带来多少新用户或日活,本文介绍了闲鱼 App 是如何做跨 App 启动以及所见即所得的。所见即所得依赖各端统一的数据上报与解析逻辑。
+
+### 🐎 [Dangerous Logging in Swift](https://indiestack.com/2021/10/dangerous-logging-in-swift/)
+
+[@Damien](https://github.com/ZengyiMa):你在 Swift 中使用 NSLog 你是否会遇到 Crash 的场景呢?本文作者通过自己的代码中的转义引发 Swift 中使用 NSLog 的 Crash 问题为背景,深入的研究了 Swift 中使用 NSLog 的崩溃风险。感兴趣的同学不妨一读。
+
+### 🐎 [聊聊__attribute__这个关键字吧~](https://mp.weixin.qq.com/s/FTC-IYVCqzGU-00nj5bVfw)
+[@Smallfly](https://github.com/iostalks):本文通过实践探索了 `__attribute__` 关键字在不同参数下的作用,能够帮助读者多维度地了解该关键字的使用场景。
+
+### 🐎 [端智能助力西瓜视频业务实践](https://mp.weixin.qq.com/s/qiVCG2ME8ppzia34txN9Rw)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文详细分析了在预加载视频的场景中``规则预测``的局限后,选择了``模型预测``。并基于业务场景与安全合规的考虑,放弃常规的云智能,选择了端智能的方案,最后获得了巨大的业务收益。其中对于场景的剖析和特征处理值得借鉴,另外可以看出 Pitaya 这套框架的完成度还是不错的,动态下发算法包以及对应的监控都较为完善。
+
+### 🐢 [Core Image Tutorial for iOS: Custom Filters](https://www.raywenderlich.com/25658084-core-image-tutorial-for-ios-custom-filters)
+
+[@anotheren](https://github.com/anotheren):来自 raywenderlich 的 Core Image 自定义 Filter 教程。本文介绍了使用 Metal Shading Language 来创建自定义 CIKernel、应用滤镜的、以及如何 Debug 的详细流程,有图片/视频处理需求的小伙伴可以尝试一下。
+
+### 🐕 [狐友iOS客户端埋点的前世今生](https://mp.weixin.qq.com/s/be4knvdFsMpykNKVSBnGwA)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文以**狐友**iOS客户端埋点的实践为例子,向大家介绍了不同的埋点实现方案及一些问题总结。
+
+- **认识埋点**
+* **客户端埋点实现**
+- **实践过程中遇到的问题**
+
+## 摸鱼周报
+
+[@摸鱼周报 #33](https://mp.weixin.qq.com/s/nznnGmBsqsrWcvZ4XFMttg):第三十三期摸鱼周报来啦,一起看下本期概要:
+
+* 话题:感恩节和圣诞节期间 AppStore 将正常接受审核。
+* Tips:使用 os_signpost 标记函数执行和测量函数耗时;混编|将 Objective-C typedef NSString 作为 String 桥接到 Swift 中。
+* 面试模块:LeetCode - #1 Two Sum。
+* 优秀博客:本期为大家整理了一些关于图像识别框架 Vision 的文章。
+* 学习资料:Vue Color Avatar,一个纯前端实现的头像生成网站;一篇全面介绍 WebKit 和 Gecko 内部操作的入门文章。
+* 开发工具:swiftenv。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#182-2021.11.22.md b/Reports/2021/#182-2021.11.22.md
new file mode 100644
index 000000000..c37547bc0
--- /dev/null
+++ b/Reports/2021/#182-2021.11.22.md
@@ -0,0 +1,137 @@
+# 老司机 iOS 周报 #182 | 2021-11-22
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 [Tech Talks 2021 - 中文专场](https://developer.apple.com/cn/tech-talks/)
+
+[@Parsifal](https://github.com/ParsifalC):新一批的 Apple Tech Talks 2021 中文专场来了,本次更新了 5 个专题,欢迎大家扫码报名~
+
+- [为 ProMotion 屏幕进行优化(普通话)](https://developer.apple.com/events/tech-talks/dashboard/6SJQVA7UR3/dashboard)
+- [核心设计原则(普通话)](https://developer.apple.com/events/tech-talks/dashboard/BPMX7VDZB3/dashboard)
+- [提升游戏手柄的支持(普通话)](https://developer.apple.com/events/tech-talks/dashboard/3Y7S665W96/dashboard)
+- [充分利用 App Review 流程(普通话)](https://developer.apple.com/events/tech-talks/dashboard/SF7CY9GMFR/dashboard)
+- [在您的app中为 Center Stage 和 Video Effects 添加控制 (普通话)](https://developer.apple.com/events/tech-talks/dashboard/U3JA83J3D3/dashboard)
+
+
+
+### [Apple 宣布将推出自助维修计划](https://www.apple.com.cn/newsroom/2021/11/apple-announces-self-service-repair/)
+
+[@Parsifal](https://github.com/ParsifalC):未来我们可以直接从官方购买零件和工具进行自己维修设备啦!苹果近期宣布将推出自助维修计划,首先将会在明年初于美国率先试运行,而后逐步推广至其他国家。这对于平常喜欢自己动手拆机而又不想从网上到处找靠谱零件的朋友无疑是一个福音,如果未来推出的零件价格合适,相信很多朋友都会尝试自助维修了~
+
+### [新版 Flutter 中文开发者网站发布](https://mp.weixin.qq.com/s/JOm2-TBh4m3nJZKWbfjoug)
+
+[@Parsifal](https://github.com/ParsifalC):2021 年 Google 开发者大会 (Google Developer Summit) 于近日顺利举办,包含众多最新 Google 技术产品更新的线上演讲,干货满满。大会上发布了新版 Flutter 中文开发者网站和 DartPad。
+
+## 新手推荐
+
+### 🐎 [Swift Playgrounds App Projects](https://skyaaron.com/posts/swiftpm-app-projects/)
+
+[@老峰](https://https://github.com/gesantung):Swift Playgrounds 是由苹果公司在 2016 年 6 月 14 日苹果全球开发者大会 WWDC 上发布的 Swift 编程语言学习 App。上周 Apple 发布了 Xcode 13.2 Beta1 带来了 Swift Playgrounds 4,它提供了新的 *.swiftpm 格式可以与 Xcode 兼容;支持 UIKit 的完整 API,支持 Swift Package Manager,支持 Objective-C、C 和 C++,对 Swift Playgrounds 4 感兴趣的新手朋友推荐尝试。
+
+## 文章
+
+### 🌟 🐢 [从野指针探测到对iOS 15 bind 的探索](https://mp.weixin.qq.com/s/jNiRinGYeV3LiF5Zjt-x0w)
+
+[@J_Knight_](https://github.com/knightsj):本文从野指针的探测这一问题展开,介绍了 bind 流程的机制,以及它在 iOS 15下的改动。同时也介绍了 fishhook 的工作流程以及其他 2种 hook C 函数的方案,同时也讲解了 LC_DYLD_INFO_ONLY 以及 LC_DYLD_CHAINED_FIXUPS 的机制。
+
+### 🌟 🐕 [美团外卖终端容器无关化研发框架](https://tech.meituan.com/2021/11/11/meituan-waimai-containerless-framework.html)
+
+[@JonyFang](https://github.com/JonyFang):美团外卖研发了一款终端容器无关化框架 - React2X,与服务无关化(Serverless)的概念类似,即在保持顶层业务研发语言不变更的情况下,在下层可以兼容性地升级、替换终端容器的能力,让用户无需关心终端容器的运维,只要将精力聚焦到业务逻辑上。React2X 解决了业务需求在多端容器需要重复开发的难题,通过代码复用实现开发提效,实现了几个目标:
+
+- 解决公司内部多终端容器开发痛点,统一开发规范,抹平开发差异,并提供对其他容器的扩展能力;
+- 建设跨容器动态化能力,可以解决美团外卖业务客户端发版限制和小程序包大小限制的问题,帮助业务实现快速发版上线以及线上问题热修复的能力;
+- 建设容器无关的开发生态体系,解决的容器差异性,统一的技术生态能力建设,为多终端容器开发场景提升生产和运维效率。
+
+### 🐎 [分享我成为 GDE(Google 开发者专家)的经历](https://mp.weixin.qq.com/s/14TpW7-EqZ_6XO1vYRnhiQ)
+
+[@老驴](https://weibo.com/u/6090610445):Google 开发者专家是 Google 给积极推广 Google 技术的开发者和布道者颁发的认证。最近几年因为有国内开发者积极参与推广,所以得到了越来越多人的关注。本文的作者 AlexV525 就在最近获得了 Flutter GDE 的认证。 Alex 分享了自己从申请到面试的全过程。有兴趣想拓展自己在开发者圈影响力的同学们也可以试试 GDE。
+
+### 🐎 [Flutter 多插件本地化问题](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486934&idx=1&sn=b1f809e93ffcf0ab051b0862c1f8eb03&chksm=cf55821ef8220b085333ffc8622f17cdec599bf53c0b95cfe1a50f901b85d778316a1feb7e39&token=290590453&lang=zh_CN#rd)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):作者在多插件开发的过程中,发现使用 Flutter intl 插件来自动生成本地化代码后,最终展示的文案不符合预期。在研究源码后发现是共用了一个 messageLookup 对象导致,并提供了能自动化解决的[脚本](https://github.com/silan-liu/flutter_app_localization/blob/main/scripts/intl.rb),有同样需要本地化开发的同学可以借鉴。
+
+> 由本文作者 [summer-liu](https://https://github.com/silan-liu) 推荐收录。
+
+### 🐕 [Introducing XCRemoteCache: The iOS Remote Caching Tool that Cut Our Clean Build Times by 70% : Spotify Engineering](https://engineering.atspotify.com/2021/11/16/introducing-xcremotecache-the-ios-remote-caching-tool-that-cut-our-clean-build-times-by-70/)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文介绍了 Spotify 的 **XCRemoteCache** 实践,如标题所说,效果显著。
+
+- 背景
+- 原理分析
+- 如何在工程中集成 XCRemoteCache
+
+### 🐎 [How to use Github Copilot with Swift using Visual Studio Code?](https://antran.app/2021/github_copilot_swift/)
+
+[@Smallfly](https://github.com/iostalks):[Github Copilot](https://copilot.github.com/) 是一款人工智能编程伴侣,它能根据输入的上下文代码或注释,「智能化」地生成代码段,支持主流的一些编辑器,但不支持 Xcode。
+
+本文介绍了如何在 Visual Studio Code 中支持使用 Github Copilot 生成 Swift 代码的流程。
+
+## 摸鱼周报
+
+[@摸鱼周报 #34](https://mp.weixin.qq.com/s/P0HjLDCIM3T-hAgQFjO1mg):第三十四期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:Apple 宣布推出自助维修计划。
+* Tips:混编|NS_SWIFT_NAME。
+* 面试模块:二叉树的三序遍历。
+* 优秀博客:几个 Swift 三方库的解析文章。
+* 学习资料:棒棒彬·技术参考周刊。
+* 开发工具:Mounty:一个在 macOS 下以读写模式重新挂载写保护的 NTFS 卷的免费的小工具。
+
+本期摸鱼周报的访谈系列邀请的是一位参加过 WWDC 的同学,因为是 17 年,还是线下,所以有很多有趣好玩的事情。看完全内容可以点击这里:[人物访谈 | 一位参加过 WWDC 的 iOSer](https://mp.weixin.qq.com/s/5Z8n2bFPbZlG3R0MgqdGDQ)
+
+## 工具
+
+### [SwagGen](https://github.com/yonaskolb/SwagGen)
+
+[@AidenRao](https://weibo.com/AidenRao):SwagGen 是一个库和命令行工具,用于解析和生成 OpenAPI/Swagger 3.0 规范的代码,完全用 Swift 编写。
+
+[OpenAPI 规范](https://github.com/fishead/OpenAPI-Specification/blob/master/versions/3.0.0.zhCN.md)(OAS),是定义一个标准的、与具体编程语言无关的 RESTful API 的规范。OpenAPI 规范使得人类和计算机都能在“不接触任何程序源代码和文档、不监控网络通信”的情况下理解一个服务的作用。如果您在定义您的 API 时做的很好,那么使用 API 的人就能非常轻松地理解您提供的 API 并与之交互了。
+
+如果您遵循 OpenAPI 规范来定义您的 API,那么您就可以用文档生成工具来展示您的 API,用代码生成工具来自动生成各种编程语言的服务器端和客户端的代码,用自动测试工具进行测试等等。
+
+## 代码
+
+### 🌟 [SwiftTreeSitter](https://github.com/ChimeHQ/SwiftTreeSitter)
+
+[@四娘](https://kemchenj.github.io):语法高亮的实现一直困扰着 GitHub/Atom 的工程师,网页和编辑器并不像 IDE 那样,它们没有完整的上下文,它们不了解每个单词背后代表着的是变量还是函数。
+
+除此之外,性能也是一个问题,传统的多次正则匹配会让性能变得很差,而且不支持增量解析,这意味着每次敲下一个字编辑器都需要重新完整地解析一次,这对于大文件来说尤其致命。
+
+TreeSitter 就是为了在这个场景下更好地进行词法分析的一个解析器,输入文件就可以输出 AST,它真正地实现了词法解析,支持增量解析,支持多语法的解析,例如 html 里的 javascript 和 css 也可以被正确解析,目前 GitHub 已经在线上启用了很长一段时间。
+
+这个项目是 TreeSitter 的 Swift Binding,让我们可以使用 Swift 去调用 TreeSitter 的相关功能。另外,对于 Tree-sitter 感兴趣的同学也可以看一下[他们的工程师在某个技术大会上的演讲介绍](https://www.youtube.com/watch?v=Jes3bD6P0To)。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#183-2021.11.29.md b/Reports/2021/#183-2021.11.29.md
new file mode 100644
index 000000000..2eef467f7
--- /dev/null
+++ b/Reports/2021/#183-2021.11.29.md
@@ -0,0 +1,109 @@
+# 老司机 iOS 周报 #183 | 2021-11-29
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🐕 [用苹果官方 API 实现 iOS 备忘录的扫描文稿功能](https://www.fatbobman.com/posts/docScaner/)
+
+[@anotheren](https://github.com/anotheren):iOS 系统自带的备忘录看似简单,实则功能强大。本文来自一位独立开发者,使用系统 API 尝试重现备忘录的扫描文稿功能。其主要使用了 VisionKit、Vision、NaturalLanguage、CoreSpotlight 等系统框架,推荐一读。
+
+### 🐕 [Flutter 实现完美的双向聊天列表效果,滑动列表的知识点](https://mp.weixin.qq.com/s/LfsYzXv4GomyIbLysb-eNg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): IM 列表算是 Scrollable 视图比较常见的一个需求场景,本文从原理层面教你如何正确的使用 Flutter 开发一个 IM 滑动列表, 请仔细阅读 Center 讲解那块,非常干哟 😄
+
+### 🐢 [干货 | 聊聊移动端安全加固](https://mp.weixin.qq.com/s/yCB2R8QPWNp2lJrQD4l_hw)
+
+如今,我国智能手机用户达到 12 亿,移动端的安全问题也被各大家开始广泛关注,比如我们熟知的反编译、注入攻击、设备篡改等手段严重威胁到了用户的数据安全以及公司的利益。本文从 iOS 平台着手,介绍了在 iOS 上如何进行安全加固,了解一些这方面的知识,即使不做安全这一块,也有助于我们更好理解系统的运行,以及写出更安全的代码。
+
+### 🐕 [如何系统性治理 iOS 稳定性问题](https://mp.weixin.qq.com/s/M6dekf2_jbpkZqArPx7wgA)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文主要从以下四个章节介绍了 iOS 稳定性治理在字节的实践,并结合了很多线上问题排查经验来加以解释,深入浅出,干货满满。
+
+- 稳定性问题分类
+- 稳定性问题治理的方法论
+- 疑难问题归因
+- 总结回顾
+
+### 🐕 [百度 APP 移动研发平台及 DevOps 实践](https://mp.weixin.qq.com/s/XHv5NiEgKwt_shRyJQodhw)
+
+[@Smallfly](https://github.com/iostalks):随着移动开发团队规模和业务规模不断增长,研发效率和质量都会受到挑战。百度 App 移动研发平台 Tekes 提供一站式服务,极大地提高了研发团队的交付效率。本文主要介绍了 Tekes 的核心功能,以及实现原理。
+
+Tekes 经过多年的演进,目前主要包括三个大的功能:
+
+1. 自动化研发流程
+2. 组件和 App 的防劣化
+3. 全局知识库
+
+### 🐕 [Flutter 实现动态化更新 - 技术预研](https://juejin.cn/post/7033708048321347615)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):作者调研了市面上开源的三套 Flutter 动态化方案,以及相对通用的 webview 增强、UI 库模版化,共五套方案。在维护难度、学习成本、迁移成本等多个角度比较了各个方案的优劣,是一份详尽的调研结论,如果有运营相关的动态化需求,可以作为选型参考。
+
+总体来说动态化的难度还是比较大的,挑选适合产品形态、团队规模、技术实力的方案才是最优的选择。
+
+### 🐕 [拒绝编译等待 - 动态研发模式 ARK](https://mp.weixin.qq.com/s/2tnU4sHf9XVEaJYgyTXoaw)
+
+[@红纸](https://github.com/ChengzhiHuang):在大型工程面前,编译链接慢是通病。本文作者从动态库入手,平台提供基线 ipa 包,本地研发阶段时下载。同时研发仓库做动态库编译,替换原有基线 ipa 包中动态库,重签名,形成完整包,再进行装机调试。在这种模式下,本地的代码仓库就能做到最小化,编译链接时间明显缩短,再也长时间没有爆内存的烦恼了。
+
+### 🐕 [Xcode Cloud: Automated Workflows](https://blog.devgenius.io/xcode-cloud-automated-workflows-730277773c37)
+
+[@Parsifal](https://github.com/ParsifalC):Xcode Cloud 是今年 WWDC 很受关注的特性功能,近期应该也有很多开发者陆续收到了 Beta 邀请。这是苹果官方的 CI/CD 工具,自然有着最适配苹果自身平台的优势,并且目前并没有看到相关收费的信息。
+
+> 同时推荐小专栏里的 3 篇 Xcode Cloud 相关 session 解读:
+>
+> - [【WWDC21 10268/10269】探索 Xcode Cloud Workflows](https://xiaozhuanlan.com/topic/5493872016)
+> - [【WWDC21 10267】一窥 Xcode Cloud](https://xiaozhuanlan.com/topic/2946158037)
+> - [【WWDC21 10267/10268/10269】窥探 Xcode Cloud](https://xiaozhuanlan.com/topic/7496513820)
+
+## 摸鱼周报
+
+[@摸鱼周报 #35](https://mp.weixin.qq.com/s/fCEbYkAPlK0nm7UtLKFx5A):第三十五期摸鱼周报来了,一起来看下本期摘要:
+
+* Tips:count vs isEmpty
+* 面试模块:Swift 中 struct 和 class 的区别,值类型和引用类型的区别。
+* 优秀博客:本期继续介绍几个优秀的 Swift 开源库。
+* 学习资料:戴铭的 Swift 小册子,黑五软件打折优惠整理。
+* 开发工具:PhotoSweeper,一款快速而强大的重复照片清理器。
+
+本期访谈系列邀请到的是一位在游戏行业工作的 iOS 开发。文中围绕他的工作日常,对于未来阶段 IAP 是否会支持三方支付,以及他如何坚持写博客这些事情展开讨论。感兴趣的同学可以点击这里查看全文:[人物访谈 | 一位游戏行业的 iOSer](https://mp.weixin.qq.com/s/tzYu-7H_GccjYhQh0u7zLQ) 。
+
+## 工具
+
+### [Learn X in Y minutes](https://learnxinyminutes.com/)
+
+[@Parsifal](https://github.com/ParsifalC):一个非常全面的教程大全网站,基础算法、数据结构和各类编程语言等等应有尽有,而且提供不同的翻译版本,值得加书签收藏一下。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+> 上海「哔哩哔哩主站直播」招人,加入后,会主要参与 B 站直播的「平台向/业务向」开发维护工作。本次为组内直推,效率会更高,[详情查看](https://mp.weixin.qq.com/s/gYobO5hM0wPSFRNJzGBGIA)~欢迎加微信:jony_chunfang
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#184-2021.12.06.md b/Reports/2021/#184-2021.12.06.md
new file mode 100644
index 000000000..9b48f6f15
--- /dev/null
+++ b/Reports/2021/#184-2021.12.06.md
@@ -0,0 +1,117 @@
+# 老司机 iOS 周报 #184 | 2021-12-06
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 线下沙龙
+
+### 🌟 [有赞移动技术沙龙火热报名中~](https://mp.weixin.qq.com/s/EdiV-CO80ONqx9-bKgciAA)
+
+[@Parsifal](https://github.com/ParsifalC):老司机今年联合企业举办的最后一场技术沙龙来啦~这次我们与有赞移动技术团队一起带来 **「质量·极致」** 为主题的线下沙龙活动。本次沙龙将涵盖中大型团队中把控线上稳定性的方方面面,共有 5 个主题,欢迎大家来现场学习!扫码即可参与报名!
+
+- 《有赞移动 APM 实践》
+- 《爱逛 Flutter 图片优化实践》
+- 《有赞 Flutter 热修落地实践》
+- 《有赞移动质量提升探索与实践》
+- 《有赞移动质量保障体系》
+
+
+
+## 🌟 [Tech Talks 2021 - 中文专场 1217](https://developer.apple.com/cn/tech-talks/)
+
+[@Parsifal](https://github.com/ParsifalC):Tech Talks 2021 最后一批中文专场来啦~
+
+- [探索出色 AR 体验的要素 (普通话)](https://developer.apple.com/events/tech-talks/dashboard/SR68FKF3QV/dashboard)
+- [充分利用 App Review 流程(普通话)](https://developer.apple.com/events/tech-talks/dashboard/74LR339842/dashboard),错过第一场的可以参加这次
+- [设计出色的 iPad app(普通话)](https://developer.apple.com/events/tech-talks/dashboard/K2J9AL6RYT/dashboard)
+- [将高性能视频与Metal集成(普通话)](https://developer.apple.com/events/tech-talks/dashboard/3VMP4RXSC4/dashboard)
+- [使用 StoreKit 2 和 App Store Server API 为客户提供支持(普通话)](https://developer.apple.com/events/tech-talks/dashboard/7DH6V3D8RM/dashboard)
+
+
+
+## 新手推荐
+
+### 🌟 [戴铭的 Swift 小册子](https://github.com/ming1016/SwiftPamphletApp)
+
+[@老峰](https://github.com/Gesantung):[小册子](https://github.com/ming1016/SwiftPamphletApp) 内容主要包括 Swift 语法特性、 Swift 官方社区动态、SwiftUI 等几个板块,面向 Swift 零基础的同学,包括一些直接可用的小例子,例子可以直接在工程中用或自己调试着看,可以使用作者开发的 macOS 程序来浏览,特别的程序是 Swift 写的,按照声明式 UI,响应式编程范式开发,源码也可以看看,推荐 Swift 新手及感兴趣的同学学习使用。
+
+## 文章
+
+### 🌟 🐢 [“杀死” App 上的疑难崩溃!](https://mp.weixin.qq.com/s/dHAiuHeF2n34DaPIGOtJaw)
+
+[@水水](https://www.xuyanlan.com): 作者分享了一个 58 同城 App 上遇到的疑难的崩溃,引出了 bugly 符号化不能正确解析的一些解决方案,过程中又发现了弱符号的问题,并按照这个研究方向在集团内做了一系列工具并解决了多个版本的历史遗留问题。
+
+crash 解决方案是开发者需要持续关注的问题,周报中也多次推荐一些好的 crash 解决思路、工具等。小编建议读者们不管是否遇到类似问题都可以加以关注和思考。
+
+### 🌟 🐎 [Solving Mysterious Logout Issues on iOS 15](https://sourcediving.com/solving-mysterious-logout-issues-on-ios-15-8b818c089466)
+
+[@Smallfly](https://github.com/iostalks):Cookpad App 在 iOS 15 上冷启动登录状态异常登出,作者经过一系列的排查,最终定位到和 iOS 15 系统的「pre-warm」机制有关,该机制的相关内容目前还不多,感兴趣的同学可以关注下。
+
+### 🐕 [Web API Client in Swift](https://kean.blog/post/new-api-client)
+
+[@JonyFang](https://github.com/JonyFang):有了 Async/Await 和 Actors 的特性,现在在 Swift 中设计自定义 Web API 相比以往可以通过少量的抽象,使代码易于理解和扩展,文中进行了一些实践演示应用。
+
+### 🐕 [自己搞一个 MemoryGraph 工具行不行?](https://mp.weixin.qq.com/s/pggPc5gWpV6ZX0rnVpN22Q)
+
+[@Barney](https://github.com/BarneyZhaoooo):答案是行!本文主要记录了自己搞一个 MemoryGraph 的调研过程,对比了业内方案,有自己的分析和思考。
+
+### 🐕 [如果 Safari 做不到对,快有何用?](https://coderemixer.com/2020/10/21/safari-is-fast-but-so-what/)
+
+[@JonyFang](https://github.com/JonyFang):描述了 Safari cache POST 请求和 Safari cache GET requests with cache disabled 问题的现象和复现过程。
+
+### 🐎 [What role do Tasks play within Swift’s concurrency system?](https://www.swiftbysundell.com/articles/the-role-tasks-play-in-swift-concurrency/)
+
+[@zvving](https://github.com/zvving):Swift5.5 引入的并发编程,Task 带来结构化并发 API,提供创建、组织、取消任务的简明方式;Actor 提供良好数据隔离方式,保障并发安全。本文作者通过页面中后台加载网络数据并主线程刷新内容的例子,介绍如何更好的使用 Task + MainActor。
+
+### 🐎 [Editing Multiple Constraints](https://useyourloaf.com/blog/editing-multiple-constraints/)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了批量编辑 Interface Builder 里约束的方法,习惯用 Interface Builder 的读者可以参考借鉴。
+
+### 🐎 [M1 设备的 Xcode 编译问题深究](https://juejin.cn/post/7037037120158269448)
+
+[@Parsifal](https://github.com/ParsifalC):苹果推出 M1 芯片的 MacBook 已经一年了,不少小伙伴都陆续用其进行开发。M1 芯片是属于 ARM 架构,而之前的 Intel 则是 x86_64 架构,这对于我们做 iOS/Mac 开发就有了些不同,比如原来 64 位设备后模拟器架构只包含 x86_64,现在多了个 ARM64。虽然为了方便开发者平滑过渡,苹果已经尽可能地解决了一些问题,但实际开发过程中仍然会存在部分问题。这篇文章归纳总结了 M1 设备推出后 Xcode 可能存在的编译问题,并都给出了解决方案。
+
+## 摸鱼周报
+
+[@摸鱼周报 #36](https://mp.weixin.qq.com/s/K_JHs1EoEn222huWIoJRmA):第三十六期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:Typora 开启收费模式,支持!(补充:目前国内网站被封锁,暂无法访问)
+* Tips:混编|为 Objective-C 添加枚举宏,改善混编体验。
+* 面试模块:事件传递及响应链。
+* 优秀博客:几篇关于 Swift 字符串的优秀博客。
+* 学习资料:独立开发者经验分享。
+* 开发工具:思源笔记,一款本地优先的个人知识管理系统, 支持细粒度块级引用和 Markdown 所见即所得。
+
+本期访谈邀请到的是一位优秀的 iOS 程序媛,一起来聊一下她眼中的 iOS。可以点击这里查看全文:[人物访谈 | 一位 iOS 程序媛](https://mp.weixin.qq.com/s/XIaiNY2oNEtayPcGNSos_A)
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#185-2021.12.13.md b/Reports/2021/#185-2021.12.13.md
new file mode 100644
index 000000000..f597e5272
--- /dev/null
+++ b/Reports/2021/#185-2021.12.13.md
@@ -0,0 +1,115 @@
+# 老司机 iOS 周报 #185 | 2021-12-13
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [千钧一发之际赢得暂缓令,苹果 App Store 要反败为胜了?](https://www.36kr.com/p/1519790525222278)
+
+[@Parsifal](https://github.com/ParsifalC):Epic Games 与苹果之间的诉讼仍然在博弈中,9 月份法院宣判苹果败诉后,苹果也已经宣布会在 12 月 9 日前发布正式政策允许使用第三方支付。而就在限期到达前,苹果又向法院申请到了暂缓执行这一命令,并已经继续提起上诉。
+
+## 文章
+
+### 🐎 [如何构建异步渲染聊天框架](https://mp.weixin.qq.com/s/CAoTWjjnPBzALPBDZaU54g)
+
+[@JimQ](https://github.com/waz0820):本文前半部分侧重于“异步渲染”,概述了异步渲染的必要性,以及使用传统方案 TextKit 异步渲染的优缺点,针对其劣势引入了 Texture。后半部分侧重于“如何构建聊天框架”,基于 IM 输入框的实践,通过代码集中诠释了如何利用状态机和状态驱动来驱动 UI 的变化,从而降低用户使用框架的门槛。
+
+### 🐎 [Support customers with StoreKit 2 and App Store Server API](https://developer.apple.com/videos/play/tech-talks/10887/)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):苹果官方宣传 StoreKit 2 ,[中文](https://developer.apple.com/events/tech-talks/dashboard/7DH6V3D8RM/dashboard)的直播将在 12 月 15 日举行,感兴趣的同学可以预约。本次 Tech Talk 并没有新的 API 或者新特性出现,主要是重复介绍 StoreKit 2 的新特性,详细展开了:正常支付、用户续订用户、处理退款,三个场景的最佳实践。
+
+想了解 StoreKit 2 的细节,可以查看三篇 WWDC21 的翻译。
+[【WWDC21 10175】IAP 用户退款与客诉处理优化](https://xiaozhuanlan.com/topic/8670251439)
+[【WWDC21 10174】 IAP 后台通信优化与实践](https://xiaozhuanlan.com/topic/3768514920)
+[【WWDC21 10114】 初见 StoreKit 2](https://xiaozhuanlan.com/topic/6138790425)
+
+
+### 🐕 [淘特 Flutter 流式场景的深度优化](https://mp.weixin.qq.com/s/H2VqX6qSJ1KLkXB5p4S0dw)
+
+[@邦Ben](https://weibo.com/linwenbang):本文从底层原理,思路到最终实现,进行递进的讲解,Flutter 表现一直以来是堪比原生,但是终归有些场景还是原生占优,列表场景则是最为常用的场景了,本文主要的优化点是局部刷新。如果有需要对 Flutter 列表进行优化的,可以参考一下。
+
+参考链接:
+- [他把闲鱼APP长列表流畅度翻了倍(良心教程)](https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247486101&idx=1&sn=171d269a324748f01e5c92fbaa54854f&chksm=fd54de84ca2357920b822902ea8b23137d83e2f4f7340fabae819182cba2585181be5455e5b2&scene=21#wechat_redirect)
+- [ListView流畅度翻倍!!Flutter卡顿分析和通用优化方案](https://juejin.cn/post/6940134891606507534)
+
+
+### 🐕 [iOS Pod Update 指数级变慢?看 Flutter 新一代版本仲裁算法 Pubgrub 如何解](https://mp.weixin.qq.com/s/Ulz9FafWwtbefVuikTMj7Q)
+
+[@红纸](https://github.com/nianran):本文介绍了 CocoaPods 在出现包版本冲突情况下,Molinillo 仲裁算法使用回溯 DFS 父节点的方式解决冲突问题。但在大型工程下,依赖图异常复杂,回溯成本较高,会出现严重的降速问题。一般都会在 Podfile 中声明好具体依赖来减轻仲裁负担。本文还介绍新一代的仲裁算法 Pubgrub 推导不兼容性算法的数学逻辑来解决依赖仲裁问题。感兴趣的同学可以看一看~
+
+关于 Molinillo 的详细介绍可以看这篇文章: [Molinillo 依赖校验](https://mp.weixin.qq.com/s/Kux4B4piqR43RLwiHRcHUQ)。
+
+> 自荐:[BlackTea](https://juejin.cn/user/4406498332782141)
+
+### 🐕 [My worst tech interview experience · Jesse Squires](https://www.jessesquires.com/blog/2021/12/01/my-worst-tech-interview-experience/)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文介绍了作者早期去面试 Apple Watch 团队的不愉快体验,结合后来的成长经历,表达了自己对如何面试的一些思考。
+
+### 🐢 [浅谈 swiftinterface 文件](https://mp.weixin.qq.com/s/LVxFTp4nLHZDU_PqdsnX6Q)
+
+[@anotheren](https://github.com/anotheren):swiftinterface 是什么?文章以 **模块稳定性(Module Stability)** 为切入点,介绍了 .swiftinterface 文件的工作原理以及常见的误区,最后介绍了 `@_alwaysEmitIntoClient` 关键字以及它的实现原理。干货满满,还有不少作者的思考结论,推荐阅读。
+
+### [Get started with in-app events](https://developer.apple.com/videos/play/tech-talks/10889/)
+
+[@享耳先森](https://github.com/iblacksun):从 Apple 在 WWDC 21 提起 In-app events 开始,到前段时间正式开放已经有一段时间了,建议回顾下本视频,包含了 in-app events 的一些建议和最佳实践。
+
+### [Flutter 2.8 release 发布,快来看看新特性吧](https://mp.weixin.qq.com/s/7J_eLYO1DiPu8A2XsF99nw)
+
+[@Parsifal](https://github.com/ParsifalC):Flutter 继续稳步更新,2.8 版本正式发布。本次更新依然围绕着稳定性和性能方面。包含以下几点:
+
+- 改进了应用的启动延迟问题,尤其是 Android 低端设备上
+- 继续优化内存占用
+- Android systrace 的支持
+- Flutter DevTools 提高对性能调试的支持
+- Web platform views 的优化
+- WebView 3.0
+
+## 摸鱼周报
+
+[@摸鱼周报 #37](https://mp.weixin.qq.com/s/PwZ2nIHRo0GDsjMx7lSFLg):摸鱼周报第三十七期来啦,一起来看下本期概要:
+
+* 话题:苹果正式开放 AppStore 的 2 个重磅功能:自定义产品页和产品页优化。
+* Tips:设备启动流程的梳理。
+* 面试模块:HTTP/1.0,HTTP/1.1,HTTP/2 有哪些区别?
+* 优秀博客:几个音视频相关的优秀仓库介绍。
+* 学习资料:计算机教育中缺失的一课(中文版)。
+* 开发工具:myyearwithgit,开启你的年度报告。
+
+## 音视频
+
+### 🚧 🐢 [Scale By The Bay 2021 : Konrad Malawski, Distributed Systems with Swift](https://www.youtube.com/watch?v=7yu6mEq8R2Q&ab_channel=FunctionalTV)
+
+[@老驴](https://weibo.com/u/6090610445):Swift 在最近几年添加了很多新的语言特性,极力试图突破 Apple 生态圈。这个视频就是 Apple Swift 团队的工程师来介绍如何使用 Swift 中新添加的特性如 distributed actor 来写大型分布式系统。不过还是要温馨提醒一下有兴趣的同学,分布式系统不是单单一个语言的问题,所以不妨自己尝试尝试以后再在生产环境中使用。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#186-2021.12.20.md b/Reports/2021/#186-2021.12.20.md
new file mode 100644
index 000000000..e734087aa
--- /dev/null
+++ b/Reports/2021/#186-2021.12.20.md
@@ -0,0 +1,108 @@
+# 老司机 iOS 周报 #186 | 2021-12-20
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### iOS 15.2 新增相册卡死
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):12 月 15 日,苹果发布了 iOS 15.2 的正式版。不幸的是这次升级带来了卡死。在还未向用户申请相册权限时,即 ``[PHPhotoLibrary authorizationStatus] != PHAuthorizationStatusAuthorized`` 时,如果调用 ``[[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:xxx];`` 添加监听,则会卡死。苹果开发者论坛也有同学[反馈](https://developer.apple.com/forums/thread/696131),目前苹果还未有回应,可以看到这个问题在 15.2 beta 版中就存在了,需观察苹果后续会如何处理。
+
+临时方案可以在注册前进行判断,如果没有权限,则不注册观察者。
+
+## 文章
+
+### 🌟 🐕 [浅谈 Swift Dictionary](https://mp.weixin.qq.com/s/yIHaAaGRX7Ru_OetdX0_Vg)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):作者分析字典下标访问方法,并将源码与汇编结合,便于读者加深理解,推荐一读。阅读需要对汇编有些基础了解,例如[保留字 qword、byte 等](http://c.biancheng.net/view/3465.html)。
+
+同时本文还包含了:
+- 字典的内存布局,主要关注 count、scale、rawKeys/Values 这些固定布局结构,和 bitset、Keys/Values 这些不固定布局的结构。
+- 简单介绍动态调试 Swift 源码的方案。
+
+### 🌟 🐕 [FlutterWeb 性能优化探索与实践](https://mp.weixin.qq.com/s/fE11vs2qnRIHAWYv1af-gA)
+
+[@Damien](https://github.com/ZengyiMa):2021 年 3 月份,Flutter 2.0 正式对外发布,意味着 Google 更加坚定了多端复用的决心。本文是美团外卖商家团队基于 HTML Render 模式对 FlutterWeb 性能优化进行了探索和实践,主要包括:
+- SDK(Dart-SDK、Framework、Flutter_Web_SDK)的精简
+- 静态资源产物优化(例如:JS 分片、文件 Hash、字体图标文件精简、分平台打包等)
+- 前端资源加载优化(预加载与按需请求)
+
+使得 JS 产物由 1.2M 减少至 0.7M(非业务代码),页面完全加载时间 TP90 线由 6s 降到了 3s 的不错成绩,并且提出更加长期规划,对 FlutterWeb 感兴趣的同学不妨一读。
+
+### 🐢 [不甘当学渣,努力作学霸,最终是学民](https://mp.weixin.qq.com/s/lZzX_1pLeied7e4jkvcVJQ)
+
+[@Smallfly](https://github.com/iostalks):本文记录了一名「普通」程序员在近两年工作,学习,旅行上不平凡的经历。
+
+### 🐕 [从 350ms 到 80ms,打造新零售场景下 iOS 短视频的极致丝滑体验](https://mp.weixin.qq.com/s/qYsfyw2K77hKMfHd_uTp-Q)
+
+[@anotheren](https://github.com/anotheren):来自盒马的短视频优化方案,其核心方案依然是 3 点:提前缓存视频数据、视频文件编码/体积优化、提前准备播放器。
+
+## 摸鱼周报
+
+[@摸鱼周报 #38](https://mp.weixin.qq.com/s/a1aOOn1sFh5EaxISz5tAxA):第三十八期摸鱼周报来了,一起来看下本期概要:
+
+* 话题: Xcode 13.2 和 iOS 15.2 的正式版值得关注的几项新功能。
+* Tips:内存相关的一些机制。
+* 面试模块:dealloc 在哪个线程执行;NSString *str = @"123" 这里的 str 和 "123" 分别存储在哪个区域。
+* 优秀博客:SwiftUI 相关的几篇优秀博客。
+* 学习资料:软件随想录,Joel Spolsky 的 Blog 纸质版文集。
+* 开发工具:Dropshelf,一款 Mac OS 下的拖拽效率应用。
+
+本期人物访谈邀请的是_夏天_,他是摸鱼周报的一位主编,主要负责 Tips 部分的编写和审核。曾参与掘金翻译计划,翻译过很多篇优质博客内容,也翻译过像是 iOS Crash Dump Analysis Book 这一类的外文图书。这次拉他来聊一聊关于外文翻译和他个人的一些工作感悟,完整内容可以点击查看:[人物访谈 | 一位普通的 iOS 程序员](https://mp.weixin.qq.com/s/60o6UKcDjf9lAy2o2AQ_tw)。
+
+## 工具
+
+### [Zealot](https://github.com/tryzealot/zealot/)
+
+[@JonyFang](https://github.com/JonyFang):推荐一个开源自部署 iOS、Android 及 macOS 应用分发平台,提供 iOS、Android SDK、fastlane 等丰富组件库,打包分发流程、简化了应用上传、可独立部署,是对开发者、测试者友好的开源项目。
+
+## 代码
+
+### [AppFlowy](https://github.com/AppFlowy-IO/appflowy)
+
+[@AidenRao](https://weibo.com/AidenRao):[Notion](https://www.notion.so/) 是深受团队和个人欢迎的生产力应用。AppFlowy 是 Notion 的开源替代品,支持主流的移动和桌面端系统,技术选型很有趣,前端选择了 Flutter,后端使用 Rust 编写,通过 FFI 进行通信。
+
+## 音视频
+
+### [佛系技术翻译组 SwiftGG 的过去与现在](https://www.xiaoyuzhoufm.com/episode/61b451ff0506e510b35d71d0?s=eyJ1IjogIjVlN2M4NjIxYjNjNWJjYTVmNjQxMzlmMiJ9)
+
+[@Parsifal](https://github.com/ParsifalC):老卓的播客这次邀请到了 SwiftGG 的两代负责人 梁杰 和 MM 一起谈谈社区组织 SwiftGG 的往事。SwiftGG 翻译组一直负责着 Swift 官方文档的翻译工作,并得到了官方的认可,还曾举办了国内的 Swift 大会和上海 T 沙龙活动。老卓也是老司机技术周报的创始人,并且周报编辑组也有多位成员参与了 SwiftGG。3 个人在这期播客里,聊到了很多做社区组织背后的小故事,分享了这些年来的经验和体会。
+
+### [Explore and manipulate data in Swift with TabularData](https://developer.apple.com/videos/play/tech-talks/10100/)
+
+[@xiaofei86](https://github.com/xiaofei86):本期 Tech Talks 带了新的框架 TabularData,用来导入、组织和准备数据表以训练机器学习模型。除了为机器学习任务预处理数据外,你也可以将加载、浏览和操作 CSV、JSON 等非结构化数据的能力用在 App 中。
+
+观看视频了解此框架如何帮助你处理大型数据集,并将多个数据表连接在一起进行过滤。视频还将向你展示如何使用 DataFrame 来驱动 App 的所有以数据为中心的功能。
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2021/#187-2021.12.27.md b/Reports/2021/#187-2021.12.27.md
new file mode 100644
index 000000000..bd867ed50
--- /dev/null
+++ b/Reports/2021/#187-2021.12.27.md
@@ -0,0 +1,168 @@
+# 老司机 iOS 周报 #187 | 2021-12-27
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 通知
+
+[@Parsifal](https://github.com/ParsifalC):这是今年的第 44 期周报,也是 2021 年最后一期周报,同时也是我作为周报主编的最后一期。2017 年底老卓创办了老司机技术周报,然后是 2018 年底我继任主编,成刊整整 4 年,经历过各种各样的事情,但周报都没有因为非节假日原因断更过,这是我们编辑组所有人都可以引以为傲的事情。而今我也要将主编这个身份交接给了我们下一任负责人 - Damon,也就是大家所熟悉的老王~老王也是编辑组的 OG,并且主导了编辑组与社区近两年的 WWDC 内参活动,过去也参加了编辑组很多运营工作,这次算是正式接棒上任了。后续周报的更新、纳新、对外合作以及各类内容发布等等运营相关事宜,都可以直接联系老王协商。我们一直说编辑组最大的资本就是我们 30 多位优秀的编辑,我很荣幸成为其中一员,即使往后不再参与运营工作,但我也会是周报最忠实的读者。感谢大家多年以来的支持,提前祝大家新年快乐啦!
+
+## 🌟 [Tech Talks 2022 - 中文专场 0104](https://developer.apple.com/cn/accelerator/)
+
+[@Parsifal](https://github.com/ParsifalC):2022 年第一期 Tech Talks 中文专场来了!扫码即可报名~
+
+### 使用 Group Activities 将共享群组体验引入您的 app
+
+SharePlay 让您可以将您的 app 整合到 FaceTime 中,并以这种全新的方式将用户聚集起来。通过 Group Activities API,您可以比以往更加容易地将您的 app 中的电影、电视、音乐和其他共享媒体带入到人们已经在用来相互联系的空间。您可以了解如何提供全新的卓越用户体验,以及用户之间的推荐为您的 app 带来的自然增长。
+名额有限。请在 2022 年 1 月 3 日前报名参加。
+
+
+
+## 新闻
+
+### 🐎 [Log4j Xcode vulnerability](https://developer.apple.com/forums/thread/696785)
+[@Smallfly](https://github.com/iostalks):近期 Java 日志库 Log4j 漏洞影响了很多国内外主流的大平台,有用户在苹果论坛上指出,Xcode 在上传应用到 App Store 时使用了 Java 运行环境,疑似存在风险。苹果团队回应 Xcode 确实包含 Log4j 副本,Xcode 13.2.1 会自动更新到修复版本。
+
+建议及时升级 Xcode。
+
+## 文章
+
+### 🌟 🐕 [Flutter疑难杂症系列:实现支持复杂需求的列表](https://mp.weixin.qq.com/s/CtcxDtTgcEh0L77Z2g9HFg)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 列表页面在移动端开发可谓是一个必然面对的场景,复杂业务下的列表优化也是个老生常谈的话题,在 Flutter 中也是如此,本文是由字节跳动基础架构团队奉献,详细讲解了 Flutter 中如何应对复杂需求下的列表页,从原理到实践,到性能分析,再到功能扩展,一步步抽丝剥茧,值得每一位 Flutter 开发者细读,小编强烈推荐。
+
+### 🌟 🐕 [Swift代码优化指南 | 如何最大化实现性能提升?](https://mp.weixin.qq.com/s/xGeLeqcXBeBw1zMPqBZKYA)
+
+[@JonyFang](https://github.com/JonyFang):本篇从语法角度优化代码,长远来看有益于养成良好的代码习惯,某种程度上从根源减少错误的产生。详细内容:
+1. 编译速度优化
+ - 费时类型判断;
+ - 现实运用中的取舍;
+2. 内存分配与占用
+ - 关于 struct 的使用;
+ - 用轻便的 Enum 替代 String;
+ - 优化集合类型(内存分配策略、预分配内存、惰性序列);
+ - 减少不必要的桥接(ContiguousArray 替换 NSArray);
+ - 善用写时复制;
+3. 运行时速度优化
+ - 介绍三种函数派发;
+ - 使用 final、private 优化派发方式;
+
+
+### 🐕 [错误处理原则及其在Swift中的应用](https://mp.weixin.qq.com/s/DJKuCXzqxBg7LPmtPMgglw)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文讨论了容易被大家忽视的错误处理,以及一些Swift中的应用。
+
+- 错误处理的目标
+- 错误处理的方案
+- 异步函数的错误处理
+- Swift标准库的行为
+
+### 🐢 [A roadmap for improving Swift performance predictability: ARC improvements and ownership control](https://forums.swift.org/t/a-roadmap-for-improving-swift-performance-predictability-arc-improvements-and-ownership-control/54206)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):Swift 的开发者为我们带来了基于 ARC 内存管理的新特性 roadmap ,总体思路是在不影响主要代码逻辑阅读的前提下,在参数定义时增加特定的一些关键字来优化标明持有关系,使 debug/release 下的表现一致,辅以编译器的强提示来保证安全性;相较 C++ 严格的作用域模型,Swift 会略微宽松一些,同时也能避免在 deinit 时有先后顺序的依赖导致的问题。特别强调,目前只是 roadmap ,后续可能还会有变更。同时对目前 debug/release 释放时机不明确可能导致的问题进行了举例:例如在 deinit 时会调用 free ,而 free 对 errno 有影响,如果判定对象能够提前被释放,就有可能导致程序在 debug/release 下有不同的表现。
+
+主要内容如下:
+- 通过 move() 方法,在函数内显式转移控制权,这样原本的变量就不再被持有,那就被编译器认为可以被释放,可以避免 Copy-on-write 的多余操作。同时在函数内期望最后的一次使用该变量时,也可以调用此方法,防止该变量后续再被调用。
+- 通过在函数声明时对参数标注 consuming/nonconsuming 来传达持有关系。
+- 通过将 getter/setter 函数替换为 read/modify 来避免对 Array/Dictionary/Set 等类型的无用 Copy-on-write 。
+- 通过对参数标注 @noImplicitCopy 来保证:在函数体内,如果传递该参数到标明 consuming 的方法时,则需要显式调用 copy 方法,来确认参数的所有权。如果不显式调用,则会在编译期报错。
+- 对参数也可使用 @nonescaping 进行标注。
+- 上述 @nonescaping/@noImplicitCopy 的变量统称为 move-only 类型,会对参数列表中包含 move-only 类型的 API 进行性能优化。
+
+### 🐕 [Introducing Swift for Visual Studio Code](https://forums.swift.org/t/introducing-swift-for-visual-studio-code/54246)
+
+[@老峰](https://github.com/gesantung):本文介绍了 VSCode Swift 扩展,该扩展可以提供 VSCode 下 Swift 开发,可以方便的处理 Vapor 项目,值得注意的是这是一个 0.1.0 版本,因此它的功能不完整,主要包括以下功能:
+- 自动创建任务
+- 包依赖视图
+- 代码补全
+- 跳转到定义、查看定义、查找所有引用、符号搜索
+- 自动生成用于调试的启动配置
+
+## 摸鱼周报
+
+[@摸鱼周报 #39](https://mp.weixin.qq.com/s/DolkTjL6d-KkvFftd2RLUQ):第三十九期摸鱼周报来了,一起来看下本期概要:
+
+* Tips:混编|为 Swift 改进 Objective-C API。
+* 面试模块:HTTPS 证书有效性的验证过程。
+* 优秀博客:Core Data、Realm、MMKV 这几个库相关的一些介绍。
+* 学习资料:一个学习正则表达式的网站。
+* 开发工具:一个安装 Xcode 的 CLI 工具 `xcinfo`,一款开源的 Markdown 编辑工具 Mark Text。
+
+本期访谈对象是老司机周报的主编:Parsifal。本次访谈主题分两部分,一部分是老司机周报的发展故事和他的行业观察,另一部分是他对开发者的一些建议。详情可以点击:[人物访谈 | 老司机周报主编 Parsifal 专访](https://mp.weixin.qq.com/s/HWbPbPBPYgFJsM-oc_4tvw)
+
+## 工具
+
+### [ipatool](https://github.com/majd/ipatool)
+
+[@Parsifal](https://github.com/ParsifalC):一款通过终端下载 App Store IPA 的脚本工具,两行命令即可下载已经上架的 App 了(前提是你已经在手机上下载过该 App,即这个工具只是从你「已下载 App」里同步 IPA)。另外需要注意的是,如果账号开启了两步验证,则需要多试一次。第一次尝试会触发两步验证的验证码,第二次继续尝试并且将第一步获取到的验证码直接拼接到你账号密码后面即可。
+
+```shell
+#先执行一次
+ipatool download -b com.apple.testflight -e olddriver@gmail.com -p YourPassword$110
+==> ℹ️ [Info] Querying the iTunes Store for 'com.apple.testflight' in country 'US'...
+==> ℹ️ [Info] Authenticating with the App Store...
+==> ❌ [Error] An unknown error has occurred.
+
+#拿到上一次触发的验证码,比如123456,拼接到密码后面
+ipatool download -b com.apple.testflight -e olddriver@gmail.com -p YourPassword$110123456
+==> ℹ️ [Info] Querying the iTunes Store for 'com.apple.testflight' in country 'US'...
+==> ℹ️ [Info] Authenticating with the App Store...
+==> ℹ️ [Info] Authenticated as 'Old Driver'.
+==> ℹ️ [Info] Requesting a signed copy of '899247664' from the App Store...
+==> ℹ️ [Info] Downloading app package... [100%]
+==> ℹ️ [Info] Saved app package to com.apple.testflight_899247664_v1.5.0_465.ipa.
+==> ℹ️ [Info] Applying patches...
+==> ℹ️ [Info] Done.
+```
+
+## 书
+
+### [阅读亚马逊逆向工作法的几点收益](https://mp.weixin.qq.com/s/-FHtH2C8f7oKLh3QJ9DFWw)
+
+@叶孤城:推荐一本书叫做《亚马逊逆向工作法》,我买来看了一遍,受益匪浅。少有的在讲管理时,实操性极强,而不谈玄学的书。
+
+## 音视频
+
+### 🐢 [编码人声:新人该怎样入坑开源项目](https://dao.fm/2021/12/09/vol-333-编码人声:新人该怎样入坑开源项目?/)
+
+ [@含笑饮砒霜](https://weibo.com/chinafishnews/):开源对普通程序猿来说似乎是很遥远的事情,这期播客请到了几位开源领域的大咖,聊一聊如何开始你的开源之旅。本期播客的主要内容:
+- 嘉宾参与开源项目的心路历程
+- 开源的经济价值和社会价值
+- 如何开始参与一个开源项目
+- 只有程序员才能参与开源么
+- 开源对企业的价值在哪里
+- Github等开源平台的生态和挑战
+- 自海外诞生的开源文化,在中国会如何
+
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#188-2022.01.10.md b/Reports/2022/#188-2022.01.10.md
new file mode 100644
index 000000000..748d662ec
--- /dev/null
+++ b/Reports/2022/#188-2022.01.10.md
@@ -0,0 +1,181 @@
+# 老司机 iOS 周报 #188 | 2022-01-10
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+> 各位新年好呀!过去的 2021 年对于老司机周报来说发生了很多事情,我们也为此写了份 [年终总结](https://mp.weixin.qq.com/s/v-ZBo0uQjJWyBKvQqWK_TQ) 给到大家,非常感谢各位读者长期以来的支持与关注。这是周报的第 188 期,也是 2022 年的第 1 期,新的一年大家一起加油!
+
+## 🌟 [App 加速器 - 线上活动](https://developer.apple.com/cn/accelerator/)
+
+[@Damonwong](https://github.com/Damonvvong):2022 年第 2/3 期「App 加速器 - 线上活动」来了!扫码即可报名~
+
+### 在您的 app 中训练自定义 Core ML 模型
+
+了解如何通过在您的 app 中动态训练 Core ML 模型来构建自适应和个性化体验。首先,我们将回顾您可以在本地创建哪些类型的模型,包括基于图像的任务 (比如风格迁移和图像分类)、音频相关的任务 (如自定义声音分类) 以及使用表列回归器。我们还将向您展示您的 app 如何学习人们的个人行为以构建更智能、更直观的功能。
+
+### 使用 StoreKit 2 和 App Store Server API 为客户提供支持
+
+了解如何使用 StoreKit 2、App Store Server API 和 App Store Server Notifications 为您的客户创造出色的应用内购买体验,并提供支持和退款。我们将探索实施方法,提供最佳实践,并和您一起实现如何进行客户管理和退款管理。
+
+
+
+## 新闻
+
+### 🌟 🐢 [阿里自研标准化协议库 XQUIC 正式开源](https://mp.weixin.qq.com/s/OrvjikvYyqlHAzGamLmpsw)
+
+[XQUIC](https://github.com/alibaba/xquic) 是阿里自研的 IETF QUIC 标准化传输协议库。XQUIC 是基于 IETF QUIC 协议实现的 UDP 传输框架,包含加密可靠传输、HTTP/3 两大块主要内容,为应用提供可靠、安全、高效的数据传输功能,可以极大改善弱网和移动网络下产品的用户网络体验。手淘图片、短视频等场景已经落地 GQUIC,并拿到了一定的网络体验收益。
+XQUIC 是一个轻量、高性能、标准化的跨平台协议库,具有以下优势:
+- 轻量性 - Android/iOS 双端的编译产物均小于 400KB
+- 高性能传输 - 相对于内核态 TCP+HTTP/2 优化 20% 的网络请求耗时
+- 标准化 - 实现了整套 IETF QUIC 标准协议,包含传输层、加密层、应用层协议栈
+- 易用性 - 支持 Linux/Android/iOS/Mac 等平台,客户端可以通过 SDK 方式很方便地接入并使用、完善的文档(中文/英文对照)、demo 示 例和单测
+
+### [Swift implemented in Swift](https://github.com/apple/swift/tree/main/SwiftCompilerSources)
+
+[@kemchenj](https://kemchenj.github.io):Swift 仓库近日添加了一个 Swift implemented in Swift 的项目,旨在使用 Swift 实现 Swift 编译器的部分功能。目前实现了 SIL 的桥接和部分简单的 SIL Pass,短期目标是将 SIL Optimizer 的功能改为使用 Swift 进行实现。
+
+### [苹果“换芯”之路再起波折,M1 芯片功臣被英特尔挖走了](https://www.infoq.cn/article/wLXQeEayVLEdQSJyd6Eq)
+
+1 月 6 日,苹果 Mac 系统架构总监 Jeff Wilcox 在领英上宣布,他将离开苹果,前往英特尔担任新职位。他将担任英特尔研究员和设计工程组的首席技术官的领导职位,专注于客户端 SoC 架构。Jeff Wilson 说,他计划与英特尔一起打造开创性的 SoC。
+
+## 文章
+
+### 🌟 🐕 [小程序容器首屏秒开优化实践](https://mp.weixin.qq.com/s/7qeBZZ1KusME_SO3_A4L9g)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文介绍了饿了么 APP 小程序秒开的实践干货。
+
+- 1、包和包信息(前置预请求、APP内预置、异步更新)
+- 2、Render 创建、资源加载(前置预创建、资源前置分阶段预加载)
+- 3、Worker 创建、资源加载(前置预创建、资源前置分阶段预加载)
+- 4、首屏接口预请求(前置预请求)
+- 5、首屏渲染(加载首屏快照)
+- 6、Appx 框架(Appx2.0)
+- 7、检测工具和数据验证
+
+### 🌟 🐎 [Xcode13 自适应瀑布流 Layout 在 iOS15 上对 crash 的定位及修复](https://mp.weixin.qq.com/s/sdj5Ym186VkpxXwExIpC0A)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文介绍了排查特定构建环境,配上特定系统遇到的死循环案例。排查时作者逐步减少可能因素的过程较有学习价值。
+
+同时也能看出本地开发环境与打包构建环境保持一致的重要性,推荐更快地适配新版 Xcode,如果确实有困难也应该设置 deadline,在 deadline 到来前集体完成升级。除了能减少维护多套打包资源,还能减少遇到兼容性问题排查的成本。
+
+### 🌟 🐕 [Flutter 轻量级引擎实践与优化](https://mp.weixin.qq.com/s/n6rA0KyUSMGnnzG6Ij6edA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 开发中一直以来在 View 角度的使用和展示都是棘手问题,在 Flutter 2.0 之后 Flutter Engine Group 功能得以改善,字节跳动端团队从 Engine Group 上解决 View 级别的使用实践出发,并针对 Engine Group 场景下做了大量优化:
+- 入口参数配置
+- 多引擎数据通信
+- 数据更新同步
+- 图片缓存共享
+- iOSSurface 释放
+
+### 🐢 [TCA - SwiftUI 的救星?](https://onevcat.com/2021/12/tca-1/)
+
+[@zvving](https://github.com/zvving):从 UIKit 到 SwiftUI,声明式布局、数据传递、状态管理都带来极大的变化,在复杂项目中,如何通过 SwiftUI 构建可组合、易维护、可测试的项目架构本身就是一件很有挑战的事,受 [Elm](https://elm-lang.org) 启发诞生的 [TCA (The Composable Architecture)](https://github.com/pointfreeco/swift-composable-architecture) 是可能的答案之一。
+
+- 通过 Reducer 统一 Action 带来的 State 变化,调试、测试更友好
+- 分割 Store/ViewStore:避免不必要的 view 更新,细粒度 view 有灵活的组合能力
+- 跨 UI 框架能力:为 UIKit 到 SwiftUI 提供更稳妥的过渡路径
+- 单个 Feature 有能力自由组合成为更大的 feature,这也是 Composable 名称的来源
+
+[@onevcat](https://onevcat.com/tabs/about/)通过系列文章,用逐步完善的计数器例子介绍 TCA,目前已推出 [一](https://onevcat.com/2021/12/tca-1/)、[二](https://onevcat.com/2021/12/tca-2/),更多精彩内容敬请期待!
+
+
+### 🐕 [赵海平与张宏波谈编程语言](https://mp.weixin.qq.com/s/FI2WFOENBxgCbykvy9wBYQ)
+
+[@莲叔](http://aaaron7.github.io/):伴随着各个领域的技术体系的升级,编程语言一直在持续的迭代和发展。拿移动端来说,Swift/Kotlin 方兴未艾。竟还横空出世了 Rust,成为移动技术领域的新宠。服务端技术也一样,微服务的大火让 GO 也成为主流的服务端开发语言。本篇文章是两个在编程领域颇具名气的前辈针对时下流行的编程语言的设计背景、优劣势进行讨论,很有价值。其中也讨论到了编程语言设计的核心标准:解决当下面临的痛点问题。 这也能够帮助我们在学习语言的时候对于语法和最佳实践有更深刻的认识。
+
+### 🐕 [Swift 在 58 安居客房产实践](https://mp.weixin.qq.com/s/xMhVbw2-z2sDQbF9I8_0uA)
+
+[@xiaofei86](https://github.com/xiaofei86):随着苹果对 Swift 的大力推广,越来越多以 Objective-C 为基础的老项目逐渐以混编的形式开始尝试 Swift。本文 58 安居客房分享了自己的产品率先从 Objective-C 向混编改造的经验,以及在改造过程中遇到各种问题的分析及解决过程。
+
+## WWDC21 内参
+
+### 🌟 [检测和诊断 App 内存问题](https://mp.weixin.qq.com/s/E80VEIJma66fj7BZy1cCeQ)
+
+本 Session 讲解了如何使用 Xcode 检测和诊断内存问题。首先需要了解内存构成,内存占用对 App 的影响、以及一些常见的内存问题,最后学习使用一些工具来分析并解决内存问题。
+
+### [iPhone 相机拍摄新变化](https://mp.weixin.qq.com/s/swzI8C1NHeDFQNBbkQQhUQ)
+
+去年 Apple 对 iPhone 的相机升级是非常明显的,比如增加了 10-bit HDR 视频的拍摄,Apple ProRaw 的支持等。同时得益于 M 系列/A 系列芯片强大的算力,Apple 目前对于拍摄上的思考和提升更多走的是 [计算摄影](https://zh.wikipedia.org/zh-hans/%E8%AE%A1%E7%AE%97%E6%91%84%E5%BD%B1) 路线,而非在光学硬件上做大幅度提升。所以今年的 WWDC Apple 将相机的更多能力开放给开发者使用。
+
+### [更好用的 sheet](https://mp.weixin.qq.com/s/AR3SH9ddgKAiBDOVuPPUug)
+
+在 WWDC19 的 [Modernizing Your UI for iOS 13](https://developer.apple.com/videos/play/wwdc2019/224) 中,苹果介绍了 sheet 这种 present 视图控制器的方式。在 WWDC21 的 [Customize and Resize sheets in UIKit](https://developer.apple.com/videos/play/wwdc2021/10063/) 上,苹果介绍了对 sheet 展示方式的一系列优化,包括自定义视图大小、背景可交互等一系列新能力。让我们一起具体了解下吧 ~
+
+## 工具
+
+### [RegexLearn](https://regexlearn.com/zh-cn)
+
+[@红纸](https://github.com/nianran):RegexLearn 是一个正则表达的学习网站,与其他网站不同的是,它是一个游乐场,通过实践来学习和测试正则模型。
+
+> 推荐人:[KeithBird](https://github.com/KeithBird)
+
+### 🐎 [用 rust 实现苹果的 atos 工具,atosl-rs 发布啦](https://mp.weixin.qq.com/s/Oy9jXMnVMYF55nqUpN2WXQ)
+
+[@Smallfly](https://github.com/iostalks):iOS 符号解析是非常基础的需求,苹果在 macOS 平台上提供了 `symbolicatecrash`, `atos` 等工具。作者使用 Rust 语言实现了一个跨平台的解析工具 `atosl-rs`,并做了开源,有兴趣可以围观。
+
+## 代码
+
+### [Rainbow](https://github.com/onevcat/Rainbow)
+
+[@享耳先森](https://github.com/iblacksun):Rainbow 是 [@onevcat](https://onevcat.com/tabs/about/) 开源的一个控制台和终端日志输出库,可以给文字添加颜色、背景色、样式等信息,支持 Apple 和 Linux 平台。
+
+### [CreateAPI](https://github.com/kean/CreateAPI)
+
+[@Damien](https://github.com/ZengyiMa):CreateAPI 是用 Swift 编写的 OpenAPI 规范生成代码的工具,它具备 4 大优势:
+
+* 快速:在不到一秒的时间内处理 100K 行 YAML 的规范。
+* 智能:生成的 Swift 代码看起来就像手写的一样标准。
+* 可靠:在 100 万行公开可用的 OpenAPI 规范上测试,每次都能生成正确的代码。
+* 可定制:提供大量的定制选项来完成各种精细化控制
+
+## 音视频
+
+### 🚧 🐢 [Springboard: the secret history of the first real smartphone (Full Documentary)](https://www.youtube.com/watch?v=b9_Vh9h3Ohw&ab_channel=TheVerge)
+
+[@老驴](https://weibo.com/u/6090610445):科技行业总有存在一些超越时代的产品,他们生不逢时,最后不一定会成功,甚至大部分都失败了,但是他们对行业的引导性让之后的其他人,最终在合适的时间,合适的地点,做出合适的产品。就比如智能手机,现在的代表是 iPhone,但是在 iPhone 之前,有一些公司已经做了一些对智能手机的尝试。Verge 做了一期纪录片,采访了当时最早那批坚信移动互联网革命的人,他们来自 Handspring,第一个做出了世界上真正意义上的智能手机:Treo 系列。Handspring 后来也被 Palm 收购,而当时 Handspring 坚信的移动浪潮也最终来临。
+
+### 🌟 卖鱼桥分桥 - 老司机技术周报四周年纪念
+
+[@Damonwong](https://github.com/Damonvvong): 上周受周报创始人 [@卓同学](https://github.com/lacklock) 之约,我和 [@Parsifal](https://github.com/ParsifalC) 一起做客了他播客节目「卖鱼桥分桥」,聊了聊关于老司机技术周报的一些背后的故事,如果你对我们的故事也比较感兴趣可以在闲暇之余听一下哈~
+
+- [老司机技术周报四周年纪念(上):成立、纳新、技术沙龙](https://www.xiaoyuzhoufm.com/episode/61d2baf2cb0f5d7d1b7ccc44?s=eyJ1IjoiNWViODA4Y2UwZGJlZDIyMjcyY2ViNzk4IiwiZCI6MX0%3D)
+- [老司机技术周报四周年纪念(下):主编交接](https://www.xiaoyuzhoufm.com/episode/61d442e0cb0f5d7d1b7ccca8?s=eyJ1IjoiNWViODA4Y2UwZGJlZDIyMjcyY2ViNzk4IiwiZCI6MX0%3D)
+
+## 摸鱼周报
+
+[@摸鱼周报 #40](https://mp.weixin.qq.com/s/y4229I_l8aLILR7WA7y01Q):第四十期摸鱼周报来了,一起来看下本期概要:
+
+* 话题:我们启用了新封面
+* Tips:Swift 中的预编译
+* 面试模块:dyld 2 和 dyld 3 的区别;Objective-C 及 Swift 编译流程
+* 优秀博客:包依赖管理工具
+* 学习资料:从头开发一个迷你 Go 语言编译器
+* 开发工具:git 资源库浏览工具 Tig
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+公众号回复「WWDC」可以获取往年《WWDC 内参》,回复「PPT」可获取往期线下沙龙 PPT 材料。
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#189-2022.01.17.md b/Reports/2022/#189-2022.01.17.md
new file mode 100644
index 000000000..85d49a350
--- /dev/null
+++ b/Reports/2022/#189-2022.01.17.md
@@ -0,0 +1,164 @@
+# 老司机 iOS 周报 #189 | 2022-01-17
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 手机 QQ 体积暴增,接近 900M
+
+[@Damonwong](https://github.com/Damonvvong): 上周手机 QQ 迎来今年的第一次升级,给大家带来了一个巨大的 “惊喜”,iOS 版本的安装包已经达到了 879M,有眼尖的网友发现内置了一个 UE4 虚幻引擎,但是用在了哪个功能至今还未发现。手机 QQ 和元宇宙会擦出怎么样的火花,让我们拭目以待 ~
+
+### [“App 分析”现已可用于 app 内活动](https://developer.apple.com/cn/news/?id=pa0x2dzk)
+
+App Store Connect 中的“App 分析”能有效帮助您了解用户如何发现您的 app 并与之互动。您现在可以查看有关 app 内活动的信息,包括活动页浏览量、提醒和通知数据,以及由 app 内活动带来的下载和重新下载次数。每个指标都可以按照地区、来源类型、设备以及更多分类进行查看,让您能轻松了解您的 app 内活动如何推动了 app 的增长和成功。
+
+### 🐎 [字节跳动技术 iOS 技术沙龙正式报名开启](https://mp.weixin.qq.com/s/yPTIOxJtl4BsjkDN0rXDdw)
+
+[@Leo](https://github.com/leomobiledeveloper):字节跳动第三次技术沙龙,本次主题是关于 iOS 开发的,可以通过这次沙龙了解「抖音 iOS 基础技术」的技术细节。本次分享的主题涉及架构、构建、自动化、性能、稳定性等领域,内容很丰富,时间在1月22日下午,进入文章即可免费报名,获取在线观看地址。
+
+## 新手推荐
+
+### 🐎 [iOS 浮点类型精度问题小记](https://juejin.cn/post/7047767024931438605)
+
+[@极速男孩](https://github.com/ztlyyznf001):浮点数精度丢失的问题是不少人都会面临的问题。本文主要介绍了在 iOS 中如何避免精度丢失的问题,并且解析了精度丢失的主要原因。
+
+### 🐎 [Loop](https://www.swiftbysundell.com/basics/loops/)
+
+[@享耳先森](https://github.com/iblacksun):Swift 有多种内置语法对集合类型进行迭代:`for` `forEach` `enumerated()` `while` 等,本文介绍了各种语法的具体差异,建议阅读。
+
+## 文章
+
+### 🌟 🐢 [【译】SE-0302 Sendable 和 @Sendable 闭包](https://kemchenj.github.io/2022-01-07/)
+
+[@四娘](https://kemchenj.github.io/):去年 WWDC 里 Swift 更新了 Concurrency 相关的功能,后续的更新提供了一定程度的向后兼容,让 iOS 13 的程序也可以用上这些功能。
+
+虽然 WWDC 上大部分篇幅都是在介绍 async/await,结构化并发和 Actor,但实际接入过程中这些功能并没有带来太多问题,反而是 Sendable 的检查难住了我,深入了解之后才发现这个功能是帮助 Concurrency 走向 type-safe 的关键。
+
+通过翻译这篇文章解答了很多我在这个过程中的疑惑,非常推荐想要接入 Concurrency 的同学进行阅读:
+
+> Swift Concurrency 的功能渴望建立一个安全而强大的编程模型。我们希望实现这三件事:
+>
+> 1. 我们希望 Swift 程序员在试图 跨并发域传递 可能引入不受保护的共享可变状态 时得到一个静态的编译器错误。
+> 2. 我们希望高阶程序员能够实现包含复杂技术的库(例如并 ConcurrentHashTable),并且能够让其他人以一种安全的方式去使用。
+> 3. 我们需要拥抱现有的世界,其中包含了很多在设计时没有考虑到 Swift 并发模型的代码。我们需要一个平滑和渐进的迁移策略。
+
+### 🌟 🐢 [基于 dylib 注入原理实现 iOS 热重载框架 CocoaHotReload](https://mp.weixin.qq.com/s/XsfYUBD2YK9Tq4cfoGW4JA)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):非常详细的热重载实现原理介绍,支持真机(iOS 13+)、Swift 的 4 种函数派发方式都能支持、支持 Storyboard & xib 资源文件等等。方案十分完整,关键实现也已贴出代码,推荐一读。文章主要内容如下:
+
+- Mac app,主要职责是根据修改文件查找对应的编译指令并执行生成 .o 文件,接着链接 .o 文件及依赖的库生成 dylib 动态库
+- iOS Framework,主要职责是 动态库注入 和 资源包更新
+ - ObjC 类替换,Swift 函数替换,C函数替换(Dobby 实现)
+ - hook 函数处理,解决函数调用栈丢失与死循环的问题
+- 解决 Swift 函数热重载问题
+- 解决部分库设置 Symbol hidden by Default 为 YES 导致的 Symbol not found 问题
+
+### 🌟 🐕 [基于 Web 内核的微信小程序框架实践](https://mp.weixin.qq.com/s/vEu2Ft4c6LHPeUBHChjfFA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 微信小程序技术一直作为业界跨端方案的标杆一样的存在,此次小程序在内核上大跨步式改动,从类 PWA 转入 Chrome 内核以获得在 PC 层面的更多能力,并集成了 Node ,目前还未在 iOS 上应用,但作为跨端方案还是很有借鉴意义的,推荐相关同学深入阅读。
+
+### 🐢 [A short-term roadmap for C++ interop](https://forums.swift.org/t/a-short-term-roadmap-for-c-interop/44768)
+
+[@Damien](https://github.com/ZengyiMa):本文是 Swift 社区提出的 Swift 和 C++ 交互的 roadmap 规划。其中主要目标是希望在接下来的几个月里,Swift 编译器可以完全导入 libc++ 头文件、LLVM 头文件和 Swift 头文件而不崩溃。对 Swift 编译相关感兴趣的同学建议一读。
+
+### 🐢 [Swift 在手淘商品评价的技术重构与实践](https://mp.weixin.qq.com/s/J4wxvr5JvibG7vUtRz3ing)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):本文主要是对手淘探索 Swift 业务落地的一个总结。更快、更安全且更具备表达性的 Swift,这些年明显比 OC 发展的更好,国内外混编应用的占比持续增高,长远来看,使用 Swift 几乎是日常开发的不二之选。对于大型项目,引入 Swift、从哪些业务模块引入 Swift、引入 Swift 对当前项目架构的冲击等都是需要慎重考量的,文中也都有详细阐述,旨在希望可以给大家在技术选型或探索避坑的时候给到一点帮助。
+
+### 🐎 [Xcode 配置多套 App 图标的方法 --- AppStore 图标 A/B Test 实践](https://mp.weixin.qq.com/s/BApDWf9acuFBSONzV2OnEQ)
+
+[@老峰](https://github.com/gesantung):2021 年 12 月 08 日,苹果推出 App Store 产品页的新功能,在 App Store 中开发者可以针对 app 产品页的不同版本上使用不同的图标、截屏和 app 预览,通过 A/B Test 找出效果最佳的版本。本文主要介绍了使用 Xcode 13 在 Assets.xcassets 创建多套测试的图标的操作细节以及要注意的一些点。
+
+### 🐎 [让 UIKit 更优雅易用:Block 回调改造](https://juejin.cn/post/7045133536495403015)
+
+[@JonyFang](https://github.com/JonyFang):HWBlocksUI 对 UITableView,UITextField,UIButton,UISwitch 等常用的 UIKit 类进行了扩展,将之前需要 Delegate 或 target+selector 回调的方式改成了 Block。使用 Block 的优势体现在:
+
+1. 代码紧凑,无需声明协议,可以将相关代码逻辑集中在一起,降低开发调试成本;
+2. 允许访问上下文变量,无需再专门抽出实例变量供不同代理方法共享;
+
+### 🐢 [Cube 技术解读 | Cube 小程序技术详解](https://mp.weixin.qq.com/s/Sm2xtyxPMGucUHtaUy_aOQ)
+
+[@Leo](https://github.com/leomobiledeveloper):在动态化或者跨端开发里,小程序是一个业界典型的实现方案。Cube 是阿里出品的轻量级小程序技术栈,具有体积小、启动快、内存占用低等特点。本文详细介绍了 Cube 小程序技术栈与技术演进实践,包含了布局计算、样式能力、组件支持、引擎优化等方方面面,推荐阅读。
+
+### 🐢 [Swift Playgrounds 4 娱乐还是生产力](https://mp.weixin.qq.com/s/Uyd9Nf12HpmslYR0zOQaEQ)
+
+[@anotheren](https://github.com/anotheren):赶在 2021 年底,苹果终于发布了 Swift Playgrounds 4,作为近年来最具革命性意义的版本,Swift Playgrounds 4 提供了在 iPad 上开发并发行 App 的能力。本文介绍了这个版本的最新功能。如果你还没入门,不妨再读一下下面这个系列:
+
+- [玩转 Xcode Playground(上)](https://mp.weixin.qq.com/s/rHNrTt7CReTLL8aubz0SqQ)
+- [玩转 Xcode Playground(下)](https://mp.weixin.qq.com/s/_kggsB9kL5jYi-40KDMsrQ)
+
+### [一场开源 RSA 库引发的“血案”](https://mp.weixin.qq.com/s/UM_Nrfd2I0oVosD6iQDn5w)
+
+[@老驴](https://weibo.com/u/6090610445):58 同城团队的一篇使用开源库踩坑的分享。简单来说就是 58 团队在使用了开源库后,上线发现频繁崩溃吗,debug 后发现原作者没有正确处理多线程。这类问题其实并不少见,很多人在使用开源库的时候,并没有去仔细调研库,而使用以后出现问题,甚至很难自己修复。也希望这篇文章能对大家是个提醒,最好在用开源库之前,先读一读代码,理解一下代码的意思,这样即便真的踩坑,需要 debug,也会轻松不少。
+
+## WWDC21 内参
+
+### [SwiftUI 技术内幕](https://mp.weixin.qq.com/s/Q8EuaXei9Q0q-3OyD6n9Bw)
+
+通过阅读本文,带你一起深入解读 SwiftUI,提高应用程序的性能。
+
+### [初探 Swift 算法和集合](https://mp.weixin.qq.com/s/WpvuuUXQPwBHZpk8OmuPDg)
+
+本文主要介绍 Swift 的算法和集合开源包。列举了其中的几个算法和数据结构,深入了解 Swift 实现和优化方式。
+
+## 工具
+
+[Automatically merging conflicts in Xcode project files](https://blog.kulman.sk/automatically-merge-xcode-project-conflicts/)
+
+对于大一些的项目工程,参与提交代码的人比较多时,常常会遇到需要处理代码冲突的时候。常规的代码冲突只需要通过代码片段确认逻辑就可以解决,而有些文件格式,可读性很差,解起来很麻烦,例如 Xcode 项目文件(project.pbxproj)。Kintsugi 是一个轻量级工具,可以自动解决 Xcode 项目文件中的冲突。只需要通过 gem 安装:
+```
+gem install kintsugi
+```
+然后执行下面的命令,kintsugi 会帮助解决冲突,非常方便
+```
+kintsugi App/project.pbxproj
+```
+
+## 代码
+
+### [Flipper](https://github.com/facebook/flipper)
+
+[@Barney](https://github.com/BarneyZhaoooo):Flipper 是 Facebook 开源的一个面向移动端(Android/iOS)开发者的桌面调试平台。
+
+其主要包含:
+
+- macOS 的桌面应用程序
+- Android 和 iOS 的原生 SDK
+
+## 摸鱼周报
+
+[@摸鱼周报 #41](https://mp.weixin.qq.com/s/DNXrfZgx0JaXyvfVZ4sYVA):第四十一期摸鱼周报来啦,一起来看下本期概要吧:
+
+- 话题:In-App Events 数据分析上线了;线上沙龙:抖音 iOS 基础技术大揭秘。
+- Tips:在 Objective-C 中标记构造器为指定构造器。
+- 面试模块:如何检测内存泄露。
+- 优秀博客:野指针的捕获与防护。
+- 学习资料:一份可视化的 Web 技能列表。
+- 开发工具:SwiftInfo 是一个 CLI 工具,用于提取、跟踪和分析对 Swift 应用程序有用的指标。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#190-2022.01.24.md b/Reports/2022/#190-2022.01.24.md
new file mode 100644
index 000000000..d1fbbef98
--- /dev/null
+++ b/Reports/2022/#190-2022.01.24.md
@@ -0,0 +1,183 @@
+# 老司机 iOS 周报 #190 | 2022-01-24
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🌟 🐕 [Bazel](https://bazel.build/)
+
+[@红纸](https://github.com/nianran):Bazel 是最近比较热点的话题之一。作为新的构建系统,它具有远端缓存、远端执行、跨平台、高度扩展、高性能等诸多特性。不仅仅局限于 iOS 的构建领域,在其 Rules 的帮助下,可以扩展很多可能性。
+这边为大家稍作整理,给大家作为参考:
+- 几篇入门:
+ - [Bazel 官网](https://bazel.build/)
+ - [Bazel 入门 - 放浪者](https://zhuanlan.zhihu.com/p/262171925)
+ - [Bazel - Sunxxxxx丶](https://www.jianshu.com/p/727cbf544c47)
+- 几篇分享:
+ - [用 bazel 更快更稳定的构建 iOS 项目](https://bilibili.github.io/2020/07/22/bazel_ios.html)
+ - [基于 Bazel的 iOS MonoRepo 实践](https://mp.weixin.qq.com/s/zFrKoHPBv3qz8TiwdqP8Fw)
+ - [Improving Build Performance of LINE for iOS with Bazel](https://engineering.linecorp.com/en/blog/improving-build-performance-line-ios-bazel/)
+- 几个工具、库:
+ - [PodToBUILD](https://github.com/pinterest/PodToBUILD):将 Cocoapods 的仓库转化为 Bazel 的 BUILD 文件
+ - [cocoapods-bazel](https://github.com/bazel-ios/cocoapods-bazel):Cocoapods 的 bazel 插件
+ - [tulsi](https://github.com/bazelbuild/tulsi):将 Bazel 的 BUILD 工程转成 Xcode 识别的 xcodeproj 工程
+ - [xchammer](https://github.com/pinterest/xchammer):将 Bazel 的 BUILD 工程转成 Xcode 识别的 xcodeproj 工程
+- Awesome Rules:
+ - [bazelbuild/rules_apple](https://github.com/bazelbuild/rules_apple)
+ - [bilibili/rules_apple](https://github.com/bilibili/rules_apple)
+ - [line/rules_apple_line](https://github.com/line/rules_apple_line)
+
+> PS1: 内容比较多,大家可以慢慢消化一下。关于 Bazel 的讨论,也欢迎加入我们粉丝群进行交流,详情 @老王。
+> PS2: 字节于 2022/01/22 进行了 JoJo 构建系统的分享,Bazel 作为其核心的组成部分之一。分享文章跟视频暂时没有发布,大家可以等待一下。
+
+### 🌟 🐕 [GCDAsyncSocket 在 iOS15 出现 -[_NSThreadPerformInfo dealloc] 崩溃排查笔记](https://mp.weixin.qq.com/s/Tn8SN1eNaGkR1ddEKTkzPQ)
+
+[@邦Ben](https://weibo.com/linwenbang):从 iOS 15.0 Beta5 开始,集成开源库 GCDAsyncSocket 的 APP 开始出现 -[_NSThreadPerformInfo dealloc] 相关的崩溃,作者从堆栈开始分析,讲述整个排查过程思路,并且每个步骤的分析以及原理都进行了很深入的研究,从而得到了最后的 crash 原因以及给出解决方案,结论先放出来,但是过程非常推荐一看。
+
+- 结论:经过前面的分析,我们可以得知,iOS 的新系统中存在一个 bug,该 bug 导致即使我们通过将参数waitUntilDone 设置为YES 的方式阻塞当前线程时,仍然存在触发悬垂指针的可能。
+- 方案:
+ 1、通过单例持有 GCDAsyncSocket,避免调用 -[GCDAsyncSocket dealloc]
+ 2、先主动调用-[GCDAsyncSocket disconnect],再释放GCDAsyncSocket的实例
+ 3、通过调整withObject:的参数,避免将 GCDAsyncSocket 的实例进行传递
+
+### 🐕 [浅谈软件开发架构模式](https://mp.weixin.qq.com/s/cWp4J-XmvaoWHRMeuVDzPQ)
+
+[@Smallfly](https://github.com/iostalks):架构对开发者来说都不陌生,然而相同的架构模式在不同场景下可能有所区别。本文作者结合具体的问题和案例,从个人角度阐述了对 MVC/MVVM/VIPER 等架构模式的理解及运用。
+
+### 🌟 🐕 [字节跳动 iOS Heimdallr 卡死卡顿监控方案与优化之路](https://mp.weixin.qq.com/s/qzA1g4mAH_Kgzc4fwVK2Rw)
+
+[@Leo](https://github.com/leomobiledeveloper):卡顿、卡死会造成应用体验大幅下降,进而影响留存、时长等核心业务数据。本文介绍了字节 APM 框架 Heimdallr 是如何监控卡顿卡死的,细节在字节系应用上验证和完善,被证明了是一套全面、稳定、可靠的技术方案。
+
+### 🐢 [移动域全链路可观测架构和关键技术](https://mp.weixin.qq.com/s/grW6r_cpmrxEJ-pMacKtGg)
+
+[@xiaofei86](https://github.com/xiaofei86):监控告诉我们系统的哪些部分是工作的,而可观测性告诉我们那里为什么不工作了[[1]](https://xie.infoq.cn/article/598fd893709f01ae751dbd7b8?utm_medium=article)。相比传统的监控,可观测性能够通过结合数据,并且将数据有机联系在一起,产生更好的连接,帮助我们更好的观察系统的运行状况,快速定位和解决问题。
+
+本文淘宝 App 基础团队通过对可观测理念的理解并结合客户端在运维排查、度量监控、全链路优化等方面遇到的实际问题,阐述团队对移动领域全链路技术理念的原创性应用。读者将收获移动技术域体验优化的思路转变,以及软件定义体验的沉淀和研发实践。
+
+### 🐕 [iOS 如何记录堆栈信息?](https://juejin.cn/post/7049267131036205086)
+
+[@AidenRao](https://weibo.com/AidenRao):在 APP 卡顿、Crash 以及某些特定时机,开发者会想记录一下当前的堆栈信息。这篇文章主要从 [BSBacktraceLogger](https://github.com/bestswifter/BSBacktraceLogger) 源码入手,去理清记录堆栈信息的原理:回溯栈帧,获得函数调用地址,解析 MachO 文件获取函数名。
+
+### 🌟 🐕 [从 0 到 1:美团端侧 CDN 容灾解决方案](https://mp.weixin.qq.com/s/BA55Op8A29sXq-_SHv1igg)
+
+[@JonyFang](https://github.com/JonyFang):本文结合美团外卖业务中的具体实践,介绍了一种在端侧感知 CDN 可用性状况并进行自动容灾切换的方案,通过该方案可有效降低业务对CDN异常的敏感,提高业务的可用性,同时降低CDN运维压力。
+
+### 🐎 [静态库冲突问题思路全解](https://mp.weixin.qq.com/s/LAFS-6Oycnzu5kOhS9d7pA)
+
+[@AidenRao](https://weibo.com/AidenRao):iOS 开发中经常会遇到静态库冲突的问题,Xcode 报错关键词是duplicate symbol xxx,造成冲突的常见原因一般有两种:
+
+- 项目中引入了命名不同的同一个静态库。
+- 引入了不同的 SDK,SDK 中引用了同一个静态库。
+
+本文介绍了解决冲突的多种方案,并对优缺点进行了对比。
+
+### 🐕 [淘宝小部件 Canvas 渲染流程与原理全解析](https://mp.weixin.qq.com/s/o772Ziaxj64IOXXnckPFNQ)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文主要阐述 Canvas 在小部件下的渲染原理。从端上技术视角看,小部件首先是一个业务容器,它的特点是**DSL标准化、跨平台渲染、跨场景流通**
+
+- **端侧整体技术架构**
+- **多视角看渲染流程**
+
+### 🐎 [從前端視角看 SwiftUI](https://blog.kalan.dev/2022-01-09-learn-swiftui-from-frontend-view/)
+[@Smallfly](https://github.com/iostalks):SwiftUI 和 React 同为声明式框架,在使用上存在相似之处。本文站在前端视角,分别从组件化,响应式机制,状态管理,数据绑定等几个维度对比了两者使用上的异同点。而在开发体验上,Swift 作为静态编译型语言和 JavaScript 的动态性相比仍有差距。
+
+### 🐎 [Apple’s use of Swift and SwiftUI in iOS 15](https://blog.timac.org/2021/1219-state-of-swift-and-swiftui-ios15/)
+
+[@anotheren](https://github.com/anotheren):在最新的 iOS 15 中,Swift/SwiftUI 在内置 App 的使用率进一步提升,如果你还在犹豫新技术的使用,看看 Apple 对于有内置 App 的改变。
+
+### 🌟 🐕 [iOS 之深入理解 Image 与 MachO](https://juejin.cn/post/7053289480131706911)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了 Mach-O 以及其三个主要部分:Header、Load Commands 和 Data 的数据结构和功能。也介绍了 image、 Segment 和 Section 的相关操作 API
+
+### 🌟 🐕 [iOS 线上野指针探测实践与展望](https://mp.weixin.qq.com/s/BNIWBwemmz4isbjBb9-pnQ)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):野指针问题线下难以复现,crash发生时的堆栈也大概率不是问题的直接原因,因此线上的野指针检测方案是很值得探索的。为了尽量减小对帧率与内存的影响,作者也进行了三个方向的优化:
+
+- 仅监控必要的类型,对于系统类则通过基于 Bind 信息的方案,监控项目中使用到的系统类
+- dealloc 中减少耗时操作:不要调用任何 OC 代码、不要使用 objc_setAssociatedObject、先判断 isTaggedPointer
+- 多线程处理对象释放与入池;用堆栈距离 (UInt64)&_mh_execute_header 的偏移替代堆栈,用 memcpy 替代 vm_read_overwrite
+
+### 🐕 [用 SwiftUI 实现一个开源的 App Store](https://juejin.cn/post/7051512478630412301)
+
+[@JonyFang](https://github.com/JonyFang):App Store 在 iOS 11 之前,App 排行榜一直是衡量开发者 App 活跃度的指标,在 iOS 11 后苹果弱化了榜单功能,改为了二级入口,相对之前榜单查询变得困难。编者通过 SwiftUI 结合开放 API 实现了一个可查看 App 榜单、搜索、信息、发布生效等功能的 App,该项目已开源。入门 SwiftUI 的同学,可以作为参考项目学习 SwiftUI。
+
+### 🌟 🐕 [干货 | Dart 并发机制详解](https://mp.weixin.qq.com/s/WCvv7DXzWXNRaMtM-0u7pA)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): 在日常的 Flutter 开发中最常接触到的便是 async-await 异步机制,鲜少有碰到使用 isolate 的情况,本文从 async-await 切入带你详细了解 isolate 的原理,生命周期、多 isolate 之间通信等,小编推荐所有 Flutter 开发同学仔细学习。
+
+### 🐕 [在 SwiftUI 下定制手势](https://mp.weixin.qq.com/s/V_8jP3OPJa58eRz442LlQA)
+
+[@老峰](https://github.com/gesantung): SwiftUI 目前提供了 5 种预置手势,分别为点击、长按、拖拽、缩放和旋转,其本身没有采用对 UIGestureRecognizer(或 NSGestureRecognizer)进行包装的形式,而是重构了自己的手势体系,由于缺乏提供底层数据的 API,严重制约了开发者的深度定制能力,本文通过如下示例讲解了 SwiftUI 下定制手势:
+- 轻扫:DragGesture 获取判断移动方向的数据,根据偏移量判断方向
+- 实现一个可以记录时长的按压手势:通过计时器在指定时间间隔后向闭包传递当前按压的持续时间。使用 GestureState 保存点击开始的时间
+- 实现提供触摸位置信息的点击手势:使用 simultaneously 将两种手势联合起来,从 DrageGesture 中获取位置数据,从 TapGesture 中退出
+
+### 🐕 [iOS瘦身!一个让50%本地图片消失的方案](https://juejin.cn/post/7053978539523047437)
+
+[@水水](https://www.xuyanlan.com): 安装包瘦身一直是老生常谈的问题,这篇文章尝试了一个比较有意思的图片管理尝试 - 云端图片资源管理方案。基本思路是把可能未使用的图片通过脚本剔除出项目,在App启动后动态加载那些被剔除图片的zip包。具体实施方案和注意事项文章中都有提到,正在为安装包瘦身烦恼的读者朋友,感兴趣的可以看看~
+
+### 🐕 [手机 APP 是不是在偷听我说话?](https://mp.weixin.qq.com/s/FCOrMXeV53YcoKgQ869aYw)
+相信很多读者会有一个疑问,手机是不是在偷听我说话?可能今天刚刚跟同事说了买什么东西,结果一打开某个 app,第一页就正好显示了刚说的东西,这看起来很可怕。最近一期“猿桌派”节目,几位嘉宾就告诉了我们这个问题的答案,想知道答案的不妨听一听这期界面,除了这个问题,还有很多关于数据打点等的干活哦。
+
+## 摸鱼周报
+
+[@摸鱼周报 #42](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU2MDQzMjM3Ng==&scene=124#wechat_redirect):第四十二期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:2022年1月31号之后提交的应用需提供账号删除功能。
+* Tips:openssh 8.8 默认禁用 ssh-rsa 加密算法导致 git 验证失效。
+* 面试模块:如何治理 OOM。
+* 优秀博客:一些优秀开发者的年终总结。
+* 学习资料:程序员考公指南;Vim 从入门到精通(中文)。
+* 开发工具:摸鱼单词,专注于利用碎片时间学习记忆英语单词。
+
+## 代码
+
+### [XMachOViewer](https://github.com/horsicq/XMachOViewer)
+
+[@Damien](https://github.com/ZengyiMa):XMachOViewer 是支持 Windows、Linux 和 MacOS 的 MachO 文件查看器和编辑器。它具备以下能力:
+
+* 启发式扫描
+* 字符串查看器
+* 十六进制查看器
+* 汇编查看器( x86/64, ARM, PPC, m68k)
+* 熵值查看器
+* 哈希查看器
+* 密码搜索
+* 名称符号解析
+
+
+### [PAG](https://mp.weixin.qq.com/s/FncvW2ObIJGafk4X7EAZ-A)
+[@莲叔](http://github.com/aaaron7):PAG 是近期技术社区比较热门的话题。PAG 是腾讯出品的一款特效 SDK,能够直接将设计师在 AE 设计的特效转换后直接在手机端展示,应用场景复杂的可以延伸至视频编辑的各种转场、贴纸特效,简单的也可以作为 Lottie 的替换,来实现端内一些 UI 动画效果。腾讯开放这款 SDK 的使用已经有一段时间,近期正式宣布了开源。开源意味着接入的成本与风险大大降低,对于业务有了更大的可控性,同时能享受到 PAG 的各种性能优化。如果你的业务有相关的场景,不妨可以了解一下。
+
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#191-2022.02.14.md b/Reports/2022/#191-2022.02.14.md
new file mode 100644
index 000000000..a600f47e5
--- /dev/null
+++ b/Reports/2022/#191-2022.02.14.md
@@ -0,0 +1,159 @@
+# 老司机 iOS 周报 #191 | 2022-02-14
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [非公开 app 分发](https://developer.apple.com/cn/support/unlisted-app-distribution/)
+
+AppStore 现在已经支持将不适合公开分发的 app 以非公开方式在 App Store 上发布,使其仅可通过直接链接发现。非公开 app 不会出现在任何 App Store 类别、推荐、排行榜、搜索结果或其他列表中。但可以通过 Apple 商务管理和 Apple 校园教务管理访问。面向特定组织、特别活动或调查研究的 app,或者用作员工资源或销售工具的 app,都非常适合进行非公开分发。
+
+### [Apple Ads 现已支持自定产品页](https://developer.apple.com/cn/news/?id=ay7673lx)
+
+
+
+借助自定产品页功能,您可以创建多达 35 个额外的 App Store 产品页版本,以展示您 app 的不同功能、内容或促销活动。现在,自定产品页更与 Apple Ads 无缝集成,助您轻松地在 App Store 上针对不同受众群量身打造更好的广告版本。
+
+## Developer - 设计开发加速器
+
+### [探索 A15 芯片的 Metal 高级功能](https://developer.apple.com/cn/accelerator/)
+
+2022 年 2 月 15 日(报名截止 2022 年 2 月 14 日)
+
+通过本次演讲您将了解如何使用 Metal 和 A15 芯片提升 app 和游戏的性能。我们将介绍 Apple GPU Family 8 的最新 Metal 功能:如何运用低损压缩节省内存,通过稀疏深度和模板纹理深入研究复杂的阴影映射技术,以及借助 SIMD 混洗和填充指令更快地处理图像。
+
+### [在您的 App 中构建隐私保护](https://developer.apple.com/cn/accelerator/)
+
+2022 年 2 月 17 日 (报名截止 2022 年 2 月 17 日)
+
+Apple 认为隐私是一项基本人权。我们将会带大家了解我们的四项核心隐私原则,以及您如何运用这些原则实现 app 特性和提升用户体验。探索您该如何在 app 中实现数据最小化、本机处理、透明度和控制权以及安全保护措施。
+
+
+
+## 新手推荐
+
+### 🐎 [Combining protocols in Swift](https://www.swiftbysundell.com/articles/combining-protocols-in-swift/)
+
+[@享耳先森](https://github.com/iblacksun):`Protocol` 是 `Swift` 中非常重要的基石,可以实现代码复用。本文详细介绍了利用 `Protocol` 的 `Extension` 及 `Conform` 特性实现代码复用与隔离。
+
+### 🐎 [Swift 演进之路](https://ming1016.github.io/2022/02/10/swift-evolutionary-path/)
+
+[@老峰](https://github.com/gesantung):本篇主要梳理了 Swift 1.0 ~ Swift 5.5 演进过程中各版本新增的特性,Codable、dynamicCallable、SPM,Async await,能够更加全面和详细了解 Swift 语言的发展,文章中提到的 Swift 各版本的语法示例代码,及本文内容都可以在 Swift 小册子里对应栏目里找到,Swift 初学者推荐阅读。
+
+### 🐎 [Swift 子数组提取性能优化分析](https://mp.weixin.qq.com/s/5oZkKX03C4DBUcN16f9u3w)
+
+[@xiaofei86](https://github.com/xiaofei86):本文通过对 for 和 while 的对比,逐个赋值与 memcpy 的对比,以及不同编译选项 Optimization Level 的对比,得出在极限情况下提取 Swift 子数组的最佳性能方案。阅读原文了解各种方案选型的取舍。
+
+## 文章
+
+### 🌟 🐕 [如何监控 iOS 的启动耗时](https://ai-chan.top/code/launch-monitor/#hook-%E5%8D%87%E7%BA%A7%E6%96%B9%E6%A1%88)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文通过 IPC 方案监控用户的启动耗时,方案与[抖音通过 applicationDidBecomeActive:](https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247487757&idx=1&sn=a52c11f6a6f217bd0d3283de9b00c8bc&chksm=e9d0daefdea753f954cfcb15d5d0f90302a9f45ba06968377644ffe9e5757a69c5b0132d2c8b&scene=178&cur_album_id=1568330323321470981#rd)有些不同,理论上更接近真实用户体验。技术方案为通过 hook BSXPCServiceConnectionMessageReply 的 @selector(send) 实现。
+
+本文主要内容如下:
+- 介绍 iOS 的渲染机制 Render Loop
+- 分析 Render Loop 中的 Commit 阶段
+- 尝试 hook 系统 api 实现,初次的目标函数由于调用是由 b 直接跳转而失效,最终通过 hook send 方法得以实现
+
+### 🌟 🐕 [超全回顾 | 5位抖音工程师揭秘抖音iOS基础技术(附PPT和回放视频)](https://mp.weixin.qq.com/s/dFkGjCgZeXbYxsu3F40L-Q)
+
+[@J_Knight_](https://github.com/knightsj):本文整理了在今年1月22日下午举办的第三期字节跳动技术沙龙《抖音 iOS 基础技术大揭秘》的5个主题内容,分别是:
+1. 《大型 App 开发架构演进及挑战》
+2. 《抖音 iOS 自动化服务:容器化和规模化探索》
+3. 《超级 App 构建效能提升 40%!JOJO,字节自研 iOS 构建系统》
+4. 《抖音 iOS 体验优化:流畅性优化探索》
+5. 《抖音 iOS 稳定性优化与探索》
+
+对这些主题感兴趣的读者可以按需阅读,而且文章底部也有获取 PPT 和回放视频的方法
+
+### 🌟 🐕 [音视频基础概念合集:148 个问题带你快速上车音视频](https://mp.weixin.qq.com/s/X1idBFp7T5zhnqPmYSbQDw)
+
+[@JonyFang](https://github.com/JonyFang):音视频是一个有一定技术门槛的垂直领域,对于刚开始接触音视频开发的同学,最头疼的问题应该是音视频纷繁庞杂的概念。本文通过 148 个问题带你快速了解音视频基础概念,对音视频开发感兴趣的 iOS 开发同学也许有用。
+
+### 🐎 [WWDC NOTES](https://www.wwdcnotes.com/)
+
+[@Smallfly](https://github.com/iostalks):[WWDC NOTES](https://www.wwdcnotes.com/) 涵盖近十年 WWDC 视频的观看笔记,数量达上百篇,是一个开源社区驱动的网站。
+
+推荐结合老司机周报出品的 [WWDC 内参](https://xiaozhuanlan.com/wwdc21)阅读。
+
+### 🐕 [WebAssembly 2021 年回顾与 2022 年展望](https://mp.weixin.qq.com/s/aKNfdQIMC_uJ6Fx7SytdBA)
+
+[@邦Ben](https://weibo.com/linwenbang):该文对 WebAssembly 2021 年的发展做了归纳总结,以及对 2022 年的发展做了一些的预测。很多人可能对 WebAssembly 比较陌生,WebAssembly(缩写为 wasm)是一种使用非 JavaScript 代码,并使其在浏览器中运行的方法。这些代码可以是 C、C++ 或 Rust 等。它们会被编译进你的浏览器,在你的 CPU 上以接近原生的速度运行。目前还在发展阶段中,对 web 或者做跨端开发的同学可以多关注一下,未来没准 WebAssembly 的使用场景会更加宽泛。
+
+参考链接:
+[WebAssembly 开发者引导](https://www.wasm.com.cn/getting-started/developers-guide/)
+[几张图让你看懂WebAssembly](https://www.jianshu.com/p/bff8aa23fe4d)
+
+### 🐢 [深入剖析 iOS 编译 Clang / LLVM](https://xiaozhuanlan.com/topic/4916328705)
+
+[@Damien](https://github.com/ZengyiMa):本文深入且细致的介绍了 Clang / LLVM 编译器在构建一个 iOS 应用中各个流程所做的事情以及实现,从编译器的视角出发来阐述了编译过程的方方面面。对底层感兴趣的同学不妨一读。
+
+### 🐎[Swift 汇编(一)Protocol Witness Table 初探](https://mp.weixin.qq.com/s/dvWVnU7ZWiSIvQZBhWXnSw)
+
+[@kemchenj](https://kemchenj.github.io/):这篇文章从汇编的角度去解析 Swift 里通过 Protocol Witness Table 派发函数的原理,感兴趣的同学可以看一看。
+
+## WWDC 内参
+
+### [为 Swift 和 SwiftUI 带来 Core Data 并发](https://mp.weixin.qq.com/s/ELsrzsUtMv-rdXyPAN3ERA)
+
+@SZ: 今年 Core Data 上带来了大量的功能增强,其中包括使用了 Swift 并发的新 API。 这些变化改善了使用 Core Data 进行 Swift 和 Swift UI 开发的体验,简化了异步数据操作的程序,因此我们推荐大家学习并逐渐开始使用这些新的 API。
+
+### [App Clip 新特性](https://mp.weixin.qq.com/s/q8eptavjMvp48oppJ8F3cA)
+
+@昊泽: App Clip 是 WWCD20 的一大亮点,它提供了一种“即时使用”的方式,基于苹果提供的各种唤醒方式,让用户在特定场景下很方便地体验 App 内的核心功能。
+
+现在一年过去了,世界各地的开发者开发出了各种优秀的 App Clip。同时 Apple 提供了一种全新的 App Clip Card 的展示方式,也一并完善和优化了本地体验,并提供了命令行工具来帮助开发者们生成轻应用码。
+让我们一起来看看吧。
+
+### [再谈 watchOS 的数据传输](https://mp.weixin.qq.com/s/2DyDCknWzbLoFrVhyqaCdw)
+
+@Chars: 介绍 iCloud、Keychain、Watch Connectivity、Core Data 等这几种 Watch 支持的数据传输技术,简单说明它们的技术特点并进行优缺点比较。
+
+### [watchOS 8 中的新特性](https://mp.weixin.qq.com/s/VppEWHOZO4nsOJU5oanIAg)
+
+@kk: 第一段介绍了 Watch OS 8 中的很多新功能,包括 App 支持常亮显示,健康数据后台刷新等。第二段是代码编程环节,带领读者通过 Swift UI 构建了一个简单训练类应用。
+
+## 代码
+
+### [Cokile/TweaKit](https://github.com/Cokile/TweaKit)
+
+[@JonyFang](https://github.com/JonyFang):一个可替代 [SwiftTweaks](https://github.com/Khan/SwiftTweaks) 的轮子:
+
+1. 使用 Property Wrapper 定义 tweak;
+2. 原生支持 tweak 更多类型的值;
+3. 精心设计的 UI;
+4. 支持模糊搜索;
+5. 支持 json 数据的导入导出;
+
+## 摸鱼周报
+
+[@摸鱼周报 2021年度汇总](https://mp.weixin.qq.com/s/KPCx5jq9vn46MKziBUP0yQ):不知不觉摸鱼周报已经发展满一年了,回顾一下我们已经发布了非常多的内容。很多东西大家可能看完就忘了,但技术内容不比新闻,它基本不存在时效性,所以即使过去了一段时间,那些内容仍然是有价值,有生命力的。
+
+我将各期内容按模块分类进行了整理,分为学习资料、开发工具、面试题,优秀博客,开发概念五个模块,然后整理成一个 PDF。PDF 可以点击链接外跳,这一点会比公众号阅读体验好很多。全部汇总完毕,字数将近 96000 字,共有 272 页,还是满满当当的。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#192-2022.02.21.md b/Reports/2022/#192-2022.02.21.md
new file mode 100644
index 000000000..6e3090c16
--- /dev/null
+++ b/Reports/2022/#192-2022.02.21.md
@@ -0,0 +1,176 @@
+# 老司机 iOS 周报 #192 | 2022-02-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### 🌟 🐕 [Flutter 2.10 现已发布](https://mp.weixin.qq.com/s/FgMu6-O_wMkwxp2yxiW2Ew)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 2.10 已经发布,2022 年的第一个 Stable 版本,按照惯例每个季度只会发布一个 Stable 版本,所以每一个 Stable 版本都是成吨的优化和性能改进:
+- Flutter 构建 Windows 桌面应用 Stable
+- 引擎的性能改进
+ - 绘制脏区管理
+ - 更快的类型流分析实现
+- 平台侧更新
+ - iOS 平台键盘动画优化
+ - iOS 9.3.6 的⽀持进入尾声,计划在 Q3 放弃对 iOS 9 和 10 的支持
+ - Android 版本支持配置更新
+ - Web 文本框滚动 bugfix
+- Material 3
+- 开发工具更新
+ - DevTools 命令行改进以及调试窗口对大型列表展示优化
+ - VS Code 着色器增强( Color 类可弹出着色面板)
+
+### 🌟 🐢 [Apple 开源 dyld4](https://github.com/apple-oss-distributions/dyld/blob/main/doc/dyld4.md)
+
+[@Leo](https://github.com/leomobiledeveloper): 近期 Apple 开源了 dyld4 的源码,不同于以往,这次在开源的同时还附带了相对完善的文档,所以对开发者阅读体验更加友好,不用从零开始自己梳理逻辑了。dyld4 保留了相同的 mach-o 解析器,引入了 JustInTime 的加载器来优化 dyld3 闭包失效时候需要重建闭包的性能问题,推荐对底层原理感兴趣的同学阅读。
+
+
+## 文章
+
+
+### 🌟 🐕 [FFmpeg 工具:客户端音视频开发的必备工具](https://mp.weixin.qq.com/s/Rl7fxOP-YH37mQEvGxhfUA)
+
+[@JonyFang](https://github.com/JonyFang):FFmpeg 是从事音视频开发最常用的工具和三方库之一,我们可以用它来进行多种格式音频和视频的录制、转换、流处理功能。对对音视频感兴趣的 iOS 开发同学来说,FFmpeg 会是必不可少的工具。本文主要是对 FFmpeg 的常用功能做了详细的介绍。
+
+本文内容框架:
+- ffmpeg 常用命令介绍;
+- ffplay 常用命令介绍;
+- ffprobe 常用命令介绍;
+
+### 🌟 🐕 [可视化音视频分析工具:音视频原始数据、编码、封装分析好用工具集锦](https://mp.weixin.qq.com/s/jCYih3qgEIUctuWxn0aTGQ)
+
+[@JonyFang](https://github.com/JonyFang):在音视频开发中,FFmpeg 是必不可少的工具之一,但 FFmpeg 主要是命令行形式。为了方便、快捷、直观的分析音视频数据,最好能有一些可视化的分析工具来协助开发,本文主要介绍了一些常见的可视化音视频分析工具。
+
+本文内容框架:
+- 音画原始数据分析工具介绍;
+- 编码数据分析工具介绍;
+- 封装格式分析工具介绍;
+
+### 🐢 [阿里卖家 Flutter for Web 工程实践](https://mp.weixin.qq.com/s/pai_9kJuAdD0RoZOdemL9w)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文详细介绍了 FFW(Flutter for Web) 落地的全过程,从选择分支版本、迁移代码、发布构建、产物精简、兼容性踩坑 等多个方面全面介绍。最终能够取得不错的业务收益,一路艰辛,欢迎大家阅读。
+
+插外说一句,选型还是要谨慎,toB 产品还好,toC 低端机用户较多且弱网的情况下,一个较大的 js 的资源包加载就足以影响用户体验了,期待团队的后续优化方案。本文的具体目录如下:
+
+- 工程基础:Flutter 版本选择、Dart 代码复用、平台相关插件
+- 发布体系:工程构建(选择 HTML 渲染)、产物精简和处理、页面发布
+- 能力支持:页面路由和地址、JS 调用、打点监控
+- 优化和兼容:骨架图避免白屏、JS 资源拆包、兼容问题解决
+
+### [hacker-laws: 软件开发人员常用定律](https://github.com/nusr/hacker-laws-zh)
+[@莲叔](http://github.com/aaaron7):在软件开发的过程中,有很多前人的经验和努力凝结而成的定律,比如摩尔定律,破船效应等等。这些原则总能够在项目开发过程中举棋不定的时刻来指导和帮助我们做出决定。这篇文章可以说是把软件开发中常见的定律、原则和模式做了一个汇总,非常有参考意义,并且每一个原则都给出了延伸阅读的资料,来帮你了解原则诞生的背景与故事,兼具了趣味性。总的来说,是非常不错的周末读物。
+
+### 🐎 [Xcode 常见 CLI 工具](https://mp.weixin.qq.com/s/jF6mTsxC2xtn8Xp1Mn72Zw)
+
+[@Smallfly](https://github.com/iostalks):在日常开发中,或多或少都会用到 Xcode 内置的一些命令行工具(CLI),但是大部分小伙伴可能只是会用到一部分具体的命令。
+
+本文较全面的介绍了 Xcode 内置的 20 种 CLI,主要分为六类:
+- 前置工具
+- 符号表相关
+- 构建相关
+- 工具链相关
+- 工具相关
+- Mach-O 操作相关
+
+### 🐎 [Unobtrusive runtime warnings for libraries](https://www.pointfree.co/blog/posts/70-unobtrusive-runtime-warnings-for-libraries)
+
+[@老峰](https://github.com/gesantung):写代码的过程中,API 调用的一部分错误是无法通过类型检查处理的,但直接 fatalError 也不好,在业务层使用 #if DEBUG 进行检查也很容易错漏。Point-Free 就在这篇文章里就为我们介绍了更好的处理方式,通过代码进入断点,亦或者是通过 Xcode 抛出 Runtime Warning,给上层用户更好的提示,并且将这些逻辑封装起来,感兴趣的同学可以尝试。
+
+### 🐕 [iOS自动化测试框架Kiwi的使用介绍及原理分析 - 掘金](https://juejin.cn/post/7060780751700099080)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文较为深入的分析了Kiwi的功能、实现原理,以及一些比较容易被忽略的机制。它有语义清晰,实现方式优雅等优点,用它写出来的测试代码会有很好的可读性。文章同时也给出示例,从实际场景分析其原理。
+
+- **Spec**
+- **Mock & Stub**
+- **Expectation, Verifier and Matcher**
+
+### 🐕 [高级 SwiftUI 动画 — Part 1:Paths](https://mp.weixin.qq.com/s/5KinQfNtcovf_451UGwLQQ)
+
+[@水水](https://www.xuyanlan.com): 在本文中,结合原理和例子深入的探讨了一些创建 SwiftUI 动画的高级技术。
+
+- Animatable
+- animatableData
+- GeometryEffect
+- AnimatableModifier
+
+这些都是被官方文档完全忽略的主题,在 SwiftUI 的帖子和文章中也几乎没有提及。本文(Part 1)中介绍了 Animatable 和 animatableData。后续的 Part 2中将介绍 GeometryEffect , Part 3中将介绍 AnimatableModifier。
+
+### 🐕 [“一把梭:REST API 全用 POST”](https://coolshell.cn/articles/22173.html)
+
+[@四娘](https://kemchenj.github.io/):大家在工作中,可能遇到过各种各样风格的 API 定义,那么到底什么样的 API 定义才是合理的?本文从 v2ex 的一个问题开始,探讨为什么 HTTP 需要不同的动词,POST 是否安全,对于其它上下游基础架构功能的构建会产生什么影响等等的问题。另外留言区也有一些针对实际业务场景的提问和回答,推荐大家阅读。
+
+### 🐢 [LLVM中文网](https://llvm.liuxfe.com/docs/)
+
+[@红纸](https://github.com/nianran):这是一个 LLVM 学习站点,少有的中文版本 LLVM 文档网站。站内含有 LLVM 使用指南、编程文档、子系统文档、Pass 编写等多个主题内容。对底层感兴趣的同学不妨看一看。
+
+## 代码
+
+### 🌟 [百度网盘开源依赖注入框架 CarbonGraph](https://github.com/baidu/CarbonGraph)
+
+[@xiaofei86](https://github.com/xiaofei86):百度网盘开源依赖注入框架 CarbonGraph,框架使用 Swift 编写同时兼容 ObjC,提供完整的依赖注入能力(构造器注入、属性注入、方法注入、工厂注入)。你可以将类之间的依赖关系交给 IOC 容器来构建,使用框架定义的 DSL 能够方便地进行配置。
+构建更有利于测试和替换的松散耦合关系,可以实现不同业务对中台服务的个性化配置,也可以仅仅用来解决组件化中模块间直接依赖的问题。简单的使用示例如下所示,阅读原文了解更多信息。
+
+```swift
+let context = ObjectContext()
+let definitionBuilder = Definition("filevc")
+ .protocol(UIViewController.self)
+ .object(FileViewController())
+context.register(builder: definitionBuilder)
+context[UIViewController.self, name: "filevc"]
+```
+
+```swift
+let context = ObjectContext()
+let definitionBuilder = Definition()
+ .object(FileManager() as FileManagerProtocol)
+context.register(builder: definitionBuilder)
+context[FileManagerProtocol.self]
+```
+
+## 摸鱼周报
+
+[@摸鱼周报 #43](https://mp.weixin.qq.com/s/Ktk5wCMPZQ5E-UASwHD7uw):第四十三期摸鱼周报来了,一起来看下本期概要吧:
+
+* 话题:dyld4 开源了
+* Tips:Fix iOS12 libswift_Concurrency.dylib crash bug
+* 面试模块:Synchronized 源码解读
+* 优秀博客:Swift Protocol 进阶
+* 学习资料:南大软件分析课程,iOS 开发学习图谱
+* 开发工具:贝尔实验室开发的有向图/无向图自动布局应用,支持 dot 脚本绘制结构图,流程图等。
+
+本期还有一个人物访谈:[人物访谈 | 东坡肘子:健康&开发](https://mp.weixin.qq.com/s/SO5UN1JGsjnQG5zyQMDRew),肘子是一位专注于 Swift 领域优秀博主。之前的一段时间经历过一场大病,本期访谈一方面聊一下他的独立开发和博主日常,另一方面则会聊些健康相关话题,希望大家能够重视自己身体发出的各类异常信号,任何阶段都应以身体为重。
+
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#193-2022.02.28.md b/Reports/2022/#193-2022.02.28.md
new file mode 100644
index 000000000..c9091e92d
--- /dev/null
+++ b/Reports/2022/#193-2022.02.28.md
@@ -0,0 +1,104 @@
+# 老司机 iOS 周报 #193 | 2022-02-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 文章
+
+### 🐎 [【StoreKit2 JWS 签名验证】Code-Level Support 下的 X.509 证书链验证之旅](https://juejin.cn/post/7039622474274701348#heading-14)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文提供了通过 PHP 实现服务端校验 JWS 票据真实性的具体实现代码,并附上了与苹果 PKI 团队的邮件交流记录,也很有意思: ~~beg you~~ 以及加上代码注释以明确问题的理解一致等。[苹果根证书下载地址](https://www.apple.com/certificateauthority/)。
+
+### 🐎 [iOS 逆向工具:逆向做的好,码农下班早丨音视频工具](https://mp.weixin.qq.com/s/QhVyUzyZN_h1qjEZhO9jYQ)
+
+[@Barney](https://github.com/BarneyZhaoooo):App 逆向工程是做竞品分析的常用方法,本文对 iOS 如何逆向做了简单的介绍。
+
+1. 非越狱 App 调试
+ - 环境配置
+ - 安装 MonkeyDev
+ - 使用 MonkeyApp 调试 App
+ - 导出调试 App 的沙盒文件
+2. 越狱
+3. 砸壳
+
+### 🌟 🐕 [iOS 音频采集 Demo:采集音频数据并存储为 PCM 文件](https://mp.weixin.qq.com/s/FDR_5cMfAJQgZhSvjgeWYA)
+
+[@JonyFang](https://github.com/JonyFang):iOS/Android 端开发同学如果想开始学习音视频开发,最丝滑的方式是对[音视频基础概念知识](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MjM5MTkxOTQyMQ==&action=getalbum&album_id=2140155659944787969&scene=21#wechat_redirect)有一定了解后,再借助本地平台的音视频能力上手去实践音视频的采集 → 编码 → 封装 → 解封装 → 解码 → 渲染过程,并借助[音视频工具](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MjM5MTkxOTQyMQ==&action=getalbum&album_id=2216997905264082945#wechat_redirect)来分析和理解对应的音视频数据。
+
+本篇是「音视频工程示例」的第一篇:iOS 音频采集 Demo。这个 Demo 里包含以下内容:
+
+1. 实现一个音频采集模块;
+2. 实现音频采集逻辑并将采集的音频存储为 PCM 数据;
+3. 详细的代码注释,有助理解代码逻辑和原理。
+
+### 🌟 🐕 [iOS微信全文搜索技术优化](https://mp.weixin.qq.com/s/Ph0jykLr5CMF-xFgoJw5UQ)
+
+[@kemchenj](https://kemchenj.github.io/):这篇文章讲述了微信团队 2021 年优化 iOS 客户端搜索体验的过程,从技术选型开始,到方案落地以及最后的性能调优,非常具有学习价值,强烈推荐有类似需求的同学阅读。
+
+### 🐎 [cocoapods-downloader 设计概要](https://mp.weixin.qq.com/s/J10EbVTAb_u_yDCThxFJYg)
+
+CocoaPods 是我们非常熟悉的工具了,本文就介绍了 cocoapods-downloader 的代码设计,并在文末给出了工厂类对具体子类解耦的一个优化方案。
+
+### 🐕 [高级 SwiftUI 动画 — Part 2:GeometryEffect](https://mp.weixin.qq.com/s/rE_HILLt-uxzScS7wXh5jw)
+
+[@AidenRao](https://weibo.com/AidenRao):在 [本系列的第一部分](http://mp.weixin.qq.com/s?__biz=MzAxNzgzNTgwMw==&mid=2247487817&idx=1&sn=2dc07e2a4a58e4b0ba02b05ea5952734&chksm=9bde233daca9aa2b8312a91b61e259ba17f88be9e7863e7a159262bdd36825c9479baeba471f&scene=21#wechat_redirect) 介绍了 Animatable 协议,以及我们如何使用它来为路径制作动画。
+
+本系列的第二部分,介绍一个新的工具 GeometryEffect,用同样的协议对变换矩阵进行动画处理。
+
+第三部分介绍强大的 AnimatableModifier:[高级 SwiftUI 动画 — Part 3:AnimatableModifier](https://mp.weixin.qq.com/s/M6MW3idXS6jZJtl4Mz5DGQ),用于实现复杂动画。
+
+文章结合动画 Gif 和源码为案例,深入的探讨了一些创建 SwiftUI 动画的高级技术。
+
+## 代码
+
+### [Mocha](https://github.com/White-White/mocha)
+[@Smallfly](https://github.com/iostalks):Mocha 是一款 Swift 编写的 Mach-O 文件可视化工具,通过解释 Mach-O 文件中每一个字节的含义,帮助使用者理解 Mach-O。
+
+### [ScreenShield](https://github.com/RyukieSama/Swifty)
+[@Damien](https://github.com/ZengyiMa):ScreenShield 是极其轻量化的截屏防护方案,任何需要被保护的 View 作为子视图放入保护的视图中即可达到截屏时隐藏内容的效果。
+
+### [MetalPetal: An image processing framework based on Metal ](https://github.com/MetalPetal/MetalPetal)
+[@莲叔](http://github.com/aaaron7):顾名思义,MetalPetal 是一个用 Metal 做图像处理的框架。GPU 的图像处理框架,我们很容易想到的就是大名鼎鼎的 GPUImage,MetalPetal 可以说就是一个 Metal 版的 GPUImage。苹果近几年推广 Metal 的决心相信大家都有目共睹,Metal 不仅能提供了现代化的 API,也提供了碾压 OpenGL 的性能,是 iOS 上做 GPU 计算的不二之选。但如果我们希望用 Metal 来做图像和视频处理的时候,你会发现需要写非常多的代码才能够完成功能,比如图片加载,上传成纹理,创建 gpu 的 pipelie 等等,而视频则更复杂,涉及到解码、调度、丢帧等一系列逻辑。MetalPetal 这类框架就是为了这个这样的问题而生,让你通过简单的函数调用就完成 GPU 的计算。大幅提升开发效率。
+
+## 摸鱼周报
+
+[@摸鱼周报 #44](https://mp.weixin.qq.com/s/q__-veuaUZAK6xGQFxzsEg):第四十四期摸鱼周报来啦,一起来看下本期概要:
+
+* 话题:Apple 将推出 Tap to Pay 功能
+* Tips:解决 iOS 15 上 APP 莫名其妙地退出登录
+* 面试模块:Dealloc 使用注意事项及解析
+* 优秀博客:ARM64 汇编入门及应用
+* 学习资料:Github: How to Cook
+* 开发工具:文件搜索应用:EasyFind
+
+## 赞助者
+
+虚位以待..
+
+**非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~**
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#194-2022.03.07.md b/Reports/2022/#194-2022.03.07.md
new file mode 100644
index 000000000..2e6459871
--- /dev/null
+++ b/Reports/2022/#194-2022.03.07.md
@@ -0,0 +1,139 @@
+# 老司机 iOS 周报 #194 | 2022-03-07
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Apple Park 传送门下周开启](https://mp.weixin.qq.com/s/9gsgkR6QW5o37ov4SltPmQ)
+
+Apple Park 传送门定时开启,北京时间 3 月 9 日凌晨 2 点,欢迎准时来 [Apple 官网](https://www.apple.com.cn/apple-events/)看 Apple 特别活动直播,还有同步中文字幕可以开启。
+
+## Developer - 设计开发加速器
+
+### [探索物理空间音频引擎和游戏手柄](https://developer.apple.com/cn/accelerator/)
+
+2022 年 3 月 10 日(报名截止 2022 年 3 月 9 日)
+
+探索几何感知音频是如何帮助您的 app 构建复杂、互动和沉浸的音频场景。了解 Apple 的空间音频 API —— 物理音频空间化引擎(PHASE),以及它是如何使声音始终与您的体验保持一致 —— 帮助您在开发过程中创建空间声景和场景,而不是等到后期制作。我们还将向您展示虚拟和实体游戏手柄的最新改进,以及如何在您的 app 中支持手柄的分享功能。
+
+
+
+## 文章
+
+### 🌟 🐕 [音视频工程示例专栏](https://mp.weixin.qq.com/mp/appmsgalbum?)
+
+第二篇 iOS 音频编码:[采集音频数据并编码存储为 AAC 文件](https://mp.weixin.qq.com/s/q4n1dYTjcJVJolX-Wrdr9Q)
+
+第三篇 iOS 音频封装:[采集编码音频数据并封装存储为 M4A 文件](https://mp.weixin.qq.com/s/R86qnQAi2njr6k7tFvTF-w)
+
+[@JonyFang](https://github.com/JonyFang): 本 Demo 包含的主要内容有:
+
+1. 实现一个音频采集模块
+2. 实现一个音频编码模块
+3. 串联音频采集和编码模块,将采集到的音频数据输入给 AAC 编码模块进行编码和存储
+4. 详尽的代码注释,有助于理解代码逻辑和原理
+
+### 🐕 [探索 iOS 编码对包大小的影响](https://mp.weixin.qq.com/s/3Z_IFBpjwDTrB6ynu2bKcQ)
+
+[@Smallfly](https://github.com/iostalks):本文介绍了比较极致和新颖的包大小优化技术,文章从二进制、汇编指令层面分析 Objective-C 代码对包大小的影响。主要从三个方面进行了讲述:
+
+1. 二进制层面分析 OC 代码对包大小的影响
+2. 编码上优化包大小的 tips
+3. 总结各种 tips 的收益
+
+### 🐎 [Publishing DocC Documentation as a Static Website on GitHub Pages](https://www.createwithswift.com/publishing-docc-documention-as-a-static-website-on-github-pages/)
+
+[@kemchenj](https://kemchenj.github.io/):去年 WWDC 苹果发布了 Swift 专用的文档生成工具 docc,接近一年过去了,社区主流的库都没有采用这个工具,其中一个重要的原因是 docc 不支持生成静态网页,无法部署在类似 github.io 之类的服务上,必须有服务器支持才可以。
+
+最近在社区的帮助下,docc 也加入了静态网页生成的功能,预计会跟随 Xcode 13.3 一起发布,这篇文章的作者就分享了如何使用 Xcode CLI 命令调用 docc 生成静态网页,以及最终的效果。
+
+另外跟随 Xcode 13.3 发布的 SPM 预计也会加入 [Command Plugin](https://github.com/apple/swift-evolution/blob/main/proposals/0332-swiftpm-command-plugins.md) 功能,苹果官方也发布了[对应的 docc 插件](https://github.com/apple/swift-docc-plugin),使用这个插件就可以在 CLI 里 `swift package generate-documentation` 一键生成文档。
+
+### 🐕 [注解排列组合出启动任务 | ksp - 掘金](https://juejin.cn/post/7070887538444992526?share_token=7592be2d-eb07-4dd9-94ad-185665479303)
+
+[@Barney](https://github.com/BarneyZhaoooo):文章介绍了一种通过注解的排列组合优化启动任务的思路,让开发同学尽可能的对启动流程无感知。并提供了简单易懂的 demo。
+
+- Ksp解析注解
+- Task生成结合TaskGroup概念
+- 拆分启动步骤
+- 依赖注入
+- Plugin
+
+### 🐕[iOS 自动化测试驱动工具探索](https://mp.weixin.qq.com/s/8bq-Y0rrV9Pw93e8IQoUaQ)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):该文介绍了字节 iOS 自动化测试驱动工具 bdc 的探索过程及实现原理。解决了目前 Facebook 方案耗时长性能差,对真机不友好,无法在 Linux 上部署等问题,值得一读。
+
+文章主要内容如下:
+- 参考 Facebook 的 wda 实现了更高效的 XCTest 工具,在执行速度和稳定性获得大幅提升
+- 通过研究 libimobiledevice 的原理,实现了调用 Xcode 自带工具集的能力
+- 通过将进程名加入 testmanagerd 的白名单实现了在 Linux 上的 docker 化部署
+
+### 🐕 [如何在 macOS Monterey 中成功编译 objc4-838 源码](https://juejin.cn/post/7068539803318353928)
+
+[@Damien](https://github.com/ZengyiMa):你是否想自己编译 Objc4 的源码?那就来看看此篇文章吧。本文会手把手教你如何在 macOS Monterey 中成功编译 objc4-838 源码,并且对编译错误会有详细的修复说明,可以跟着作者一步步在 macOS Monterey 中成功编译。
+
+### 🐕 [Combining protocols in Swift](https://www.swiftbysundell.com/articles/combining-protocols-in-swift/)
+
+[@anotheren](https://github.com/anotheren):Swift 中协议的核心优势之一就是方便我们抹除原始类型,并定义统一接口进行交互。本文展示了几种不同的方法来组合多个协议的功能。编程并没有绝对的标准答案,不同方案都有各自的特点。协议默认实现、协议扩展、范型约束,你更习惯哪一种呢?
+
+## 代码
+
+### 🌟 [Flutter 图片库高燃新登场](https://mp.weixin.qq.com/s/irsf9550JcHrsd5l-V8BbQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 图片处理目前来说相对于原生而言,仍有不少的差距,尤其是在处理缓存方面。本期代码库推荐咸鱼出品的 Flutter 图片处理方案: PowerImage。该方案巧妙地将外接纹理与 FFi 方案组合,以更贴近原生的设计,解决了一系列业务和技术痛点,强烈推荐 👍
+
+### [SwiftUIFlux](https://github.com/Dimillian/SwiftUIFlux)
+
+[@老峰](https://github.com/gesantung):Redux 是 JavaScript 的状态管理框架,SwiftUIFlux 一个非常简单的使用 Combine 为 SwiftUI 实现类 Redux 的状态管理框架,感兴趣的同学可以尝试。
+
+### [Satin - A 3D Graphics Framework built on Apple's Metal](https://github.com/Hi-Rez/Satin)
+
+[@老驴](https://weibo.com/u/6090610445):最近随着元宇宙概念的火爆,3D 相关的技术也受到了大家的关注,有很多同学对 3D 引擎有很浓厚的兴趣,也想探究一下引擎的原理和实现。这个库就是一个 iOS 开发者基于 Metal API 写的一个引擎,作为学习 3D 相关知识来说,是个很好的材料。
+
+## 摸鱼周报
+
+[@摸鱼周报 #45](https://mp.weixin.qq.com/s/_N98ADlfQCUkxYjmH0SvZw):第四十五期摸鱼周报来了,一起来看下本期概要:
+
+* 话题:苹果公司宣布暂停在俄销售产品并关闭部分功能
+* Tips:在 SPM 集成 SwiftLint
+* 面试模块:Swift 的 weak 是如何实现的?
+* 优秀博客:iOS项目中的脚手架/CLI介绍
+* 学习资料:Swift 实现的设计模式
+* 开发工具:nginxedit:Nginx 在线配置工具
+
+## 内推
+
+### 南京、上海、深圳 - 华泰证券 - 招聘 iOS/Android 高级、资深工程师
+
+> 招聘要求和联系方式:https://www.yuque.com/iosalliance/article/cinmb2
+
+### 杭州 - 淘宝 - 终端平台技术部 - 招聘 iOS/Android
+
+> 招聘要求和联系方式:https://www.yuque.com/iosalliance/article/hszgat
+
+### 其他
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关于我们
+
+我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
+
+**关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参**
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#195-2022.03.14.md b/Reports/2022/#195-2022.03.14.md
new file mode 100644
index 000000000..148f9bd5c
--- /dev/null
+++ b/Reports/2022/#195-2022.03.14.md
@@ -0,0 +1,125 @@
+# 老司机 iOS 周报 #195 | 2022-03-14
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [T 技术沙龙移动端技术实践(上海场)圆满结束](https://mp.weixin.qq.com/s/gjU6ejMRyG7Cqfr9271qsA)
+
+2022 年 2 月 26 日,由老司机技术周报与 T 技术沙龙联合主办的移动端技术实践(上海场)在上海圆满落幕。此次技术沙龙邀请到了来自澳洲 REA Group 的 Jake Lin、“开源实验室”博主张涛、前阿里技术专家王宇分别以《MVI 模式在 Jetpack Compose 上的应用》、《基于 C++ 的 Android 真协程设计》以及《自制渲染引擎解决客户端复杂 UI 组件的实现》为主题进行硬核分享与实践探讨。
+
+## Developer - 设计开发加速器
+
+### [使用 SwiftUI 打造卓越体验](https://developer.apple.com/cn/accelerator/)
+
+2022 年 3 月 24 日- 25 日(报名截止 2022 年 3 月 23 日)
+
+欢迎参加为期两天的 SwiftUI 活动!通过本次活动,您将全方位了解 SwiftUI,包括 SwiftUI 的工作原理和控件使用,数据模型和视图的关联,容器布局和高阶渲染,以及使用 SwiftUI 打造多平台 app。此外,我们还邀请到社区内活跃开发者,来分享他们的 SwiftUI 实战经验。加入我们开启 SwiftUI 之旅!
+
+
+
+## 新手推荐
+
+### 🐎 [What’s new in Swift 5.6?](https://www.hackingwithswift.com/articles/247/whats-new-in-swift-5-6)
+
+[@Smallfly](https://github.com/iostalks):Swift 5.6 引入了一波新的特性,本文通过示例重点介绍了几个比较有意思的,并预测在不远的将来 Swift 6 可能会带来一系列破坏性 API。
+
+### 🐎 [Easier Code Review With Pre-Commit Hooks](https://digitalbunker.dev/supercharging-git-with-pre-commit-hooks/)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文介绍了 git 的 hooks 能力,并举例介绍了适合在 ``pre-commit`` 阶段做的检查,例如 文件名是否为纯 ASCII 字符,.xib/.storyboard 是否有 ambiguous constraints。但 hooks 文件不在 git 中保存,管理与同步困难,因此推荐了 [pre-commit](https://pre-commit.com/#intro) 这个工具通过 yaml 配置文件来拉取需要的hooks,确保保证 hooks 的同步,工具还预设了[很多选项](https://pre-commit.com/hooks.html)来开启能力,也可以找到别的开发贡献的 hooks。虽然工具名为 ``pre-commit`` 但也支持在各个阶段指定 hooks,功能相对完善。
+
+## 文章
+
+### 🌟 🐕 [快影 iOS 端如何实现 OOM 率下降 80%+](https://mp.weixin.qq.com/s/IvATFGU_bOph-WX5ZYLYew)
+
+[@Leo](https://github.com/leomobiledeveloper):OOM 的判定和优化一直是 iOS 上比较棘手的问题,快影充分利用自身架构的特点来采集和还原问题的上下文,实现了一套分析复现线上 OOM 头部问题的工具,基于这套工具 OOM 率大幅下降。文中技术方案的思路新颖,并且结合几个具体的案例做了深入的分析,干货很多,非常推荐阅读~
+
+### 🌟 🐕 [iOS 高刷屏监控 + 优化:从理论到实践全面解析](https://mp.weixin.qq.com/s/gMxTq0_nmE-xW7GA3pkBJg)
+
+[@Barney](https://github.com/BarneyZhaoooo) 本文介绍了新引入的 ProMotion 屏幕背后的机制,并且透过表象深入汇编本质,还落地了监控 + 优化的方案,让大盘滑动帧率 P50 从 80 上升至 112 左右,取得了不俗的业务收益。
+
+- 帧率介绍
+- 动态刷新率的表现形式
+- 设备差异
+- 解除 DisplayLink 的帧数限制
+- 动态帧率的应用场景
+
+### 🐕 [如何让云音乐 iOS 包体积减少 87MB](https://mp.weixin.qq.com/s/GTbhvzMA-W0ANlars7mKog)
+
+[@水水](https://www.xuyanlan.com):包体积优化是客户端开发的老命题了, 本文记录了云音乐从了解口径、分析、实践的过程。云音乐的包体积主要优化点如下:
+- 资源
+资源清理、资源整理、资源压缩、资源云端迁移、资源合并
+- 二进制
+无用代码检测、二三方库下线、动态库依赖裁剪
+- 编译优化 - 参数
+Asset Catalog Compiler Optimization、EXPORTED_SYMBOLS_FILE、Link-Time Optimization、GCC_OPTIMIZATION_LEVEL
+- 防劣化
+
+此前也有推荐过一些安装包瘦身的文章,一并贴出参考,希望对优化包体积感兴趣的读者可以根据自己的业务选择最适合自身 App 的方案。
+
+- [iOS瘦身!一个让50%本地图片消失的方案!](https://juejin.cn/post/7053978539523047437)
+- [App thinning checklist](https://oldoldb.com/2019/01/09/App-thinning-checklist/)
+- [iOS 优化 - 瘦身](https://mp.weixin.qq.com/s/wDcYvea5dTq0dh0PBwRu4A)
+- [On-Demand Resource 资源下发](https://www.xuyanlan.com/2018/12/07/%E8%B5%84%E6%BA%90%E4%B8%8B%E5%8F%91/)
+
+### 🐕 [让工程师拥有一台“超级”计算机——字节客户端编译加速方案](https://mp.weixin.qq.com/s/0nU5DHX0GnEidoCtlCOaOg)
+
+[@红纸](https://github.com/nianran):该文介绍了字节在分布式编译、编译缓存上的部分实现原理。文中提到**跨任务缓存**和**索引缓存**的两种实现方案。并介绍了依赖分析的四种技巧,分别从消噪、索引、缓存三个角度进行了优化。同时采用了开源框架 goma 的代码,针对 iOS 项目的特性,优化了编译任务依赖解析。
+
+### 🐎 [本地生活端智能架构设计与技术探索](https://mp.weixin.qq.com/s/vrHNhik_ijqs5KE_0YRI1A)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了本地生活业务对端智能的应用与探索。首先介绍了端智能的概念,特性以及发展趋势。然后结合本地生活的业务分享了其所应用的端智能技术架构。最后结合了具体的细分业务:用户特征,智能推荐和智能触达介绍了端智能在这些业务的具体应用。在文末也对端智能在本地生活的应用做了展望和期待。
+
+### 🐕 [Native Network Monitoring In Swift](https://digitalbunker.dev/native-network-monitoring-in-swift/)
+
+[@享耳先森](https://github.com/iblacksun):对于 App 内的网络状态监控,大家常用的是 `Reachability` 或 `Alamofire` 内部的 `NetworkReachabilityManager`。本文介绍了基于 iOS 12 后 `Network.framework` 内置的 `NWPathMonitor` 实现的网络状态监控。
+
+## WWDC21 内参
+
+### [通过断点技巧让调试更高效](https://mp.weixin.qq.com/s/kv2dfh6L06RQghwkQupi1w)
+
+[@PerTerbin](https://github.com/PerTerbin): 对于开发者来说都是及其重要的调试手段。本文将介绍 Xcode 中断点调试的技巧及 WWDC21 中苹果关于断点提出的新技术,学会这些技巧对于开发者来说都非常有必要,它能使我们的工作更加高效。
+
+### [使用 Clang 静态分析器尽早发现 Bug](https://mp.weixin.qq.com/s/oGqTGgciaFIgMIKH96Ccng)
+
+[@Sean](https://github.com/yangzai360): 本文包括了 [WWDC 2021 Session 10202](https://developer.apple.com/videos/play/wwdc2021/10202/) 中的全部内容,Clang 静态分析器于 2011 年就集成进 Xcode 了,十年多来,它的功能越来越强大。在 Xcode 中简单的一个点击就可以让它来帮助我们找到很多隐晦的 Bug。本文图文并茂地介绍了分析器的使用操作、Xcode 13 中新增的检查项目、在BuildSeting中的可配置参数,以及最后译者补充了静态分析的简介、Clang 静态分析器源码结构。期望通过使用它,让你的工程变得更健壮!
+
+## 摸鱼周报
+
+[@摸鱼周报 #46](https://mp.weixin.qq.com/s/8Wpfk9yxpjwaDXN7iXIcvQ):第四十六期摸鱼周报来了,完整内容可以点击左侧链接,一起来看下本期摘要:
+
+* 话题:苹果春节发布会,地表最强芯片 M1 Ultra
+* Tips:如何在SwiftUI中显示二维码;如何将 JSON 字典编码为 JSONEncoder
+* 面试模块:iOS 内存管理:Autorelease 细节速记
+* 优秀博客:SwiftUI 进阶技巧
+* 学习资料:KKBOX iOS/Mac OS X 基礎開發教材
+* 开发工具:几款面向 iOS 开发的 UI 调试工具
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
+
+**关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参**
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#196-2022.03.21.md b/Reports/2022/#196-2022.03.21.md
new file mode 100644
index 000000000..1b9cb00b1
--- /dev/null
+++ b/Reports/2022/#196-2022.03.21.md
@@ -0,0 +1,172 @@
+# 老司机 iOS 周报 #196 | 2022-03-21
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [4 月 25 日开始,提交到 App Store 的 app 都必须使用 Xcode 13 构建](https://developer.apple.com/cn/news/?id=2t1chhp3)
+
+从 2022 年 4 月 25 日开始,所有提交到 App Store 的 iOS、iPadOS 和 watchOS app 都必须使用 Xcode 13 构建。Xcode 13 已包含 iOS 15、iPadOS 15 和 watchOS 8 的 SDK。
+
+## Developer - 设计开发加速器
+
+### [使用 SwiftUI 打造卓越体验](https://developer.apple.com/cn/accelerator/)
+
+2022 年 3 月 24 日- 25 日(报名截止 2022 年 3 月 23 日)
+
+欢迎参加为期两天的 SwiftUI 活动!通过本次活动,您将全方位了解 SwiftUI,包括 SwiftUI 的工作原理和控件使用,数据模型和视图的关联,容器布局和高阶渲染,以及使用 SwiftUI 打造多平台 app。**此外,我们还邀请到社区内活跃开发者,来分享他们的 SwiftUI 实战经验**。加入我们开启 SwiftUI 之旅!
+
+
+
+## 文章
+
+### 🐕 [Tips for getting the most out of DocC](https://rhonabwy.com/2022/02/10/tips-for-getting-the-most-out-of-docc/)
+
+[@四娘](https://kemchenj.github.io/):文档工具 DocC 发布了已经快要一年,这段时间里加上了 static hosting,C/Objective-C 的支持以及 SPM 插件等功能,依托它来构建内部文档工具是一个不错的选择,也是一个顺便梳理项目内部代码的机会。
+
+本文作者提供了一个渐进式接入 DocC 的步骤建议:
+
+1. 给 class/struct/enum 等类型添加注释文档
+2. 给公开的函数和属性添加注释文档
+3. 添加 documentation catalog 和 overview
+4. 给主要的类型和函数分组
+5. 编写一篇大致的介绍文档
+6. 添加常用的代码模版
+7. 给其余的代码分组
+
+### 🐎 [Swift进阶](https://juejin.cn/column/7069654800002252808)
+
+[@老峰](https://github.com/gesantung):作者比较系统的介绍了学习 Swift 的一些知识点,主要包含如下内容:
+
+- [Swift进阶(一) —— 类与结构体](https://juejin.cn/post/7048633193666183176)
+- [Swift进阶(二) —— 方法探究](https://juejin.cn/post/7050873481029746696)
+- [Swift进阶(三)—— 属性](https://juejin.cn/post/7062732599835721735)
+- [Swift进阶(四)—— 指针](https://juejin.cn/post/7069654422359392292)
+- [Swift进阶(五)—— 内存管理](https://juejin.cn/post/7071048325193007134)
+- [Swift进阶(六)—— 枚举和可选类型](https://juejin.cn/post/7072287470791966750)
+
+### 🚧 🐎 [All Thumbs, Why Reach Navigation Should Replace the Navbar in iOS Design](https://medium.com/tall-west/lets-ditch-the-nav-bar-3692cb17cc67)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):一篇偏向交互设计的文章,介绍应该如何做好 Reach Navigation 的设计。随着 iPhone 手机屏幕越来越大,用户手指越来越难够到屏幕的顶部,在 Navbar 上设计功能交互区也显得越发不友好。于是作者提出了 Reach Navigation 的概念,并对三种情况做出了建议:
+
+- 使用 Tab Bar 的新 APP
+ - 使用从底部 pop up 的弹窗,并能通过下拉手势 swipe away
+ - 将常用的操作按钮放置在 Tab Bar 上
+ - 在选择如何分配屏幕空间前,思考哪些是核心功能
+ - 不要在 Tab Bar 中放置目的地按钮——比如搜索、购物车、新消息。通过别的方式嵌入内容区域或别的途径实现。
+
+- 不使用 Tab Bar 的新 APP
+ - 使用苹果地图一样的抽屉式设计,或者像苹果邮箱一样的 sheet 设计
+ - 优先考虑把按钮放在屏幕底部
+
+- 修改传统的 APP
+ - 把最常用的按钮移动至底部
+ - 所有页面适配在屏幕边缘的滑动返回
+ - 提高用户方便触达区域的利用率
+ - 把重要操作从 Navbar 的右侧移走
+
+PS:本文是17年的文章了,但即使在现在看来也依旧不过时。一个的近期类似设计就是 iOS15 Safari 将 URL/search/tab bar 也挪到了底部,单手操作的体验获得了较大的提升。开发者也不应拘泥于写代码,懂一些交互的基本原理也是加分项。
+
+### 🐎 [iOS代码覆盖率-增量覆盖率自动化实践](https://juejin.cn/post/7049973143007395877)
+
+[@Damien](https://github.com/ZengyiMa):全量代码覆盖率可以帮助开发者聚焦代码的逻辑缺陷,从而更好地避免线上问题,全量代码覆盖率可以直观的看到整个App的代码的覆盖率情况,但是往往有用的或者被关注的是增量代码覆盖率数据。本文通过探索和学习,研究了基于 Git Diff 能力,结合 Clang 覆盖率信息,最终形成了一套增量覆盖率自动化方案。有兴趣的同学不妨一读。
+
+### [iOS番外-搞点音乐玩玩](https://juejin.cn/post/7075638987712364580)
+
+[@zvving](https://github.com/zvving):疫情波动的日子里,不妨听一首自动播放的钢琴曲([演示看这里](https://www.bilibili.com/video/BV1Yq4y1e7G9/))。
+
+作者梳理唱名与 MIDI 值的对应关系,定义贝加尔湖畔曲谱文件,使用 [MIKMIDI](https://github.com/mixedinkey-opensource/MIKMIDI) 加载钢琴音色完成播放。**代码简单,也可以很有趣!**
+
+### 🐢 [Better performance with canvas in SwiftUI](https://swdevnotes.com/swift/2022/better-performance-with-canvas-in-swiftui/)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Canvas 在各个平台都是一个备受争议的技术,在 SwiftUI 中也不例外,本文使用 Shape , Canvas , 静态图片来对比单个实例的创建和多实例滚动试图下的性能差异,综合结果还是 Canvas 胜出 ✨
+
+### 🌟 🐕 [音视频工程示例专栏](https://mp.weixin.qq.com/mp/appmsgalbum?)
+
+第四篇 iOS 音频解封装:[从 MP4 中解封装出 AAC](https://mp.weixin.qq.com/s/fCZfIXriTXUPcI4d4te_ew)
+
+第五篇 iOS 音频解码:[免费获得源码](https://mp.weixin.qq.com/s/7Db81B9i16cLuq0jS42bmg)
+
+[@JonyFang](https://github.com/JonyFang): 第四篇主要内容:
+1. 实现一个音频解封装模块;
+2. 实现对 MP4 文件中音频部分的解封装逻辑并将解封装后的编码数据存储为 AAC 文件;
+
+第五篇主要内容:
+1)实现一个音频解封装模块;
+2)实现一个音频解码模块;
+3)实现对 MP4 文件中音频部分的解封装和解码逻辑,并将解封装、解码后的数据存储为 PCM 文件;
+
+### 🐕 [Writing testable code when using SwiftUI](https://swiftbysundell.com/articles/writing-testable-code-when-using-swiftui/)
+
+[@JimQ](https://github.com/waz0820):移动端界面开发不需要写单元测试,貌似已经成为理所当然的事(与界面弱相关的功能模块除外)。来到 SwiftUI 的时代,由于 SwiftUI 诸多开发范式的限制,业务逻辑与 UI 框架交互之间的解难解分比之 UIKit 的时代更有过之。
+
+鉴于此,本文探索了如何使 SwiftUI 开发的 相关逻辑充分可测试(Test),主要包括两个部分:将逻辑提取到相应的 ViewModel 中,以及相对独立的逻辑抽取到相应的扩展中。
+
+文章最后,作者也坦诚自己从未对 SwiftUI 的视图本身写测试(UITest)。作者专注于提取所有想测试的逻辑,使其从 UI 框架中摆脱出来,将主要精力致力于编写这部分的测试。小编作为一个页面仔也深感认同,这可能是一条更加可行的路线。
+
+### 🐢 [iOS15 动态链接 fixup chain 原理详解](https://mp.weixin.qq.com/s/k_RI2in_Q5hwT33KWig34A)
+
+[@Leo](https://github.com/leomobiledeveloper):Fixup chain 是 Apple 在 iOS15 系统上所应用的一种新的动态链接技术,使用了 fixup chain 动态链接方案生成的 Mach-O 文件具有以下两个优势
+
+- 更紧凑的存储信息格式所带来的更小的二进制产物
+- 更好的空间局部性所带来的更快的应用启动时间
+
+本文从二进制布局和运行时解析两个角度深入分析了 fixup chain 解决的问题以及实现原理,推荐对底层原理感兴趣的同学阅读~
+
+## 代码
+
+### [SafeDecoder](https://github.com/GodL/SafeDecoder)
+
+SafeDecoder支持在Codable解码某个字段失败时设置默认值,并且默认值可配置。
+
+> 推荐人:[GodL](https://github.com/GodL)
+
+## 摸鱼周报
+
+[@摸鱼周报 #47](https://mp.weixin.qq.com/s/X6lPQ5qwY1epF6fEUhvCpQ):第四十七期摸鱼周报来了,完整内容可以点击左侧链接,一起来看下本期摘要:
+
+* 话题:苹果多个产品线的更新介绍
+* 面试模块:动态库与静态库的区别
+* 优秀博客:关于该不该换工作以及如何准备面试
+* 见闻:一个新的、偏技术领域的博客推荐模块
+* 学习资料:Rust 数据结构与算法
+* 开发工具:Aria2GUI,一款支持多种协议的轻量级命令行下载工具
+
+上周还有一期人物访谈,对话一位全职的 iOS 独立开发者,全职独立开发还是非常有难度的,而且听他说靠独立开发的收入即将赶上工作时期的薪资。感兴趣的小伙伴可以点击这里探寻这位独立开发者的进阶之路:[人物访谈 | 极简时钟作者:道哥](https://mp.weixin.qq.com/s/-dZfT_ChTLESbweXyhP3pg) 。
+
+## 内推
+
+### [北京、上海、杭州、深圳] 抖音 - iOS 开发 - 研发效能方向
+
+我们是负责抖音客户端基础能力研发和新技术探索的团队。我们在工程/业务架构,研发工具,编译系统等方向深耕,支撑业务快速迭代的同时,保证超大规模团队的研发效能和工程质量。在性能/稳定性方面不断探索,努力为全球数亿用户提供最极致的基础体验。
+
+更多介绍详见: https://www.yuque.com/iosalliance/article/ozi46h
+
+### 其他
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
+
+**关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参**
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#197-2022.03.28.md b/Reports/2022/#197-2022.03.28.md
new file mode 100644
index 000000000..4792f5562
--- /dev/null
+++ b/Reports/2022/#197-2022.03.28.md
@@ -0,0 +1,143 @@
+# 老司机 iOS 周报 #197 | 2022-03-28
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Swift bugs are moving to GitHub Issues and we need your help!](https://forums.swift.org/t/swift-bugs-are-moving-to-github-issues-and-we-need-your-help/56125)
+
+[@J_Knight_](https://github.com/knightsj):Swift 的 issue 管理将要从 JIRA 转移到 Github,计划全部迁移过程在今年的4月28日结束。在这之前,已经在 JIRA 上建立的 issue 会被完全复制到 Github 的 issue 列表中,作为一个新的 issue。以后 JIRA 也不再支持新的 issue 的建立,而且 bugs.swift.org 网址也会重定向到 Github issue 的地址。想了解详细迁移步骤的读者可以了解一下。
+
+## Developer - 设计开发加速器
+
+### 🌟 🐕 [在苹果加速器活动做的 SwiftUI 开发分享](https://mp.weixin.qq.com/s/vni4zrbIWqvX7vZ9WuX2xw)
+
+戴铭老师受 Apple 加速器 SwiftUI 活动的邀请在 3 月 25 日做了一次关于 SwiftUI 的分享,分享内容包括但不限于macOS 如何解决多栏问题、Toolbar、文件夹嵌套结构、文本和代码编辑器、Grid、Vision、SwiftUI 组件和 UIKit 组件对比等内容。
+
+## 新手推荐
+
+### 🌟 🐕 [Abstract types and methods in Swift](https://www.swiftbysundell.com/articles/abstract-types-and-methods/)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文介绍了 Swift 中一种实现虚类的方案。单独使用 Class 或者单独使用 Protocol 都会有各自的不足,因此作者选择:
+
+方法定义在 Protocol 中(包含 associatedtype ),成员变量定义在 Class 中,再使用 typealias 将 Protocol 与 Class 组合成一个类型进行使用。
+
+这个方案也会带来一些问题,但也有各自的解决方案,酌情选取即可。
+
+- 由于新的类型也包含 associatedtype,因此[无法被直接当类型使用](https://www.swiftbysundell.com/questions/referencing-generic-protocols/),可以使用[类型擦除](https://www.swiftbysundell.com/articles/different-flavors-of-type-erasure-in-swift/)解决。
+- 无法基于新的类型添加 extension。只能在原本的 Class 中添加方法,但有时这个方法又不应该或者不能添加在原本的 Class中。这时则可以在 Protocol 中也重复声明 Class 中对应的变量,而把方法添加在 Protocol 对应的 extension 中。
+
+## 文章
+
+### 🐕 [内存优化: 纹理压缩技术](https://mp.weixin.qq.com/s/V7sK1WwQ4D3LikK2AHgrZQ)
+
+[@老驴](https://weibo.com/u/6090610445):元宇宙和 3D 相关技术的火爆也在最近带动了相关话题好文章的出现。淘系技术团队的这篇分享就是阿里团队在小程序中对纹理压缩的一些探索和优化。 GPU 的不断发展让纹理压缩在移动端也获得了广泛的支持,而如果能合理的使用,能够带来体积,内存占用和性能上的提升。
+
+### 🐕 [AnyObject, Any, and any: When to use which?](https://www.avanderlee.com/swift/anyobject-any/)
+
+[@享耳先森](https://github.com/iblacksun):Swift 5.6 在 [SE-355](https://github.com/apple/swift-evolution/blob/main/proposals/0335-existential-any.md) 引入了 `any` 关键词,加上之前已有的 `AnyObject` 和 `Any`(注意是大写)。本文介绍了三个关键词各自的使用场景并着重介绍新引入的 `any` 的作用。
+
+### 🐢 [Hummer 引擎优化系列 - 大批干货来袭预警](https://mp.weixin.qq.com/s/esYrzI1N_AsZPjJXZxnSdQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Hummer 是 UC 内核团队定制的 Flutter 引擎,它基于官方 Flutter 引擎进行优化增强。经过近两年的持续优化和增强,Hummer 在各方的表现都足够亮眼,且经过了巨量的验证,接下来 UC 团队将会讲这些优化经验回馈于社区,可谓是干货满满,主要集中在:
+
+- 性能优化
+- 包体积优化
+- 内存稳定性
+- Dart 语言层优化
+- 业务层功能增强
+
+### 🐕 [Flutter 比 React Native 更好吗?](https://mp.weixin.qq.com/s/DozzpgKxvXtgBG1-tYjboQ)
+
+[@xiaofei86](https://github.com/xiaofei86):本文作者是一家软件开发公司的创始人兼 CTO,同时也是 React Native 的核心成员。在这篇文章里,作者试着尽可能公平地从人力成本,开发者体验,性能,体验,Web 支持,第三方生态,动态更新,以及使用它们的公司等多方面,去讨论 Flutter 和 React Native 的优劣,让大家在项目技术选型时多一点指导权衡思考的素材。
+
+### 🐕 [Creating Airbnb’s Page Performance Score | by Andrew Scheuermann | The Airbnb Tech Blog | Medium](https://medium.com/airbnb-engineering/creating-airbnbs-page-performance-score-5f664be0936)
+
+[@Barney](https://github.com/BarneyZhaoooo) 本文介绍了 Airbnb 构建自己的 PPS (一个 0 - 100分的多维度页面性能评分体系)的思考过程、维度分析、困难探索、落地效果。可以按下面几个步骤品读:
+
+- Early Performance Measurement Efforts
+- Introducing the Page Performance Score
+- The Metrics
+- Web Metric Weights
+- PPS Evolutions
+- Weighted Average Score
+
+### 🐕 [自动拦截 50% crash,字节自研 Fastbot 如何助力今日头条稳定性测试](https://mp.weixin.qq.com/s/WOFf5Pj9zEKhqbRtzR95Gw)
+
+[@含笑饮砒霜](https://weibo.com/chinafishnews/):Fastbot 是字节自研的智能化测试服务,利用机器学习和强化学习进行遍历测试,在代码覆盖率方面与人工回归有着相当的表现。Fastbot 可以实现操作可视化、场景限定、卡屏检测、无障碍检测等诸多能力。目前 Fastbot 自动化任务已经能较好地发现 App 内的稳定性问题,已经可以帮助字节拦截 50% 左右的异常问题,同时会继续完善 Fastbot 的遍历能力和健全 Fastbot 相关指标建设。
+
+## WWDC21 内参
+
+### [为你的 App 减少网络延迟](https://mp.weixin.qq.com/s/F6Yfbqio50OyAzCntNEmXg)
+
+[@lmh](https://github.com/mhlee2913):本文主要介绍了影响网络延迟的原因及如何降低网络延迟,主要是从降低 `RTT` 次数,和降低单次 `RTT` 时间展开讲述。文中涉及了很多传输层协议相关的知识,也会对相关概念进行解释。最后介绍了目前一些技术的应用现状。
+
+### [Swift 中的 ARC 机制: 从基础到进阶](https://mp.weixin.qq.com/s/ZJ3gVI-jzDcKpRKa0IMi0A)
+
+[@刘夏](https://github.com/lldong):文章围绕 Swift 语言中的 ARC(自动引用计数)机制讲述了实践过程中对象生命周期变化可能引发的问题以及如何从语言或代码设计层面去规避这些问题。
+
+## 工具
+
+### [swift-docc-plugin](https://github.com/apple/swift-docc-plugin)
+
+[@kemchenj](https://kemchenj.github.io):跟随 Xcode 13.3 发布的 SPM 加入了 [Command Plugin](https://github.com/apple/swift-evolution/blob/main/proposals/0332-swiftpm-command-plugins.md) 功能,苹果官方也发布了[对应的 docc 插件](https://github.com/apple/swift-docc-plugin),只要在 Package.swift 里引入这个 plugin,就可以在 CLI 里用 `swift package generate-documentation` 一键生成文档。:
+
+```swift
+let package = Package(
+ // name, platforms, products, etc.
+ dependencies: [
+ // other dependencies
+ .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"),
+ ],
+ targets: [
+ // targets
+ ]
+)
+```
+
+## 摸鱼周报
+
+[@摸鱼周报 #48](https://mp.weixin.qq.com/s/vdUy-BqxWzuPcjYO6fFsJA):第四十八期摸鱼周报来了,完整内容可以点击左侧链接,一起来看下本期摘要:
+
+* 话题:node-ipc 供应链投毒事件
+* 面试模块:OC 对象弱引用指针标识位
+* 优秀博客:程序员如何自我提升
+* 学习资料:以 Java 为背景的全栈知识体系
+* 开发工具:新一代卡片笔记工具:flomo
+
+## 内推
+
+### [上海] 谷歌 - iOS 开发 - 智能家居
+
+谷歌在上海开放了 iOS 岗位,主要与 Google Nest 智能家居相关的 App 开发。
+
+更多岗位介绍详见:[Software Engineer, iOS App, Nest Smart Devices](https://careers.google.com/jobs/results/92585557856527046-software-engineer-ios-app-nest-smart-devices/?company=Google&company=YouTube&hl=zh_CN&jld=10&location=Shanghai,%20Shanghai,%20China&q=ios) 和 [Lead Software Engineer, iOS App, Google Nest](https://careers.google.com/jobs/results/108031396271792838-lead-software-engineer-ios-app-google-nest/?company=Google&company=YouTube&hl=zh_CN&jld=10&location=Shanghai,%20Shanghai,%20China&q=ios)
+
+### 其他
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
+
+**关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参**
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#198-2022.04.11.md b/Reports/2022/#198-2022.04.11.md
new file mode 100644
index 000000000..4deaabe67
--- /dev/null
+++ b/Reports/2022/#198-2022.04.11.md
@@ -0,0 +1,234 @@
+# 老司机 iOS 周报 #198 | 2022-04-11
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## 新闻
+
+### [Call to Code](https://developer.apple.com/wwdc22/)
+
+苹果将在今年 6 月 6 日举办一年一度的 WWDC 全球开发者大会,今年的大会主题是「Call to Code(召唤编码侠)」,依旧采用在线形式举行,会给大家带来各种最新技术的展示。今年,老司机依旧会牵头组织 「WWDC 内参」活动,想参与的可以添加 iTDriverr 了解细节。
+
+### [“阅读器”app 分发的更新](https://developer.apple.com/cn/news/?id=grjqafts)
+
+去年,Apple 宣布了 2022 年初在 App Store 上将进行的更新,该更新将允许“阅读器”app 的开发者在 app 中提供一个指向其网站的链接,以便用户创建或管理帐户。从今天开始,《App Store 审核指南》中的准则 3.1.3(a) 将会更新,阐明阅读器 app 的开发者现在可以申请外部链接的帐户授权。此授权将允许阅读器 app 链接到开发者拥有或维护的网站,以便用户在 app 外创建或管理其帐户。阅读器 app 指的是提供以下一种或多种数字内容类型 — 杂志、报纸、图书、音频、音乐或视频 — 作为其主要功能的 app。
+
+## Developer - 设计开发加速器
+
+### [降低 App 的卡顿率](https://developer.apple.com/cn/accelerator/)
+
+2022 年 4 月 12 日(报名截止 4 月 11 日)
+
+App 性能留给用户的第一印象往往难以改变。本讲座详细讲解导致 app 卡顿的一些反面典型,和避免这些卡顿的最佳实践。讲座重点讨论 Grand Central Dispatch 多线程技术,以便减少卡顿。并指导开发者适时采用异步编程,以便提高性能。
+
+
+
+## 新手推荐
+
+### 🐎 [Introduction to Xcode Frame Debug - A Sherlock Holmes Adventure](https://holyswift.app/introduction-to-xcode-frame-debug-a-sherlock-holmes-adventure)
+
+[@Smallfly](https://github.com/iostalks):在 iOS 开发过程中经常要和 View 打交道,难免会遇到 View 显示异常的问题。本文从 Xcode Debug View 工具入手,介绍了几种调试 View 不显示的线索,主要包括:
+
+* 检查 View 是否在父视图上
+* 检查 alpha 属性
+* 检查 hidden 属性
+* 检查 frame 是否超出父视图
+
+这几种方式都比较常规。最后还介绍了一个小技巧,设置 `clipsToBounds = true` 的父视图,通过 *Show Clipped Content* 能显示被裁切的子视图。
+
+## 文章
+
+### 🌟 🐢 [干货 | Flutter在携程复杂业务的高性能之旅](https://mp.weixin.qq.com/s/QgPXNpdU2mlAb6tlcsm_eQ)
+
+[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 在渲染性能上一直都是其宣传的亮点,然而即使这样在业务开发中仍然有较多需要注意的地方,本文由携程团队给大家带来的 Flutter 下复杂场景的性能优化,涉及方方面面,干货满满,所有优化项所见所得:
+
+- UI 线程优化
+ - 拆分VieModel降低刷新几率
+ - Provider监听数据推荐使用Selector
+ - 减少在build中做耗时操作,放到Isolate去执行
+ - 缓存高层级组件
+ - 控制刷新范围、频次
+ - setState 刷新颗粒度在最低层
+ - const 修饰避免频繁构造
+
+- GPU 线程优化
+ - 使用RepaintBinary隔离 提别是轮播广告、动画
+ - 减少ClipPath的使用,简单圆角采用BoxDecoration实现
+ - 避免Opacity,可以通过切图实现。有动画效果的建议用AnimatedOpacity
+ - 避免使用带换行符的长文本
+
+- 图片渲染性能和内存开销治理
+ - 图片预加载
+ - 资源优化
+ - 图片内存优化
+
+- 长列表滑动性能优化
+ - ListView Item 复用
+ - 首页预加载
+ - 分页预加载
+ - 取消在途网络请求
+
+小编强烈推荐 👍 ,同时再次推荐携程团队的[另一个干货: Flutter控件CustomScrollView原理解析及应用实践](https://mp.weixin.qq.com/s/dF5Id3w_To4aXeXDbUnUjQ)给同学们搭配学习
+
+### 🐕 [Airbnb’s Page Performance Score on iOS | by Nicholas Miller | The Airbnb Tech Blog | Medium](https://medium.com/airbnb-engineering/airbnbs-page-performance-score-on-ios-36d5f200bc73)
+
+[@Barney](https://github.com/BarneyZhaoooo):本文是 Airbnb PPS 的第二部分,介绍了 PPS 在 iOS 端的具体实践应用,并配有重点代码思路分析,时间锚点的选取和状态机的丝滑运用让人眼前一亮。
+
+- Page System
+- PPSStateMachine
+- Time
+- View Association
+- Metric Implementation
+
+### 🐕 [FormatStyle AttributedString Output](https://ampersandsoftworks.com/posts/formatstyle/style-deep-dives/attributed-strings/)
+
+[@anotheren](https://github.com/anotheren): AttributedString 是 iOS 15 引入的全新富文本对象,同时也引入了 FormatStyle 协议来抽象格式化的方式。本文提供了大量实例(Playground)来展示如何使用这些内置的 API 来格式化日期、单位、数据等对象。
+
+### 🐕 [iOS 15.4 12小时制 时间格式转换崩溃 - 掘金](https://juejin.cn/post/7077493937383948295)
+
+[@Barney](https://github.com/BarneyZhaoooo) :本文介绍了一个在iOS15.4系统由于时间转换造成的崩溃。时间转换是大家平时开发经常用到的,值得引起注意防患于未然。
+
+- 系统解析对比
+- 理论原因定位
+
+### 🐕 [Flutter 代码生成 source_gen 使用与原理分析](https://mp.weixin.qq.com/s/lrEzYdbafrqfDVFQl2ebRQ)
+
+[@邦Ben](https://weibo.com/linwenbang):众所周知,你应该多少会用过 json_serializable 吧,那么就一定知道基本的原理是通过解析声明文件,从而生成相关 json 序列化和反序列化代码。那么当你从事过较多的开发之后,一定会遇到很多重复的代码复制粘贴,例如:路由的编写,或者 channel 的生成,架构代码生成,ImageAsset 代码生成等等。那么你应该会自然地想到,我也可以像 json_serializable 和 pigeon 去做一些提高效率的工具,那这时候可以看下 source_gen,这个库进行了一些封装,让你更方便的定制代码生成的逻辑。
+
+参考链接:
+[Flutter使用source_gen快速提升开发效率](https://mp.weixin.qq.com/s/kwgI1FsEo5BGE7bRqKM7Mw)
+
+### 🐢 [Flutter 滑动体验对齐原生 - 滑动曲线篇](https://mp.weixin.qq.com/s/aqXdYYEArhEj6ikqg2oX9g)
+
+[@ChengzhiHuang](https://github.com/ChengzhiHuang):本文介绍了在 Flutter 的滑动手感拉齐 Native 方向上做出的努力。主要思路分为两步:解决 fling 动画在一次滑动中反复重启;选择更合适的衰减公式。同时介绍了调整滑动曲线的一些常用思路:降低初速度给曲线减速;通过对初始速度叠加衰减值,运用二次函数,在快速滑动时衰减慢,慢速滑动时衰减快。
+
+### 🐕 Optimization in Swift
+
+作者以 filter 为例,带着我们进行一次算法性能优化,包括算法性能的测算,结果的分析以及后续针对性的优化:
+
+1. [如何测量算法性能](https://trycombine.com/posts/swift-performance-concurrency-1/)
+2. [使用 Concurrency 算法](https://trycombine.com/posts/swift-performance-concurrency-2/)
+3. [内存预分配](https://trycombine.com/posts/swift-performance-concurrency-3/)
+4. [总结](https://trycombine.com/posts/swift-performance-concurrency-4/)
+
+### 🐕 [Swift 生成原生二维码](https://digitalbunker.dev/native-barcode-qr-code-generation-in-swift/)
+
+[@AidenRao](https://weibo.com/AidenRao):如果你需要生成一个二维码或者条码,无需去寻找第三方库,直接用 swift 原生代码就可以实现。iOS 自带的 CIFilter 支持二维码、[Aztec 码](https://zh.wikipedia.org/wiki/Aztec%E7%A0%81)、[Code 128](https://en.wikipedia.org/wiki/Code_128) 以及 [PDF417 条码](https://zh.wikipedia.org/wiki/PDF417%E6%9D%A1%E7%A0%81),文章还提供了每一个条码的示例代码作为实现参考。
+
+### 🐎 [Weak self, a story about memory management and closure in Swift](https://benoitpasquier.com/weak-self-story-memory-management-closure-swift/)
+
+[@kemchenj](https://kemchenj.github.io/):在 Swift 里我们经常需要使用 weak 和 unowned 来解决循环引用的问题。
+
+只使用一个闭包的时候,引用的逻辑关系很简单明了,但闭包嵌套的时候,即使使用了 weak 也有可能会不小心产生循环引用,这篇文章就针对这种情况进行了仔细的说明,并且提供对应的解决方案。
+
+### [Swift.org Website is Now Open Source](https://www.swift.org/blog/website-open-source/)
+
+Swift.org 网站一直以来为广大开发者提供 Swift 相关的开源库、工具、文章等,现如今,其官方宣布 Swift.org 网站本身也成为了一个开源项目!这为广大 Swift 粉丝提供了一个很好的学习平台,快去看看吧!
+
+### 🐎 [Consistent Swift style in Xcode with SwiftLint](https://swdevnotes.com/swift/2022/consistent-swift-style-in-xcode-with-swiftlint/)
+
+[@老峰](https://github.com/gesantung):SwiftLint 是 Realm 推出的一款 Swift 代码规范检查工具,本文较详细的的介绍了 SwiftLint 的使用,包括:
+- 将 SwiftLint 与 Xcode 集成
+- SwiftLint 规则
+- 自动修复&手动修复 SwiftLint 违规代码
+- 自定义 SwiftLint 规则
+
+### 🐕 [理解 Swift 中的指针](https://mp.weixin.qq.com/s/4O5RZCiR9-kUOHJ5SdE9jg)
+
+[@AidenRao](https://weibo.com/AidenRao):Swift中的指针分为两类
+
+1. typed pointer: 指定数据类型指针,即 UnsafePointer\。
+2. raw pointer: 未指定数据类型的指针(原生指针) ,即 UnsafeRawPointer。
+
+每一类又分可变不可变,pointer(单个值) 与 bufferPointer(相同类型集合)。
+
+文章通过示例代码,详细介绍了这些指针的使用方式。
+
+### 🌟 🐕 [短视频编辑中的AVFoundation框架](https://juejin.cn/post/7077870149239308324)
+
+[@JonyFang](https://github.com/JonyFang): 本系列文章围绕 iOS 平台上短视频编辑功能中 AVFoundation 扮演的角色展开讨论,本篇主要介绍学习 AVFoundation 框架需要了解的基础模块和相关的数据类型及注意事项。本系列文章分三篇,依次为:
+
+- [01.框架概述与基础](https://juejin.cn/post/7077870149239308324)
+- [02.素材添加与处理](https://juejin.cn/post/7077875029161017380)
+- [03.视频编辑与导出](https://juejin.cn/post/7079397452192841735)
+
+### 🌟 🐕 [音视频工程示例专栏](https://mp.weixin.qq.com/mp/appmsgalbum?)
+
+- 第六篇 iOS 音频渲染: [从 MP4 中解封装解码出音频并渲染播放](https://mp.weixin.qq.com/s/xrt277Ia1OFP_XtwK1qlQg)
+- [iOS 音频处理框架及重点 API 合集](https://mp.weixin.qq.com/s/w_5pZoeV0GdcFppIpuvVcw)
+
+[@JonyFang](https://github.com/JonyFang): 第六篇 Demo,主要是实现对 MP4 文件中音频部分的解封装和解码逻辑,并将解封装、解码后的数据送给渲染模块播放;最后在前面音频处理 Demo 的基础上,对 iOS 音频处理框架及重点 API 的梳理。
+
+
+## 工具
+
+### [Hot Reloading in Swift](https://merowing.info/2022/04/hot-reloading-in-swift/)
+
+[@zvving](https://github.com/zvving):Xcode 通过 Previews 提供快速预览 SwiftUI 代码修改的方案,虽几经迭代,稳定性一直被人诟病;而通过 [InjectionIII](https://github.com/johnno1962/InjectionIII) 同样可以达到实时预览(Live Reload)代码修改的效果,但注入代码非常冗余。通过作者提供的 [Inject](https://github.com/krzysztofzablocki/Inject) 可以大幅简化注入代码(依旧需要配合 InjectionIII 工作)。
+
+需要经常调试预览 SwiftUI、UIKit 的朋友不要错过,建议先通过 [Example 项目](https://github.com/MarcoEidinger/InjectSwiftUIExample) 上手配置过程。
+
+
+## 代码
+
+### 🌟 🐕 [fatbobman/SwiftUIOverlayContainer](https://github.com/fatbobman/SwiftUIOverlayContainer)
+
+[@JonyFang](https://github.com/JonyFang): SwiftUI Overlay Container 是一个用于 SwiftUI 的视图容器组件,可定制、高效、便捷的视图管理器。通过文档的配置,即可完成从视图组织、队列处理、转场、动画、交互到显示样式配置等基础工作。
+
+## WWDC21 内参
+
+### [初见 TextKit 2](https://mp.weixin.qq.com/s/vZ74jNgItabOB-TsaQn6Uw)
+
+[@Damien](https://github.com/ZengyiMa): 通过本文你将会了解到 TextKit 1 到 TextKit 2 的变化内容,并且可以深入了解 TextKit 2 的内部的工作原理和机制。
+
+### [IAP 用户退款与客诉处理优化](https://mp.weixin.qq.com/s/MtytymgkcP3_oAH7JyI1og)
+
+[@SeaHub](https://github.com/SeaHub): 众所周知,IAP 客诉处理一直是一个"老大难"问题。用户在反馈 IAP 问题时,往往只提供其支付后获得的苹果订单。而由于苹果设计原因,开发者无法根据苹果订单反查出业务订单信息,继而无法较好的处理用户反馈的客诉问题,导致支付用户可能因体验不佳而流失。除此之外,恶意退款也是另外一个 IAP 工程师必经的"老大难"问题,无法有效索回商品,导致造成业务出现坏账的情况比比皆是
+
+WWDC 2021,苹果为了优化客诉处理,同时为了打击恶意退款,提供了不少新能力。通过阅读本文,读者可以快速掌握部分 IAP 场景的痛点,以及如何基于新特性优化这部分的痛点
+
+### [IAP 后台通信优化与实践](https://mp.weixin.qq.com/s/dWsRKRJsYMRl0GX_36T-kg)
+
+[@SeaHub](https://github.com/SeaHub): 长期以来,苹果仅为 IAP 提供了 /verifyReceipt 这一个用于校验票据的后台接口。这也导致了该接口被全球众多开发者所依赖,基本上这个接口一旦出现问题,依赖后台票据校验的 App 都会出现因无法校验票据有效性而出现发货延迟问题。令人糟心的是,/verifyReceipt 接口目前表现确实不太稳定,一年总会出现两三次的服务不可用的情况;而日常其请求时耗也极高,业务的 IAP 后台处理时耗严重受该接口影响
+
+终于在今年,苹果新增了 Subscription Status API & In-App Purchase History API,同时,也诞生了可自校验的 JWS 形式票据。并且苹果还对备受开发者吐槽的后台通知进行了升级,新增 App Store Server Notification V2。
+
+在我看来,类似的举措一方面是为了给 /verifyReceipt 降负,另一方面也是为了丰富 IAP 的场景,给开发者提供更好的服务。通过阅读本文,读者可以快速掌握本次 WWDC21 的新特性,以及能够基于新特性对历史遗留的痛点做相应的优化处理
+
+## 摸鱼周报
+
+[@摸鱼周报 #49](https://mp.weixin.qq.com/s/6GvVh8_CJmsm1dp-CfIRvw):第四十九期摸鱼周报来了,一起来看下本期概要:
+
+* 话题:Chrome 100 发布,关于阅读器类的 App 审核指南有所更新
+* 面试模块:Runtime 中的 **StripeMap** 模板类
+* 优秀博客:Swift 5.6 和 Xcode 13.3 的新特性和新功能
+* 学习资料:即时设计是一款可以在线实时协作的专业 UI 设计工具
+* 开发工具:Decode,将 `Xcode Interface Builder` 文件(`Xib` 和 `Storyboard` 文件)转换为 `Swift` 源代码。
+
+## 内推
+
+老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
+
+如果你想**找工作**,点这里:https://www.yuque.com/iosalliance/article/bhutav
+
+如果你想**招人**,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
+
+当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
+
+## 关注我们
+
+我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
+
+**关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参**
+
+
+
+同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
+
+## 说明
+
+🚧 表示需某工具,🌟 表示编辑推荐
+
+预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
diff --git a/Reports/2022/#199-2022.04.18.md b/Reports/2022/#199-2022.04.18.md
new file mode 100644
index 000000000..86ab1b8e0
--- /dev/null
+++ b/Reports/2022/#199-2022.04.18.md
@@ -0,0 +1,204 @@
+# 老司机 iOS 周报 #199 | 2022-04-18
+
+
+老司机 iOS 周报,只为你呈现有价值的信息。
+
+你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
+
+## Developer - 设计开发加速器
+
+### [“订阅优惠”的工程实践](https://developer.apple.com/cn/accelerator/)
+
+2022 年 4 月 21 日(报名截止 4 月 20 日)
+
+学习如何通过 StoreKit 技术的接入向您的用户提供自动续期订阅产品的推介促销优惠、促销优惠和优惠代码。允许新用户或现有用户在特定时限内免费获取或以折扣价购买自动续期订阅。
+
+### [加快您的测试过程](https://developer.apple.com/cn/accelerator/)
+
+2022 年 4 月 19 日(报名截止 4 月 18 日)
+
+探索如何进行自动化测试,进一步有效处理测试结果。改进您的测试套件以加快反馈循环,进而更快地得到修复。了解如何利用 Test Plan 测试计划、xcodebuild 命令行工具及相关 API 来消除永无止境和表现不佳的测试。我们将研究 XCTest 中的测试超时和执行时间余量,检查设备并行化,并详细介绍用于平衡性能和明确故障定位的推荐实践。
+
+
+
+## 新手推荐
+
+### 🐕 [Design Patterns 的实战应用记录](https://medium.com/p/78507a8de6a5)
+
+[@老驴](https://weibo.com/u/6090610445):2016年的时候最火的文章莫过于一些设计模式类的分享。当时各种 MVP,MVC 等等的讨论火爆整个移动开发圈。只不过这几年,很难再见到有这类的文章了。这篇文章是作者自荐,记录的是作者完成一个对其他第三方库的封装的过程。对于刚接触移动开发的同学,可以再学习一下设计模式和其中的思路。
+
+对于大家刚接触这类的同学们,还是想再强调下,天下没有最好的设计模式,只有最适合当前项目的设计模式。千万不要陷入为了模式而模式的陷阱中去,过度设计也不可取。
+
+> 推荐人:[zhgchgli0718](https://github.com/zhgchgli0718)
+
+## 文章
+
+### 🌟 🐢 [Lookin 原理及 5 个开发难点](https://mp.weixin.qq.com/s/DL28y2qHkuDv4W_zLUbKcg)
+
+[@Damonwong](https://github.com/Damonvvong):Lookin 是一款可以查看与修改 iOS App 里的 UI 对象的软件,相信很多人都使用过它,之前一直好奇这款软件的实现原理,软件作者李凯就带了了实现 Lookin 的原理和 5 个开发难点。其主要通过 CS 架构实现 mac app 和 iOS app 之前的通信机制。同时也从做 Lookin 这款软件的过程中,总结了以下几个经验:
+
+- iOS 程序员如何学习写 macOS 程序?
+- 如何在 macOS 和 iOS 之间传输数据?
+- 如何正确渲染展开/折叠图像?
+- 如何渲染 3D 图像?
+- 如何加快刷新速度?
+
+感兴趣的同学,可以阅读原文查看细节。
+
+### 🌟 🐕 [Xcode Cloud: Feedback from leboncoin](https://medium.com/leboncoin-engineering-blog/xcode-cloud-feedback-from-leboncoin-82991326faa0)
+
+[@Damien](https://github.com/ZengyiMa): Xcode Cloud 是专为 Apple 开发者设计的 Xcode 内置持续集成和交付服务。本文来自 leboncoin iOS 团队在使用 Xcode Cloud 的体验,详细介绍了 Xcode Cloud 的方方面面,也介绍了其中的不足和优势,对 iOS 开发 CICD 相关的感兴趣的同学不妨一读。
+
+### 🌟 🐕 [音视频工程示例 AVDemo 7、8、9](https://mp.weixin.qq.com/s/CJAhkk9BmhMOXgD2pl_rjg)
+
+[@JonyFang](https://github.com/JonyFang): 音视频工程示例 AVDemo 7、8、9 篇:
+
+- iOS AVDemo 7: [视频采集 Demo](https://mp.weixin.qq.com/s/CJAhkk9BmhMOXgD2pl_rjg),实现视频采集逻辑并将采集的视频图像渲染进行预览,同时支持将数据转换为图片存储到相册;
+- iOS AVDemo 8: [视频编码 Demo](https://mp.weixin.qq.com/s/M2l-9_W8heu_NjSYKQLCRA),串联视频采集和编码模块,将采集到的视频数据输入给编码模块进行编码,并存储为文件;
+- iOS AVDemo 9: [视频封装 Demo](https://mp.weixin.qq.com/s/W17eLiUeCszNM8Kg-rlmBg),串联视频采集、编码、封装模块,将采集到的视频数据输入给编码模块进行编码,再将编码后的数据输入给 MP4 封装模块封装和存储;
+
+### 🐢 [得物 App H5 秒开优化实战](https://mp.weixin.qq.com/s/23ZFPK4CaCkinwpZ3SG9Rw)
+
+[@J_Knight_](https://github.com/knightsj):本文介绍了得物技术是如何将 H5 页面的秒开率从 30% 提高到 75% 的。文章最开始介绍了优化的背景和使用的指标。然后介绍了具体的优化方案,在客户端和 H5 都做了优化:
+
+客户端优化:
+- HTML 预加载
+- HTML 预请求
+- 离线包技术
+- 接口预请求
+- 预建连 & 链接保活
+- 预渲染
+
+H5 优化:
+- SSR 服务端渲染
+- HTML 预渲染
+- CSS 包大小优化
+- 图片优化
+- 其它优化
+
+在介绍方案的同时,也给出了遇到的难点和方案应用后的效果展示,文章最后也介绍了所使用的前端性能监控的方案
+
+### 🐢 [Introducing Swift Async Algorithms](https://www.swift.org/blog/swift-async-algorithms/)
+
+[@莲叔](http://github.com/aaaron7):async/await 操作符相信大家都不陌生,在很多语言中都对起进行了支持,比如 js。async/await 最大的意义在于让我们可以用顺序结构来书写异步代码,更加清晰,避免了callback hell。3月份,Swift 维护小组发布了原型版本的 Swift Async Algorithm Package,其中就包含了 async/await 的实现以及专门用来处理异步系列的算子,比如 Zip/CombineLast/Merge/Chain/Buffer/Debounce/Throttle。这些算子相信大家都不陌生,其实用法和在处理集合类型中使用是没有太大区别的,只是搭配 async/await 来使用就能够并发强大的能量,使用简洁的代码描述复杂的异步逻辑。感兴趣的同学可以持续关注这个 package 的后续进展。
+
+### 🐎 [iOS SIGKILL 简单介绍](https://juejin.cn/post/7081995513700024327)
+
+[@xiaofei86](https://github.com/xiaofei86):当崩溃日志的 Exception Type 为 SIGKILL 时,表示操作系统从上层杀死了我们的进程。本文通过对苹果 [Understanding the Exception Types in a Crash Report](https://developer.apple.com/documentation/xcode/understanding-the-exception-types-in-a-crash-report) 和 [Addressing Watchdog Terminations
+](https://developer.apple.com/documentation/xcode/addressing-watchdog-terminations) 文章的翻译整理,介绍了 SIGKILL 不同错误代码的含义,以及如何定位解决这些问题。
+
+### 🐎 [Adding Custom Shortcuts To Xcode](https://digitalbunker.dev/toggling-slow-animations-again/)
+
+[@极速男孩](https://github.com/ztlyyznf001):在 Xcode 把开启模拟器中的Slow Animations 的 Command + T 去掉以后,如果要打开 Slow Animations 就变得十分麻烦。本文教你如何给 Xcode 设置一些自定义的快捷键。
+
+### 🐢 [终端新玩法:“零代码”的剧本式引导](https://mp.weixin.qq.com/s/HZDcvHAtIgJfgD2mMGaHzA)
+
+[@AidenRao](https://weibo.com/AidenRao):互联网行业节奏偏快,App 的更新愈发频繁,如何让用户理解产品功能,完成认知迭代,是业务发展中不可忽视的一环。本文介绍了美团外卖终端团队在用户心智建设领域的探索与实践。从业务现状与剧本式思维的思考出发,终端加管理后台的一站式设计,传统 CV 与深度学习结合,大大简化了剧本式引导的接入门槛。
+
+### 🐕 [Xcode13 “消失”的 Info.plist 文件](https://mp.weixin.qq.com/s/mgGjBb9dt714c117xrYGfQ)
+
+[@Barney](https://github.com/BarneyZhaoooo): 本文介绍了 Xcode13 中 Info.plist 文件的官方配置变化。
+
+从 Xcode13 开始,新建的工程不再要求使用配置文件(Info.plist、entitlements)。如果需要修改 Xcode 的配置,请直接在 Xcod e面板 ”target - Info - Custom iOS Target Properties” 和 ”build settings”中设置。
+
+- 消失的 Info.plist 文件
+- 如何回到从前的 Info.plist?
+
+### 🐎 [Flutter 代码生成技术 APT 与 AOP 适用场景与对比](https://mp.weixin.qq.com/s/eWG8HiaJFiHd3jxSnnZ4aQ)
+
+[@Damien](https://weibo.com/ZengyiMa):APT(Annotation Processing Tool)是注解处理工具,AOP(Aspect-Oriented Programming)是面向切面编程,在 Flutter 中也有类似的概念,本文从以下几个方面详细介绍了这 2 项技术:
+
+* APT & AOP 的概念解读
+* APT & AOP 的实现原理
+* APT & AOP 的使用场景
+* APT & AOP 的技术对比
+
+### 🐎 [精确定位页面滑动帧率瓶颈及优化参考](https://juejin.cn/post/7077812846217658381)
+
+[@Leo](https://github.com/leomobiledeveloper):页面流畅性是一个非常影响用户体验的性能指标。本文从原理和工具出发,讲解了如何定义以及分析卡顿,接着从富文本异步绘制、约束布局、视图创建等几个角度介绍了如何针对性的优化。
+
+### 🐕 [PROTOCOL & GENERIC IN SWIFT](http://nonomori.bitcron.com/post/protocolandgenericinswift/readme)
+
+[@zvving](https://github.com/zvving):Swift 基于面向协议的设计提供了简明&丰富的抽象手段,这也给复杂场景使用 Protocol 带来不少歧义,官方最近几个版本与之相关的设计也持续被讨论并改进。比如 [Opaque Result Types](https://github.com/apple/swift-evolution/blob/master/proposals/0244-opaque-result-types.md)、[Unlock existentials for all protocols](https://github.com/apple/swift-evolution/blob/main/proposals/0309-unlock-existential-types-for-all-protocols.md)。
+
+本文从一个简单例子对比范型及类型擦除如何应用及二者内部实现的不同,帮助大家加深理解:
+- 静态 vs 动态
+- 编译器生成模板代码 vs 通过 Existential Container 隐藏类型
+
+### 🐎 [Type placeholders in Swift](https://www.swiftbysundell.com/articles/type-placeholders-in-swift/)
+
+[@anotheren](https://github.com/anotheren):Swift 5.6 中引入了 **Type Placeholders** 来进一步优化类型推断,允许使用 `_` 来让编译器自动推断类型,对于例如 `CurrentValueSubject