{"stats":{"reports":371,"posts":4,"contributors":46,"builtAt":"2026-05-19T05:28:09.405Z"},"items":[{"id":"c-zvving","type":"contributor","title":"Zvving","date":"","avatar":"https://avatars.githubusercontent.com/u/485079?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于字节跳动，负责音乐创作客户端开发。热爱开源理念，每周一场足球不看球，任氏主机党塞尔达是天。","body":"### Zvving\n\n<img src=\"https://avatars.githubusercontent.com/u/485079?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于字节跳动，负责音乐创作客户端开发。热爱开源理念，每周一场足球不看球，任氏主机党塞尔达是天。"},{"id":"c-zhangferry","type":"contributor","title":"zhangferry","date":"","avatar":"https://avatars.githubusercontent.com/u/13702445?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前在抖音基础技术团队从事代码分析相关工作。对 LLM、Stable Diffusion 有过短暂热爱，目前较大精力在带娃。","body":"### zhangferry\n\n<img src=\"https://avatars.githubusercontent.com/u/13702445?v=4\" width=\"150\"/>\n\n老司机技术成员，目前在抖音基础技术团队从事代码分析相关工作。对 LLM、Stable Diffusion 有过短暂热爱，目前较大精力在带娃。"},{"id":"c-xiaofei86","type":"contributor","title":"xiaofei86","date":"","avatar":"https://avatars.githubusercontent.com/u/8192632?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于百度，负责百度网盘客户端基础架构相关的工作，正在折腾前端。日常躺平，梦想当一名卷王。","body":"### xiaofei86\n\n<img src=\"https://avatars.githubusercontent.com/u/8192632?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于百度，负责百度网盘客户端基础架构相关的工作，正在折腾前端。日常躺平，梦想当一名卷王。"},{"id":"c-smallfly","type":"contributor","title":"Smallfly","date":"","avatar":"https://avatars.githubusercontent.com/u/12881129?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于网易云音乐，负责长音频大前端业务。喜欢 Swift，对前端技术比较感兴趣。业务爱好健身，想当一枚粗狗。","body":"### Smallfly\n\n<img src=\"https://avatars.githubusercontent.com/u/12881129?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于网易云音乐，负责长音频大前端业务。喜欢 Swift，对前端技术比较感兴趣。业务爱好健身，想当一枚粗狗。"},{"id":"c-parsifal","type":"contributor","title":"Parsifal","date":"","avatar":"https://avatars.githubusercontent.com/u/7930911?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术二代目，新技术爱好者，微医移动技术负责人，看球不打球，虎扑十多年潜水党。","body":"### Parsifal\n\n<img src='https://avatars.githubusercontent.com/u/7930911?v=4' width='150'>\n\n老司机技术二代目，新技术爱好者，微医移动技术负责人，看球不打球，虎扑十多年潜水党。"},{"id":"c-mmoaay","type":"contributor","title":"mmoaay","date":"","avatar":"https://avatars.githubusercontent.com/u/4161013?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机早期编辑 / T沙龙负责人","body":"### mmoaay\n\n<img src=\"https://avatars.githubusercontent.com/u/4161013?v=4\" width=\"150\"/>\n\n老司机早期编辑 / T沙龙负责人"},{"id":"c-looping","type":"contributor","title":"Looping","date":"","avatar":"https://avatars.githubusercontent.com/u/442607?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前全力为小项目打杂，争取做大。业余爱好代码重构和算法设计，资浅科幻推理迷。","body":"### Looping\n\n<img src=\"https://avatars.githubusercontent.com/u/442607?v=4\" width=\"150\"/>\n\n老司机技术成员，目前全力为小项目打杂，争取做大。业余爱好代码重构和算法设计，资浅科幻推理迷。"},{"id":"c-leo","type":"contributor","title":"Leo","date":"","avatar":"https://avatars.githubusercontent.com/u/15663899?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于字节跳动，负责 TikTok iOS 客户端体验。喜欢研究一些技术底层的原理，业余喜欢主机游戏（特别是魂类游戏）。","body":"### Leo\n\n<img src=\"https://avatars.githubusercontent.com/u/15663899?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于字节跳动，负责 TikTok iOS 客户端体验。喜欢研究一些技术底层的原理，业余喜欢主机游戏（特别是魂类游戏）。"},{"id":"c-kyo","type":"contributor","title":"Kyo","date":"","avatar":"https://avatars.githubusercontent.com/u/4088084?s=400&u=e27d033f3b8994e2fb36bd35dc3da23ce758c970&v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于百度小说，负责客户端团队，关注文档、图书排版体验。喜欢的很多，这里说不过来。","body":"### Kyo\n\n<img src=\"https://avatars.githubusercontent.com/u/4088084?s=400&u=e27d033f3b8994e2fb36bd35dc3da23ce758c970&v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于百度小说，负责客户端团队，关注文档、图书排版体验。喜欢的很多，这里说不过来。"},{"id":"c-kyle-ye","type":"contributor","title":"Kyle-Ye","date":"","avatar":"https://avatars.githubusercontent.com/u/43724855?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，Swift Documentation Workgroup 成员，独立开发者","body":"### Kyle-Ye\n\n<img src=\"https://avatars.githubusercontent.com/u/43724855?v=4\" width=\"150\"/>\n\n老司机技术成员，Swift Documentation Workgroup 成员，独立开发者"},{"id":"c-jonyfang","type":"contributor","title":"JonyFang","date":"","avatar":"https://avatars.githubusercontent.com/u/12381169?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机周报编辑，目前就职于哔哩哔哩，负责直播基础、业务开发。日常喜欢研究一些基础框架的底层原理，业余会跑跑步、打打球。","body":"### JonyFang\n\n<img src=\"https://avatars.githubusercontent.com/u/12381169?v=4\" width=\"150\"/>\n\n老司机周报编辑，目前就职于哔哩哔哩，负责直播基础、业务开发。日常喜欢研究一些基础框架的底层原理，业余会跑跑步、打打球。"},{"id":"c-jimq","type":"contributor","title":"JimQ","date":"","avatar":"https://avatars.githubusercontent.com/u/4947872?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术候补队员。All in AI-App。理想是：大河向东流，财务挺自由。已经实现了上半句。","body":"### JimQ\n\n<img src=\"https://avatars.githubusercontent.com/u/4947872?v=4\" width=\"150\"/>\n\n老司机技术候补队员。All in AI-App。理想是：大河向东流，财务挺自由。已经实现了上半句。"},{"id":"c-jason-yu","type":"contributor","title":"Jason Yu","date":"","avatar":"https://avatars.githubusercontent.com/u/3334458?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"","body":"### Jason Yu\n\n<img src=\"https://avatars.githubusercontent.com/u/3334458?v=4\" width=\"150\"/>"},{"id":"c-j-knight","type":"contributor","title":"J_Knight_","date":"","avatar":"https://avatars.githubusercontent.com/u/12953705?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于同花顺，参与人工智能相关的业务开发。重度股票 & 期货爱好者。","body":"### J_Knight_\n\n<img src=\"https://avatars.githubusercontent.com/u/12953705?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于同花顺，参与人工智能相关的业务开发。重度股票 & 期货爱好者。"},{"id":"c-eyrefree","type":"contributor","title":"EF / EyreFree","date":"","avatar":"https://avatars.githubusercontent.com/u/10757132?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机周报编辑 / T 技术沙龙运营负责人 / 开源爱好者 / Sprout 技术负责人。","body":"### EF / EyreFree\n\n<img src=\"https://avatars.githubusercontent.com/u/10757132?v=4\" width=\"150\"/>\n\n老司机周报编辑 / T 技术沙龙运营负责人 / 开源爱好者 / Sprout 技术负责人。"},{"id":"c-dylanyang","type":"contributor","title":"DylanYang","date":"","avatar":"https://avatars.githubusercontent.com/u/5527453?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于字节跳动，参与音乐相关客户端开发，业余喜欢看看番、打打游戏。","body":"### DylanYang\n\n<img src=\"https://avatars.githubusercontent.com/u/5527453?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于字节跳动，参与音乐相关客户端开发，业余喜欢看看番、打打游戏。"},{"id":"c-david","type":"contributor","title":"David","date":"","avatar":"https://avatars.githubusercontent.com/u/26401347?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前从事 iOS Infra 相关工作，对跨平台技术比较感兴趣。喜欢摄影、跳舞，会点 Popping，为多上街舞大师课，现定居大阪。","body":"### David\n\n<img src=\"https://avatars.githubusercontent.com/u/26401347?v=4\" width=\"150\"/>\n\n老司机技术成员，目前从事 iOS Infra 相关工作，对跨平台技术比较感兴趣。喜欢摄影、跳舞，会点 Popping，为多上街舞大师课，现定居大阪。"},{"id":"c-damien","type":"contributor","title":"Damien","date":"","avatar":"https://avatars.githubusercontent.com/u/3383471?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于字节跳动，负责 TikTok 客户端隐私相关的工作。喜欢研究一些新新技术，爱折腾。","body":"### Damien\n\n<img src=\"https://avatars.githubusercontent.com/u/3383471?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于字节跳动，负责 TikTok 客户端隐私相关的工作。喜欢研究一些新新技术，爱折腾。"},{"id":"c-crazyzhang","type":"contributor","title":"CrazyZhang","date":"","avatar":"https://avatars.githubusercontent.com/u/8816364?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机周报编辑，另类的 Android 开发，Flutter 忠实拥护者，Unity 爱好人员，王者中毒人员。","body":"### CrazyZhang\n\n<img src=\"https://avatars.githubusercontent.com/u/8816364?v=4\" width=\"150\"/>\n\n老司机周报编辑，另类的 Android 开发，Flutter 忠实拥护者，Unity 爱好人员，王者中毒人员。"},{"id":"c-cooper","type":"contributor","title":"Cooper","date":"","avatar":"https://avatars.githubusercontent.com/u/8022145?s=40&v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于 Zoom，参与 Zoom 桌面端基建开发，负责性能优化、稳定性维护和 CI 相关工作，重度自驾游爱好者。 Editor of Old Driver Weekly, currently working at Zoom, involved in the development of Zoom desktop infrastructure, responsible for p","body":"### Cooper\n\n<img src='https://avatars.githubusercontent.com/u/8022145?s=40&v=4' width='150'>\n\n老司机技术成员，目前就职于 Zoom，参与 Zoom 桌面端基建开发，负责性能优化、稳定性维护和 CI 相关工作，重度自驾游爱好者。\n\nEditor 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."},{"id":"c-barneyzhaoooo","type":"contributor","title":"BZ / BarneyZhaoooo","date":"","avatar":"https://avatars.githubusercontent.com/u/11523970?&v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员 / B站 / 原神、星穹铁道爱好者。","body":"### BZ / BarneyZhaoooo\n\n<img src=\"https://avatars.githubusercontent.com/u/11523970?&v=4\" width=\"150\"/>\n\n老司机技术成员 / B站 / 原神、星穹铁道爱好者。"},{"id":"c-bluesjiang","type":"contributor","title":"BluesJiang","date":"","avatar":"https://avatars.githubusercontent.com/u/15259706?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"iOS 开发者，老司机技术成员，目前就职于淘宝，负责淘宝原生基础架构。热衷于 Swift/SwiftUI 等基础技术领域。","body":"### BluesJiang\n\n<img src=\"https://avatars.githubusercontent.com/u/15259706?v=4\" width=\"150\"/>\n\niOS 开发者，老司机技术成员，目前就职于淘宝，负责淘宝原生基础架构。热衷于 Swift/SwiftUI 等基础技术领域。"},{"id":"c-awhisper","type":"contributor","title":"Awhisper","date":"","avatar":"https://avatars.githubusercontent.com/u/4347733?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于蚂蚁金服，参与支付宝 APP 的开发工作，base 北京，常年出差杭州，不折腾不舒服司机。","body":"### Awhisper\n\n<img src=\"https://avatars.githubusercontent.com/u/4347733?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于蚂蚁金服，参与支付宝 APP 的开发工作，base 北京，常年出差杭州，不折腾不舒服司机。"},{"id":"c-anotheren","type":"contributor","title":"anotheren","date":"","avatar":"https://avatars.githubusercontent.com/u/13653643?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机周报编辑，新晋奶爸，无业游民，正在向全栈独立开发者努力，熟悉图像与视频技术，希望在 AI 与 VR 浪潮中，找到新的定位。","body":"### anotheren\n\n<img src=\"https://avatars.githubusercontent.com/u/13653643?v=4\" width=\"150\"/>\n\n老司机周报编辑，新晋奶爸，无业游民，正在向全栈独立开发者努力，熟悉图像与视频技术，希望在 AI 与 VR 浪潮中，找到新的定位。"},{"id":"c-aidenrao","type":"contributor","title":"AidenRao","date":"","avatar":"https://avatars.githubusercontent.com/u/10378703?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于字节跳动，参与抖音 APP 的开发工作，base 成都。想成为作家，又或者独立开发者，游戏设计师。擅长当韭菜。","body":"### AidenRao\n\n<img src=\"https://avatars.githubusercontent.com/u/10378703?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于字节跳动，参与抖音 APP 的开发工作，base 成都。想成为作家，又或者独立开发者，游戏设计师。擅长当韭菜。"},{"id":"c-josephchang10","type":"contributor","title":"张嘉夫 / josephchang10","date":"","avatar":"https://avatars.githubusercontent.com/u/5158525?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"独立开发者，数字游民。","body":"### 张嘉夫 / josephchang10\n\n<img src=\"https://avatars.githubusercontent.com/u/5158525?v=4\" width=\"150\"/>\n\n独立开发者，数字游民。"},{"id":"c-yegucheng","type":"contributor","title":"叶孤城 / Yegucheng","date":"","avatar":"https://avatars.githubusercontent.com/u/8814535?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机早期作者，现在佛系划水，独立开发者(app:灵动大陆)，积极拥抱 SwiftUI too","body":"### 叶孤城 / Yegucheng\n\n<img src=\"https://avatars.githubusercontent.com/u/8814535?v=4\" width=\"150\"/>\n\n老司机早期作者，现在佛系划水，独立开发者(app:灵动大陆)，积极拥抱 SwiftUI too"},{"id":"c-tom510230","type":"contributor","title":"小T / tom510230","date":"","avatar":"https://avatars.githubusercontent.com/u/5229148?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术曾经活跃的编辑，从 iOS 4 开始入坑，目前在剪映项目组，专注于跨平台技术相关领域","body":"### 小T / tom510230\n\n<img src=\"https://avatars.githubusercontent.com/u/5229148?v=4\" width=\"150\"/>\n\n老司机技术曾经活跃的编辑，从 iOS 4 开始入坑，目前在剪映项目组，专注于跨平台技术相关领域"},{"id":"c-享耳先森","type":"contributor","title":"享耳先森","date":"","avatar":"https://avatars.githubusercontent.com/u/712004?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于丁香园。参与丁香医生、丁香妈妈等 App 开发，还有自己的独立 App 骑行控。","body":"### 享耳先森\n\n<img src=\"https://avatars.githubusercontent.com/u/712004?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于丁香园。参与丁香医生、丁香妈妈等 App 开发，还有自己的独立 App 骑行控。"},{"id":"c-satanwoo","type":"contributor","title":"五子棋 / SatanWoo","date":"","avatar":"https://avatars.githubusercontent.com/u/1303079?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，就职于阿里巴巴淘宝，负责 端智能/AR/VR 等技术","body":"### 五子棋 / SatanWoo\n\n<img src=\"https://avatars.githubusercontent.com/u/1303079?v=4\" width=\"150\"/>\n\n老司机技术成员，就职于阿里巴巴淘宝，负责 端智能/AR/VR 等技术"},{"id":"c-crazycodershi","type":"contributor","title":"天南 / CrazyCoderShi","date":"","avatar":"https://avatars.githubusercontent.com/u/12297224?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，无业游民，天天瞎折腾；目前用 Flutter 写移动端。","body":"### 天南 / CrazyCoderShi\n\n<img src=\"https://avatars.githubusercontent.com/u/12297224?v=4\" width=\"150\"/>\n\n老司机技术成员，无业游民，天天瞎折腾；目前用 Flutter 写移动端。"},{"id":"c-kemchenj","type":"contributor","title":"四娘 / kemchenj","date":"","avatar":"https://avatars.githubusercontent.com/u/11192474?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术核心成员 / 开源爱好者 / 最近在做 3D 重建相关的开发工作","body":"### 四娘 / kemchenj\n\n<img src=\"https://avatars.githubusercontent.com/u/11192474?v=4\" width=\"150\"/>\n\n老司机技术核心成员 / 开源爱好者 / 最近在做 3D 重建相关的开发工作"},{"id":"c-水水","type":"contributor","title":"水水","date":"","avatar":"https://avatars.githubusercontent.com/u/5960998?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，偶尔 T 技术沙龙 的临时工，目前就职于百度（上海），百度输入法 iOS & Mac 应用的程序媛。美食、徒步爱好者~","body":"### 水水\n\n<img src=\"https://avatars.githubusercontent.com/u/5960998?v=4\" width=\"150\"/>\n\n老司机技术成员，偶尔 T 技术沙龙 的临时工，目前就职于百度（上海），百度输入法 iOS & Mac 应用的程序媛。美食、徒步爱好者~"},{"id":"c-zoe","type":"contributor","title":"慕牧 / Zoe","date":"","avatar":"https://avatars.githubusercontent.com/u/11988088?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于智谱华章。喜欢尝试新鲜事物，乐于探索，在变优秀的路上不断努力中～长板初学者。","body":"### 慕牧 / Zoe\n\n<img src='https://avatars.githubusercontent.com/u/11988088?v=4' width='150'>\n\n老司机技术成员，目前就职于智谱华章。喜欢尝试新鲜事物，乐于探索，在变优秀的路上不断努力中～长板初学者。"},{"id":"c-lacklock","type":"contributor","title":"没故事的卓同学 / lacklock","date":"","avatar":"https://avatars.githubusercontent.com/u/6942765?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术发起人。WWDC19 ~ 20 内参主要负责人。独立开发者（App：打工人小组件）。积极拥抱 SwiftUI。","body":"### 没故事的卓同学 / lacklock\n\n<img src=\"https://avatars.githubusercontent.com/u/6942765?v=4\" width=\"150\"/>\n\n老司机技术发起人。WWDC19 ~ 20 内参主要负责人。独立开发者（App：打工人小组件）。积极拥抱 SwiftUI。"},{"id":"c-100mango","type":"contributor","title":"芒果 / 100mango","date":"","avatar":"https://avatars.githubusercontent.com/u/5073511?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"https://github.com/100mango 老司机早期编辑，喜欢清晰简洁的代码与技术方案","body":"### 芒果 / 100mango\n\n<img src=\"https://avatars.githubusercontent.com/u/5073511?v=4\" width=\"150\"/>\n\nhttps://github.com/100mango\n\n老司机早期编辑，喜欢清晰简洁的代码与技术方案"},{"id":"c-莲叔","type":"contributor","title":"莲叔","date":"","avatar":"https://avatars.githubusercontent.com/u/16416236?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，就职于uc，负责直播业务。主要关注音视频、端智能相关技术。原神57级摆烂中，最近开始打壁球。","body":"### 莲叔\n\n<img src=\"https://avatars.githubusercontent.com/u/16416236?v=4\" width=\"150\" />\n\n老司机技术成员，就职于uc，负责直播业务。主要关注音视频、端智能相关技术。原神57级摆烂中，最近开始打壁球。"},{"id":"c-damonwong","type":"contributor","title":"老王 / Damonwong","date":"","avatar":"https://avatars.githubusercontent.com/u/11873526?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术三代目，WWDC20 ~ 22 内参主要负责人。目前就职于阿里巴巴，参与手机淘宝基础建设工作。对 iOS 新特性、Swift、编译等较感兴趣。除了工作和技术以外，也喜欢和朋友聊天，看电竞比赛（LPL）以及玩手机游戏（王者荣耀）。","body":"### 老王 / Damonwong\n\n<img src=\"https://avatars.githubusercontent.com/u/11873526?v=4\" width=\"150\"/>\n\n老司机技术三代目，WWDC20 ~ 22 内参主要负责人。目前就职于阿里巴巴，参与手机淘宝基础建设工作。对 iOS 新特性、Swift、编译等较感兴趣。除了工作和技术以外，也喜欢和朋友聊天，看电竞比赛（LPL）以及玩手机游戏（王者荣耀）。"},{"id":"c-老驴","type":"contributor","title":"老驴","date":"","avatar":"https://avatars.githubusercontent.com/u/22208754?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，就职于某 404 公司， 努力写算法和推进项目中...","body":"### 老驴\n\n<img src=\"https://avatars.githubusercontent.com/u/22208754?v=4\" width=\"150\"/>\n\n老司机技术成员，就职于某 404 公司， 努力写算法和推进项目中..."},{"id":"c-chengzhihuang","type":"contributor","title":"老黄 / ChengzhiHuang","date":"","avatar":"https://avatars.githubusercontent.com/u/20059859?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，周报轮值主编。目前就职于字节跳动，参与西瓜视频质量与稳定性工作。对 OOM/Watchdog 较为了解并长期投入。月球厨师；Amphibian 与 打越钢太郎 的粉丝。","body":"### 老黄 / ChengzhiHuang\n\n<img src='https://avatars.githubusercontent.com/u/20059859?v=4' width='150'>\n\n老司机技术成员，周报轮值主编。目前就职于字节跳动，参与西瓜视频质量与稳定性工作。对 OOM/Watchdog 较为了解并长期投入。月球厨师；Amphibian 与 打越钢太郎 的粉丝。"},{"id":"c-老峰","type":"contributor","title":"老峰","date":"","avatar":"https://avatars.githubusercontent.com/u/5457612?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机周报编辑，技术狂热，混迹币圈，希望早日自由。","body":"### 老峰\n\n<img src=\"https://avatars.githubusercontent.com/u/5457612?v=4\" width=\"150\"/>\n\n老司机周报编辑，技术狂热，混迹币圈，希望早日自由。"},{"id":"c-极速男孩007","type":"contributor","title":"极速男孩007","date":"","avatar":"https://avatars.githubusercontent.com/u/14541874?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于回想科技，沉迷于 Flutter。喜欢各种数码产品。","body":"### 极速男孩007\n\n<img src=\"https://avatars.githubusercontent.com/u/14541874?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于回想科技，沉迷于 Flutter。喜欢各种数码产品。"},{"id":"c-红纸","type":"contributor","title":"红纸","date":"","avatar":"https://avatars.githubusercontent.com/u/8831241?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，WWDC 内参小助手（初号机）。目前就职于阿里巴巴，负责手淘 CI/CD 和研发效率相关工作。爱折腾新玩意儿。Dota2 仅 6k 小时的菜鸡。","body":"### 红纸\n\n<img src=\"https://avatars.githubusercontent.com/u/8831241?v=4\" width=\"150\"/>\n\n老司机技术成员，WWDC 内参小助手（初号机）。目前就职于阿里巴巴，负责手淘 CI/CD 和研发效率相关工作。爱折腾新玩意儿。Dota2 仅 6k 小时的菜鸡。"},{"id":"c-含笑饮砒霜","type":"contributor","title":"含笑饮砒霜","date":"","avatar":"https://avatars.githubusercontent.com/u/16701393?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，目前就职于百度，随便做点、研究点东西。渴望尽早退休，善于发现美好，乐于享受生活。","body":"### 含笑饮砒霜\n\n<img src=\"https://avatars.githubusercontent.com/u/16701393?v=4\" width=\"150\"/>\n\n老司机技术成员，目前就职于百度，随便做点、研究点东西。渴望尽早退休，善于发现美好，乐于享受生活。"},{"id":"c-邦ben","type":"contributor","title":"邦Ben","date":"","avatar":"https://avatars.githubusercontent.com/u/11420716?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，周报轮值主编，曾担任 WWDC 内参文章审核，目前就职于字节跳动 - 剪映，负责剪辑工具侧相关业务，最近入坑羽毛球被虐菜，塞尔达工业革命溜街中。","body":"### 邦Ben\n\n<img src=\"https://avatars.githubusercontent.com/u/11420716?v=4\" width=\"150\"/>\n\n老司机技术成员，周报轮值主编，曾担任 WWDC 内参文章审核，目前就职于字节跳动 - 剪映，负责剪辑工具侧相关业务，最近入坑羽毛球被虐菜，塞尔达工业革命溜街中。"},{"id":"c-bq","type":"contributor","title":"阿权 / bq","date":"","avatar":"https://avatars.githubusercontent.com/u/13716794?v=4","path":"Contributors/README.md","url":"Contributors/README.md","excerpt":"老司机技术成员，base 广州，就职于字节剪映团队，喜欢音视频和图像处理，做过许多翻译和 WWDC 内参，热爱摇滚与爵士。喜欢文艺喜欢电影，曾经幻想诗与远方，却囿于昼夜、厨房与爱。","body":"### 阿权 / bq\n\n<img src=\"https://avatars.githubusercontent.com/u/13716794?v=4\" width=\"150\"/>\n\n老司机技术成员，base 广州，就职于字节剪映团队，喜欢音视频和图像处理，做过许多翻译和 WWDC 内参，热爱摇滚与爵士。喜欢文艺喜欢电影，曾经幻想诗与远方，却囿于昼夜、厨房与爱。"},{"id":"p-swift5-更新笔记","type":"post","title":"Swift 5 Release Notes for Xcode 10.2","date":"2026-05-19","path":"Posts/Swift5 更新笔记.md","url":"Posts/Swift5%20%E6%9B%B4%E6%96%B0%E7%AC%94%E8%AE%B0.md","excerpt":"Swift 5 Release Notes for Xcode 10.2 Swift5 正式更新，官方提供了更新笔记说明，我们周报编辑团队的 @Tom 组织 @老老老老老老老驴，@小非86，@邦ben 和 @极速男孩 为大家做了第一手的翻译工作，方便大家了解这次对于 Swift 发展史很重要的一次迭代。另外，@Tom 所在的深圳头条研发中心正在招募各路好手，有兴趣的可以加他微信 tomtan，切磋"},{"id":"p-让面试官来告诉你哪类-ios-开发更容易被青睐","type":"post","title":"让面试官来告诉你，哪类 iOS 开发更容易被青睐？","date":"2026-05-19","path":"Posts/让面试官来告诉你，哪类 iOS 开发更容易被青睐？.md","url":"Posts/%E8%AE%A9%E9%9D%A2%E8%AF%95%E5%AE%98%E6%9D%A5%E5%91%8A%E8%AF%89%E4%BD%A0%EF%BC%8C%E5%93%AA%E7%B1%BB%20iOS%20%E5%BC%80%E5%8F%91%E6%9B%B4%E5%AE%B9%E6%98%93%E8%A2%AB%E9%9D%92%E7%9D%90%EF%BC%9F.md","excerpt":"让面试官来告诉你，哪类 iOS 开发更容易被青睐？ 在当下这个金三银四的时期，我们经常会看到「XXX 的面试准备」、「XXXX 面试心得」、「XXX 面试之路」之类的文章。但是这些都是站在面试者的角度出发的文章。总结了各大公司的面试流程，分享面试深度、广度。对于自己面试的表现只能从自身的表现，亦或者是从面试官的微表情中透露出来的一些动作来感知。但是我认为这些不一定准确的，只是自己的主观意识罢了~"},{"id":"p-老司机技术周报","type":"post","title":"老司机技术周报","date":"2026-05-19","path":"Posts/老司机技术周报.md","url":"Posts/%E8%80%81%E5%8F%B8%E6%9C%BA%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5.md","excerpt":"老司机技术周报 老司机技术周报是一个由移动端技术爱好者组成的公益技术团体。经过近 4 年发展，编辑组已经聚集了 38 位 iOS 圈内一线开发者，成员来自各个城市，涵盖了互联网行业的各个头部企业。我们致力于在信息爆炸的时代将真正有价值的内容输送给读者，为社区发展注入一点活力，曾联合 SwiftGG 和知识小集等一起组织了近 4 年的《WWDC 内参》活动，GitHub、公众号和掘金等平台均拥有广大"},{"id":"p-老司机技术周报精品","type":"post","title":"老司机技术周报","date":"2026-05-19","path":"Posts/老司机技术周报精品.md","url":"Posts/%E8%80%81%E5%8F%B8%E6%9C%BA%E6%8A%80%E6%9C%AF%E5%91%A8%E6%8A%A5%E7%B2%BE%E5%93%81.md","excerpt":"老司机技术周报 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"},{"id":"r-371-2026-05-25","type":"report","title":"老司机 iOS 周报 #371 | 2026-05-25","issue":371,"date":"2026-05-25","year":2026,"path":"Reports/2026/#371-2026.05.25.md","url":"Reports/2026/%23371-2026.05.25.md","excerpt":"老司机 iOS 周报 #371 | 2026-05-25 老司机 iOS 周报，只为你呈现有价值的信息。 你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。 新闻 行业相关的新闻、趣事、看法  Developer - 设计开发加速器 设计开发加速器相关活动 新手推荐 收集一些对新手友好且质量不错的文章 文章 写"},{"id":"r-370-2026-05-11","type":"report","title":"老司机 iOS 周报 #370 | 2026-05-11","issue":370,"date":"2026-05-11","year":2026,"path":"Reports/2026/#370-2026.05.11.md","url":"Reports/2026/%23370-2026.05.11.md","excerpt":"DanceUI 开源：DanceUI 是 ByteDance 开源的类 SwiftUI 声明式 UI 框架，目标是在 SwiftUI 风格的 DSL 和更低系统版本兼容之间做一层工程化实现。项目提供了与 SwiftUI 对齐的基础能力，包括 、 、 、 、 、 等，同时通过 DanceUIRuntim；Trust, Then Verify：以这篇文章《Trust, Then Verify》开头，你会很快意识到 : 真正拉开 AI 编程差","sections":[{"heading":"DanceUI 开源","url":"https://github.com/bytedance/DanceUI","recommender":"Kyle-Ye"},{"heading":"Trust, Then Verify","url":"https://www.racecondition.software/blog/ios-build-verify/","recommender":"Cooper Chen"},{"heading":"Anthropic 产品团队为何快过所有人","url":"https://mp.weixin.qq.com/s/hjxIDZxMK4k1h_DUj-rN1w","recommender":"zhangferry"},{"heading":"Why Your pbxproj Is Bloated (and How to Fix It)","url":"https://codingwithvera.com/why-your-pbxproj-is-bloated-and-how-to-fix-it/","recommender":"david-clang"},{"heading":"Six Years Perfecting Maps on watchOS","url":"https://david-smith.org/blog/2026/04/29/maps-on-watchos/","recommender":"Barney"},{"heading":"Synchronization in Swift: Actors vs Queues vs Locks","url":"https://livsycode.com/best-practices/actors-vs-queues-vs-locks-in-swift/","recommender":"Smallfly"},{"heading":"Cupertino v1.0.0 \"First Light\"","url":"https://aleahim.com/blog/cupertino-first-light/","recommender":"阿权"}]},{"id":"r-369-2026-04-27","type":"report","title":"老司机 iOS 周报 #369 | 2026-04-27","issue":369,"date":"2026-04-27","year":2026,"path":"Reports/2026/#369-2026.04.27.md","url":"Reports/2026/%23369-2026.04.27.md","excerpt":"Under the hood: Android 17’s lock-free MessageQueue：Android MessageQueue 是从 Android 的核心框架，从 API1 就已经存在了，这次 Android 针对它进行了重构，是非常大的优化。；SQLite: Vacuuming the WALs：sqlite 是常见的端用存储，一般也都会辅以开启 Write-Ahead Logging(WAL) 模式提升性能。对于","sections":[{"heading":"Under the hood: Android 17’s lock-free MessageQueue","url":"https://android-developers.googleblog.com/2026/02/under-hood-android-17s-lock-free.html","recommender":"Crazy"},{"heading":"SQLite: Vacuuming the WALs","url":"https://www.theunterminatedstring.com/sqlite-vacuuming/","recommender":"ChengzhiHuang"},{"heading":"A Small SwiftUI Warning and a Long Journey to Understand It","url":"https://alejandromp.com/development/blog/a-small-swiftui-warning-and-a-long-journey-to-understand-it/","recommender":"阿权"},{"heading":"Lazy Properties in Swift - Why They Don't Always Work in SwiftUI","url":"https://www.sagarunagar.com/blog/lazy-properties-swiftui-pitfalls/","recommender":"Barney"},{"heading":"A Reusable Spotlight Onboarding Component in SwiftUI","url":"https://livsycode.com/swiftui/a-reusable-spotlight-onboarding-component-in-swiftui/","recommender":"DylanYang"},{"heading":"SwiftPM: 2x faster resolves, 3x smaller disk footprint","url":"https://forums.swift.org/t/swiftpm-2x-faster-resolves-3x-smaller-disk-footprint/85750","recommender":"david-clang"}]},{"id":"r-368-2026-04-13","type":"report","title":"老司机 iOS 周报 #368 | 2026-04-13","issue":368,"date":"2026-04-13","year":2026,"path":"Reports/2026/#368-2026.04.13.md","url":"Reports/2026/%23368-2026.04.13.md","excerpt":"Swift 6.3 Released：Swift 6.3 正式发布，带来了多项语言和工具链层面的重要更新。语言特性方面，新增 attribute 允许将 Swift 函数和枚举直接暴露给 C 代码并自动生成头文件，新增 模块名选择器语法解决多模块同名 API 的歧义问题，同时为库作者提供了 、 、 等性能控制属性。构；Xcode 26.4 Simulator Paste Is Broken: Here's the Workaround：","sections":[{"heading":"Swift 6.3 Released","url":"https://www.swift.org/blog/swift-6.3-released/","recommender":"Kyle-Ye"},{"heading":"Xcode 26.4 Simulator Paste Is Broken: Here's the Workaround","url":"https://samwize.com/2026/03/30/xcode-simulator-paste-broken-workaround/","recommender":"Barney"},{"heading":"Tracking token usage in Foundation Models","url":"https://artemnovichkov.com/blog/tracking-token-usage-in-foundation-models","recommender":"Cooper Chen"},{"heading":"Beta Preview: ComposableArchitecture 2.0","url":"https://www.pointfree.co/blog/posts/206-beta-preview-composablearchitecture-2-0","recommender":"AidenRao"},{"heading":"Xcode Build Optimization using 6 Agent Skills","url":"https://www.avanderlee.com/xcode/xcode-build-optimization-using-6-agent-skills/","recommender":"阿权"},{"heading":"Why Your @Observable Class init() Runs Multiple Times in SwiftUI","url":"https://livsycode.com/swiftui/why-your-observable-class-init-runs-multiple-times-in-swiftui/","recommender":"DylanYang"},{"heading":"Swift 6.3 正式发布支持 Android，它能在跨平台发挥什么优势？","url":"https://mp.weixin.qq.com/s/biU1GkLHAF9OH5FHRSbiVg","recommender":"JonyFang"}]},{"id":"r-367-2026-03-30","type":"report","title":"老司机 iOS 周报 #367 | 2026-03-30","issue":367,"date":"2026-03-30","year":2026,"path":"Reports/2026/#367-2026.03.30.md","url":"Reports/2026/%23367-2026.03.30.md","excerpt":"用好你的 jj - 重新思考 Agent 时代的版本控制：文章是 onevcat（喵神）安利 jj（Jujutsu） 在 AI Agent 时代替代 Git 进行本地版本控制。jj 是可与 Git 无缝兼容的本地版本控制工具（兼容方式为远端仍是 Git 提交），核心优势在于以 change 为核心，无 staging area 等中间态；Copy-On-Write in Swift: Semantics, Misconceptions,","sections":[{"heading":"用好你的 jj - 重新思考 Agent 时代的版本控制","url":"https://onevcat.com/2026/03/jj-for-agent-era/","recommender":"阿权"},{"heading":"Copy-On-Write in Swift: Semantics, Misconceptions, and a Custom Implementation","url":"https://livsycode.com/swift/copy-on-write-in-swift-semantics-misconceptions-and-a-custom-implementation/","recommender":"Barney"},{"heading":"OpenMAIC","url":"https://github.com/THU-MAIC/OpenMAIC","recommender":"JonyFang"},{"heading":"Array expression trailing closures in Swift","url":"https://livsycode.com/swift/array-expression-trailing-closures-in-swift/","recommender":"Smallfly"},{"heading":"Xcode 26 Compilation Cache","url":"https://livsycode.com/best-practices/xcode-26-compilation-cache/","recommender":"david-clang"},{"heading":"Testing with Event Streams","url":"https://www.massicotte.org/blog/testing-event-stream/","recommender":"AidenRao"},{"heading":"App-Store-Connect-CLI","url":"https://asccli.sh/"},{"heading":"MotionEyes","url":"https://github.com/edwardsanchez/MotionEyes","recommender":"Cooper Chen"}]},{"id":"r-366-2026-03-16","type":"report","title":"老司机 iOS 周报 #366 | 2026-03-16","issue":366,"date":"2026-03-16","year":2026,"path":"Reports/2026/#366-2026.03.16.md","url":"Reports/2026/%23366-2026.03.16.md","excerpt":"对中国 App Store 的 iOS 及 iPadOS 的调整：26 年 3 月 15 日（消费者权益保护日）起，大陆 iAP 的抽成从 30% -> 25%，小开发者与小程序的抽成从 15% -> 12% 。抽成降低是大势所趋，毕竟其他地区还允许侧载等。同时 Google Play 商店的抽成也将从 30% -> 20% 。；LET'S VISION 26 大会：今年的 LET'S VISION 大会将在 3 月 28～29 日在上","sections":[{"heading":"对中国 App Store 的 iOS 及 iPadOS 的调整","url":"https://developer.apple.com/cn/news/?id=dadukodv"},{"heading":"LET'S VISION 26 大会","url":"https://www.huodongxing.com/go/letsvision26?coupon=Aawf0SP"},{"heading":"一文读懂 Agent Tools，拒绝复杂化、碎片化、黑盒化","url":"https://mp.weixin.qq.com/s/rsu-k8NwzWceOfPxTRKkBA","recommender":"EyreFree"},{"heading":"Designing Swift Errors for an SDK","url":"https://nonstrict.eu/blog/2026/designing-swift-errors-for-an-sdk/","recommender":"Smallfly"},{"heading":"Reverse Masking in SwiftUI Using Blend Modes","url":"https://livsycode.com/swiftui/reverse-masking-in-swiftui-using-blend-modes/","recommender":"Kyle-Ye"},{"heading":"vPhone 虚拟 iOS 环境解析与风控防御实践","url":"https://bbs.kanxue.com/thread-290127.htm","recommender":"Damien"},{"heading":"Apple 的 ANE 被挖掘，AI 硬件公开，宣传的 38 TOPS 居然是个\"数字游戏\"？","url":"https://mp.weixin.qq.com/s/_4cnIi1QnR31zwowxvhP8Q","recommender":"david-clang"},{"heading":"iOS-Accessibility-Agent-Skill","url":"https://github.com/dadederk/iOS-Accessibility-Agent-Skill","recommender":"含笑饮砒霜"},{"heading":"SwiftUI-Agent-Skill","url":"https://github.com/twostraws/SwiftUI-Agent-Skill","recommender":"zhangferry"},{"heading":"HealthQL","url":"https://github.com/glisom/HealthQL","recommender":"阿权"},{"heading":"FabBar","url":"https://github.com/ryanashcraft/FabBar","recommender":"Barney"}]},{"id":"r-365-2026-03-02","type":"report","title":"老司机 iOS 周报 #365 | 2026-03-02","issue":365,"date":"2026-03-02","year":2026,"path":"Reports/2026/#365-2026.03.02.md","url":"Reports/2026/%23365-2026.03.02.md","excerpt":"Swift Package Manager Mirrors for Local Development：文章介绍了 Swift Pacakge Manager 的 Mirrors 的用法。当在开发时，可以在使用命令行，临时将 Package.swift 中声明的依赖从分发地址映射到本地仓库或者其他地址。不再需要手动的修改链接地址，并且还要在提交时刻意改回来或者不提交改动。是一个很好；Ioser 铭（iOS 开发 2015-2025）：看","sections":[{"heading":"Swift Package Manager Mirrors for Local Development","url":"https://kunat.dev/notes/spm-package-mirroring/","recommender":"BluesJiang"},{"heading":"Ioser 铭（iOS 开发 2015-2025）","url":"https://mp.weixin.qq.com/s/Us7oExIJ7LgJTmJfUpcm7w","recommender":"邦 Ben"},{"heading":"How Apple Hooks Entire Frameworks","url":"https://bryce.co/swizzle-everything/","recommender":"Kyle-Ye"},{"heading":"Should You Use All These Dependencies?","url":"https://fractal-dev.com/blog/should-you-use-all-these-dependencies?lang=en","recommender":"Barney"},{"heading":"CKSyncEngine questions and answers","url":"https://christianselig.com/2026/01/cksyncengine/","recommender":"AidenRao"},{"heading":"Happy：为 Codex/Claude Code 提供无缝的移动端交互","url":"https://github.com/slopus/happy"}]},{"id":"r-364-2026-02-09","type":"report","title":"老司机 iOS 周报 #364 | 2026-02-09","issue":364,"date":"2026-02-09","year":2026,"path":"Reports/2026/#364-2026.02.09.md","url":"Reports/2026/%23364-2026.02.09.md","excerpt":"Xcode 26.3 unlocks the power of agentic coding：Xcode 26.3 的 RC 版本已发布，大模型编程终于以一个较高的原生支持完成度来到我们身边，推荐与下方 Exploring AI Driven Coding 一文一同观看。；即将生效的 SDK 最低要求：2026 年 4 月 28 日 开始要求必须 Xcode 26 提交 App 的新版本，大家可以早做准备制定升级计划。；Intercep","sections":[{"heading":"Xcode 26.3 unlocks the power of agentic coding","url":"https://www.apple.com/newsroom/2026/02/xcode-26-point-3-unlocks-the-power-of-agentic-coding/"},{"heading":"即将生效的 SDK 最低要求","url":"https://developer.apple.com/cn/news/?id=ueeok6yw"},{"heading":"Intercepting SwiftUI Sheet Dismissal","url":"https://livsycode.com/swiftui/intercepting-swiftui-sheet-dismissal/","recommender":"极速男孩"},{"heading":"Exploring AI Driven Coding: Using Xcode 26.3 MCP Tools in Cursor, Claude Code and Codex","url":"https://rudrank.com/exploring-xcode-using-mcp-tools-cursor-external-clients","recommender":"zhangferry"},{"heading":"The Magic Behind UUID\\(\\) in Swift, How Your App Generates Truly Unique Identifiers","url":"https://www.swiftdifferently.com/blog/swift/the-magic-behind-uuid-in-swift","recommender":"Barney"},{"heading":"Swift Modules and Code/Assets Duplication","url":"https://pfandrade.me/blog/swift-modules-and-codeassets-duplication/","recommender":"Smallfly"},{"heading":"Attach to Multiple Processes","url":"https://indiestack.com/2025/11/attach-to-multiple-processes/","recommender":"ChengzhiHuang"},{"heading":"How to Avoid Double Updates When Filtering SwiftUI TextField Input","url":"https://livsycode.com/swiftui/how-to-avoid-double-updates-when-filtering-swiftui-textfield-input/","recommender":"阿权"},{"heading":"Understanding Spring Animations in SwiftUI","url":"https://www.createwithswift.com/understanding-spring-animations-in-swiftui/","recommender":"含笑饮砒霜"},{"heading":"InlineArray in Swift - Memory Efficient Fixed-Size Arrays","url":"https://www.sagarunagar.com/blog/inlinearray-in-swift/","recommender":"JonyFang"},{"heading":"Non-Sendable First Design","url":"https://www.massicotte.org/blog/non-sendable-first-design/","recommender":"DylanYang"},{"heading":"steve","url":"https://github.com/mikker/steve","recommender":"EyreFree"},{"heading":"三国霸业 / 伏魔记重制版源码","url":"https://github.com/erduoniba/baye-fmj-app/tree/main","recommender":"Crazy"}]},{"id":"r-363-2026-01-26","type":"report","title":"老司机 iOS 周报 #363 | 2026-01-26","issue":363,"date":"2026-01-26","year":2026,"path":"Reports/2026/#363-2026.01.26.md","url":"Reports/2026/%23363-2026.01.26.md","excerpt":"精通 UITableViewDiffableDataSource ——从入门到重构的现代 iOS 列表开发指南：本文围绕 iOS 现代列表 展开，核心是替代传统数据源代理模式，解决列表开发中的崩溃、状态不一致等痛点，并在最后提供一个轻量工具集 DiffableDataSourceKit 来简化系统 API 的调用。文章核心内容如下：；Dart 官方再解释为什么放弃了宏编程，并转向优化 build_runner ? 和 Kotlin 的区","sections":[{"heading":"精通 UITableViewDiffableDataSource ——从入门到重构的现代 iOS 列表开发指南","url":"https://mp.weixin.qq.com/s/Uk2wcMrNpTKQVTt7Z2iEQg","recommender":"阿权"},{"heading":"Dart 官方再解释为什么放弃了宏编程，并转向优化 build_runner ? 和 Kotlin 的区别又是什么？","url":"https://mp.weixin.qq.com/s/wwe9Lq392VqrCKhjfIKoXg","recommender":"Crazy"},{"heading":"@_exported import VS public import","url":"https://alexanderweiss.dev/blog/2026-01-16-exported-import-vs-public-import","recommender":"AidenRao"},{"heading":"MVVM + Reducer Pattern","url":"https://www.fractal-dev.com/blog/mvvm-and-reducer-pattern","recommender":"含笑饮砒霜"},{"heading":"用第一性原理拆解 Agentic Coding：从理论到实操","url":"https://mp.weixin.qq.com/s/Zlwn42KyfjgwfX6lp-JthQ","recommender":"Cooper Chen"},{"heading":"Universal Links At Scale: The Challenges Nobody Talks About","url":"https://albertodebortoli.com/2026/01/15/universal-links-at-scale-the-challenges-nobody-talks-about/","recommender":"Damien"},{"heading":"How I use Codex GPT 5.2 with Xcode (My Complete Workflow)","url":"https://www.youtube.com/watch?v=o4iKnSYlhBQ","recommender":"JonyFang"},{"heading":"Skip Is Now Free and Open Source","url":"https://skip.dev/blog/skip-is-free/","recommender":"Crazy"}]},{"id":"r-362-2026-01-12","type":"report","title":"老司机 iOS 周报 #362 | 2026-01-12","issue":362,"date":"2026-01-12","year":2026,"path":"Reports/2026/#362-2026.01.12.md","url":"Reports/2026/%23362-2026.01.12.md","excerpt":"我们如何使用 Codex 在 28 天内构建 Android 版 Sora：本篇文章简略的讲述了 OpenAI 的工程师团队是如何利用 CodeX 在 28 天内开发 Sora 的 Android 版本，主要可以分为以下四个部分；Tracking renamed files in Git：本文聚焦 Git 不直接追踪文件重命名的核心特性，解析其通过文件内容相似度启发式算法推测重命名的逻辑。为确保历史追踪准确，核心建议将重命名单独提交，推","sections":[{"heading":"我们如何使用 Codex 在 28 天内构建 Android 版 Sora","url":"https://openai.com/zh-Hans-CN/index/shipping-sora-for-android-with-codex/","recommender":"Crazy"},{"heading":"Tracking renamed files in Git","url":"https://oleb.net/2025/git-file-renaming/","recommender":"Barney"},{"heading":"Replay","url":"https://nshipster.com/replay/","recommender":"Smallfly"},{"heading":"Flutter 官方正式解决 iOS 26 上的 WebView 有点击问题","url":"https://mp.weixin.qq.com/s/-Z6oB3aLBwnYZH4DQEX31g","recommender":"david-clang"},{"heading":"React Native for macOS","url":"https://github.com/microsoft/react-native-macos","recommender":"EyreFree"},{"heading":"Skills Public","url":"https://github.com/Dimillian/Skills","recommender":"含笑饮砒霜"}]},{"id":"r-361-2025-12-29","type":"report","title":"老司机 iOS 周报 #361 | 2025-12-29","issue":361,"date":"2025-12-29","year":2025,"path":"Reports/2025/#361-2025.12.29.md","url":"Reports/2025/%23361-2025.12.29.md","excerpt":"Exploring interactive snippet intents：这篇文章主要探索了一下 App Intent 框架。苹果在 WWDC25 上引入了 App Intent 的可交能力，在 Widget、App Shortcut、Intent 中都可以使用。作者探索了这个 App Intent 的交互框架和编码逻辑，旨在了解这个交互框架可以做什么；使用 \"git mv\" 命令记录 Git 中文件名的大小写更改：这篇文章主要介绍了","sections":[{"heading":"Exploring interactive snippet intents","url":"https://www.nutrient.io/blog/wwdc25-snippet-intents/","recommender":"BluesJiang"},{"heading":"使用 \"git mv\" 命令记录 Git 中文件名的大小写更改","url":"https://oleb.net/2025/git-mv-case-change/","recommender":"含笑饮砒霜"},{"heading":"Swift Configuration 1.0 released","url":"https://www.swift.org/blog/swift-configuration-1.0-released/","recommender":"AidenRao"},{"heading":"Using associated domains alternate mode during development","url":"https://tanaschita.com/ios-associated-domains-alternate-mode/","recommender":"DylanYang"},{"heading":"Command Line Interface Guidelines","url":"https://clig.dev/","recommender":"zhangferry"},{"heading":"SwiftUI Group Still(?) Considered Harmful","url":"https://twocentstudios.com/2025/12/12/swiftui-group-still-considered-harmful/","recommender":"Damien"},{"heading":"SwiftAgents","url":"https://github.com/christopherkarani/SwiftAgents","recommender":"阿权"},{"heading":"XcodeBuildMCP 1.15.0 released","url":"https://github.com/cameroncooke/XcodeBuildMCP","recommender":"Cooper Chen"},{"heading":"CS193 Stanford 2025","url":"https://cs193p.stanford.edu/","recommender":"极速男孩"}]},{"id":"r-360-2025-12-15","type":"report","title":"老司机 iOS 周报 #360 | 2025-12-15","issue":360,"date":"2025-12-15","year":2025,"path":"Reports/2025/#360-2025.12.15.md","url":"Reports/2025/%23360-2025.12.15.md","excerpt":"Teaching AI to Read Xcode Builds：Xcode 原始构建日志对人和 AI 都不够友好，仅提供扁平信息输出。作者通过截获 Xcode 与 SWBBuildService 的通信，挖掘出日志之外的结构化数据，包括构建依赖、详细耗时等核心信息，现在随着 swift-build 的开源，可以更系统的了解这些构建信息，利用它；豆包手机为什么会被其他厂商抵制？它的工作原理是什么？：豆包手机因采用底层系统权限实现 AI ","sections":[{"heading":"Teaching AI to Read Xcode Builds","url":"https://tuist.dev/blog/2025/11/27/teaching-ai-to-read-xcode-builds","recommender":"zhangferry"},{"heading":"豆包手机为什么会被其他厂商抵制？它的工作原理是什么？","url":"https://mp.weixin.qq.com/s/MEmRkf5MaHDa5zl9n_bbmw","recommender":"EyreFree"},{"heading":"How we built the v0 iOS app","url":"https://vercel.com/blog/how-we-built-the-v0-ios-app","recommender":"含笑饮砒霜"},{"heading":"Opening up the Tuist Registry","url":"https://tuist.dev/blog/2025/11/26/opening-registry","recommender":"Kyle-Ye"},{"heading":"Initializing @Observable classes within the SwiftUI hierarchy","url":"https://nilcoalescing.com/blog/InitializingObservableClassesWithinTheSwiftUIHierarchy/","recommender":"AidenRao"},{"heading":"Demystifying the profraw format","url":"https://leodido.dev/demystifying-profraw/","recommender":"david-clang"},{"heading":"CodeEdit","url":"https://github.com/CodeEditApp/CodeEdit","recommender":"JonyFang"},{"heading":"mlx-swift-lm","url":"https://github.com/ml-explore/mlx-swift-lm","recommender":"Barney"}]},{"id":"r-359-2025-12-01","type":"report","title":"老司机 iOS 周报 #359 | 2025-12-01","issue":359,"date":"2025-12-01","year":2025,"path":"Reports/2025/#359-2025.12.01.md","url":"Reports/2025/%23359-2025.12.01.md","excerpt":"从「写代码」到「验代码」：AI 搭档写走 3 年，我踩出来的协作路线图：这篇文章给我的最大启发是：AI Coding 的价值，不在于让你更快写代码，而在于让你反思、重构「整个工程流程／协作方式」。；Open source case study: Listening to our users：文章强调了开源软件相较于 Apple 官方框架的核心优势：与用户的紧密互动。通过 SQLiteData 库的三个案例，用户驱动的功能定制、社区贡献的","sections":[{"heading":"从「写代码」到「验代码」：AI 搭档写走 3 年，我踩出来的协作路线图","url":"https://yousali.com/posts/20251124-how-to-coding-with-ai/","recommender":"JonyFang"},{"heading":"Open source case study: Listening to our users","url":"https://www.pointfree.co/blog/posts/189-open-source-case-study-listening-to-our-users","recommender":"Barney"},{"heading":"A deep dive into notifications and messages on iOS 26","url":"https://www.nutrient.io/blog/notification-center/","recommender":"极速男孩"},{"heading":"When To Kill A Project","url":"https://blog.jacobstechtavern.com/p/when-to-kill-a-project","recommender":"含笑饮砒霜"},{"heading":"How to Build Scalable White-Label iOS Apps: From Multi-Target to Modular Architecture","url":"https://swiftandmemes.com/how-to-build-scalable-white-label-ios-apps-from-multi-target-to-modular-architecture/","recommender":"AidenRao"},{"heading":"Task Identity","url":"https://chris.eidhof.nl/post/swiftui-task-identity/","recommender":"极速男孩"},{"heading":"Pitfalls of Parameterized Tests","url":"https://swiftology.io/articles/pitfalls-of-parameterized-tests/ ","recommender":"david-clang"},{"heading":"ScrollView snapping in SwiftUI","url":"https://nilcoalescing.com/blog/ScrollViewSnappingInSwiftUI/","recommender":"DylanYang"},{"heading":"Building Peer-to-Peer Sessions: Advertising and Browsing Devices","url":"https://www.createwithswift.com/building-peer-to-peer-sessions-advertising-and-browsing-devices/","recommender":"Damien"},{"heading":"Mole：像鼹鼠一样深入挖掘来清理你的 Mac","url":"https://github.com/tw93/Mole","recommender":"EyreFree"},{"heading":"30 分钟解决 Claude 封号问题：程序员的终极自救指南","url":"https://yousali.com/posts/20250715-how-to-pick-and-build-the-vps-svc/","recommender":"阿权"},{"heading":"MachOSwiftSection: 🔬 A Swift library for parsing mach-o files to obtain Swift information.","url":"https://github.com/MxIris-Reverse-Engineering/MachOSwiftSection","recommender":"Kyle-Ye"}]},{"id":"r-358-2025-11-17","type":"report","title":"老司机 iOS 周报 #358 | 2025-11-17","issue":358,"date":"2025-11-17","year":2025,"path":"Reports/2025/#358-2025.11.17.md","url":"Reports/2025/%23358-2025.11.17.md","excerpt":"objc4-950 源码更新：Runtime 的源码发布新版本，主要更新的是 Xcode26 的 objc_storeStrong 的逻辑，有兴趣可以自行查看。；App Store Mini App Partner Program 隆重推出：参与计划的开发者在销售符合条件的 App 内购买项目时，可享受 15% 的收益抽成减免。需要适配 Advanced Commerce API (ACA) 。微信已经发公告预计会进行接入，期待后续更多","sections":[{"heading":"objc4-950 源码更新","url":"https://github.com/apple-oss-distributions/objc4/blob/6dee1d79e3825de8c284a422faad4035f958346c/runtime/NSObject.mm#L269"},{"heading":"App Store Mini App Partner Program 隆重推出","url":"https://developer.apple.com/news/?id=xcz1s7cz"},{"heading":"Optimize your app's speed and efficiency | Meet with Apple","url":"https://www.youtube.com/embed/yXAQTIKR8fk?autoplay=1","recommender":"Smallfly"},{"heading":"何时组建计算机性能工程团队（2025 年）第 1 部分（共 2 部分","url":"https://www.brendangregg.com/blog/2025-08-04/when-to-hire-a-computer-performance-engineering-team-2025-part1.html","recommender":"含笑饮砒霜"},{"heading":"TN3193: Managing the on-device foundation model’s context window","url":"https://developer.apple.com/documentation/technotes/tn3193-managing-the-on-device-foundation-model-s-context-window","recommender":"JonyFang"},{"heading":"Demystifying AI Coding Agents in Swift","url":"https://gioscalzo.com/blog/demystifying-ai-coding-agents-in-swift/","recommender":"Cooper Chen"},{"heading":"Roadmap for Improving the Type Checker","url":"https://forums.swift.org/t/roadmap-for-improving-the-type-checker/82952","recommender":"AidenRao"},{"heading":"来了解一下，为什么你的 Flutter WebView 在 iOS 26 上有点击问题？","url":"https://mp.weixin.qq.com/s/Y-jbx2i6z8fgsDD7bEt2kQ","recommender":"david-clang"},{"heading":"Swift Binary Parsing","url":"https://github.com/apple/swift-binary-parsing","recommender":"阿权"}]},{"id":"r-357-2025-11-03","type":"report","title":"老司机 iOS 周报 #357 | 2025-11-03","issue":357,"date":"2025-11-03","year":2025,"path":"Reports/2025/#357-2025.11.03.md","url":"Reports/2025/%23357-2025.11.03.md","excerpt":"Swift SDK for Android 正式发布：Swift 在 nightly toolchain 提供了 Android SDK 的支持，底层基于 JNI 与 Java/Kotlin 进行通信。目前还没有提供任何 UI 框架的 Binding，所以目前主要用途还是替代 C/C++ 在 Android 上的作用。；Swift 类型检查优化路线图发布：Swift 的 type-checker 终于要迎来一波优化，像下面这段代码在 6","sections":[{"heading":"Swift SDK for Android 正式发布","url":"https://www.swift.org/blog/nightly-swift-sdk-for-android/"},{"heading":"Swift 类型检查优化路线图发布","url":"https://forums.swift.org/t/roadmap-for-improving-the-type-checker/82952"},{"heading":"iOS 崩溃防护全新方案，可配置兜底任意的崩溃。超详细解读，含 MVP 代码","url":"https://mp.weixin.qq.com/s/4YcdW_K46WZAiXbfYEBofA","recommender":"含笑饮砒霜"},{"heading":"How to hide a view in a screenshot","url":"https://www.swiftwithvincent.com/blog/how-to-hide-a-view-in-a-screenshot","recommender":"david-clang"},{"heading":"static const in header cost: dyld ships with redundant 2KB data copy","url":"https://kyleye.top/posts/dyld-redundant-data-copy/","recommender":"阿权"},{"heading":"Build performance analysis for speeding up Xcode builds","url":"https://www.avanderlee.com/optimization/analysing-build-performance-xcode/","recommender":"Cooper Chen"},{"heading":"微信开发工程师总结的20条C++性能陷阱与实用特性，读起来很过瘾","url":"https://mp.weixin.qq.com/s/fDb82xdDKk9ONGCKvDialg","recommender":"老驴"},{"heading":"Sideloadly: The Ultimate iOS Sideloading Tool","url":"https://sideloadly.io/","recommender":"EyreFree"}]},{"id":"r-356-2025-10-27","type":"report","title":"老司机 iOS 周报 #356 | 2025-10-27","issue":356,"date":"2025-10-27","year":2025,"path":"Reports/2025/#356-2025.10.27.md","url":"Reports/2025/%23356-2025.10.27.md","excerpt":"Derived Data: 5 Things iOS Developers Do Wrong：这篇文章总结了 iOS 开发者常对 Derived Data 犯的 5 个错误：；Why a custom ViewModifier is often useless：文章主要阐述何时需要创建自定义 。作者指出，若只需封装不涉及 或 的修饰符，直接使用 扩展方法即可，无需创建 结构体。仅当需要管理状态或使用属性包装器时，才必须创建 以正确处理这","sections":[{"heading":"Derived Data: 5 Things iOS Developers Do Wrong","url":"https://www.avanderlee.com/xcode/derived-data-5-things-ios-developers-do-wrong/","recommender":"极速男孩"},{"heading":"Why a custom ViewModifier is often useless","url":"https://www.swiftwithvincent.com/blog/why-a-custom-viewmodifier-is-often-useless","recommender":"Barney"},{"heading":"Don't make this mistake with a TaskGroup","url":"https://www.swiftwithvincent.com/blog/dont-make-this-mistake-with-a-taskgroup","recommender":"Smallfly"},{"heading":"深入理解 Flutter 的 PlatformView 如何在鸿蒙平台实现混合开发","url":"https://mp.weixin.qq.com/s/iQCb0eSBLFpmRaog9gdHPA","recommender":"david-clang"},{"heading":"An Apple Intelligence-Style Glow Effect in SwiftUI","url":"https://livsycode.com/swiftui/an-apple-intelligence-style-glow-effect-in-swiftui/","recommender":"阿权"}]},{"id":"r-355-2025-10-20","type":"report","title":"老司机 iOS 周报 #355 | 2025-10-20","issue":355,"date":"2025-10-20","year":2025,"path":"Reports/2025/#355-2025.10.20.md","url":"Reports/2025/%23355-2025.10.20.md","excerpt":"使用 @_private(sourceFile:) 测试 Swift 私有成员：私有成员一直是单元测试的难题，以往的做法要么公开其成员，要么封装供测试的接口，本文提出可以用 测试私有成员。该标识是非公开 API，是编译器专用的接口，可绕过访问控制。不过前提需要为目标模块添加编译标志 ，允许其私有成员被外部测试访问，并需用条件编译宏包裹，以防后续编译器更新导致；Building 17 Agentic AI Patterns and The","sections":[{"heading":"使用 @_private(sourceFile:) 测试 Swift 私有成员","url":"https://kyleye.top/posts/swift-private-imports/","recommender":"阿权"},{"heading":"Building 17 Agentic AI Patterns and Their Role in Large-Scale AI Systems","url":"https://levelup.gitconnected.com/building-17-agentic-ai-patterns-and-their-role-in-large-scale-ai-systems-f4915b5615ce","recommender":"EyreFree"},{"heading":"iOS 26 你的 property 崩了吗？","url":"https://mp.weixin.qq.com/s/6jxpWDq4JWTpKmmCx3S3XA","recommender":"Kyle-Ye"},{"heading":"Build Your First 24/7 Agentic Loop","url":"https://wezzard.com/post/2025/09/build-your-first-agentic-loop-9d22/","recommender":"Cooper Chen"},{"heading":"Understanding Live Activities: visual micro-storytelling","url":"https://www.createwithswift.com/understanding-live-activities-visual-micro-storytelling/","recommender":"AidenRao"},{"heading":"iOS 17 + SwiftUI TextField 内存泄漏分析","url":"https://kyleye.top/posts/swiftui-textfield-memory-leak/","recommender":"DylanYang"}]},{"id":"r-354-2025-10-13","type":"report","title":"老司机 iOS 周报 #354 | 2025-10-13","issue":354,"date":"2025-10-13","year":2025,"path":"Reports/2025/#354-2025.10.13.md","url":"Reports/2025/%23354-2025.10.13.md","excerpt":"Understanding Deflate：本文通过手工解码一个 gzip 文件，简单探究了其压缩算法 Deflate 的工作机制，Deflate 结合了 LZ77 算法与 Huffman 编码，通过用 “复制指令” 替代重复片段实现无损压缩。作者以字符串 \"TOBEORNOTTOBEORTOBEORNOT\" 为例，先解析；Code along with the Foundation Models framework：这篇文章介绍了 A","sections":[{"heading":"Understanding Deflate","url":"https://jjrscott.com/to-deflate-or-not/","recommender":"xiaofei86"},{"heading":"Code along with the Foundation Models framework","url":"https://developer.apple.com/videos/play/meet-with-apple/205/","recommender":"Cooper Chen"},{"heading":"Enabling enhanced security for your app","url":"https://developer.apple.com/documentation/Xcode/enabling-enhanced-security-for-your-app","recommender":"Damien"},{"heading":"How to install Xcode 26's Metal Toolchain on CI/CD","url":"https://www.polpiella.dev/metal-toolchain-ci-cd/","recommender":"Barney"},{"heading":"swift-profile-recorder","url":"https://swiftpackageindex.com/apple/swift-profile-recorder","recommender":"Smallfly"}]},{"id":"r-353-2025-09-29","type":"report","title":"老司机 iOS 周报 #353 | 2025-09-29","issue":353,"date":"2025-09-29","year":2025,"path":"Reports/2025/#353-2025.09.29.md","url":"Reports/2025/%23353-2025.09.29.md","excerpt":"We Need to Talk About Observation：这篇文章深度探讨了 Swift 观察机制的新旧范式更迭，从 + 的旧时代到 宏 + 结构体的新生态，揭示了迁移过程中的关键挑战与设计考量。核心内容包括：；Xcode Migrations: From Stone Age to AI Mastery：这篇文章讲述了 Qonto 团队如何将 Xcode 升级从三周噩梦转变为一天自动化流程。 背景： 60+ iOS 工程师团队","sections":[{"heading":"We Need to Talk About Observation","url":"https://jaredsinclair.com/2025/09/10/observation.html","recommender":"Smallfly"},{"heading":"Xcode Migrations: From Stone Age to AI Mastery","url":"https://medium.com/qonto-way/xcode-migrations-from-stone-age-to-ai-mastery-d2590657e809","recommender":"Barney"},{"heading":"iOS Rendering Documentation","url":"https://github.com/EthanArbuckle/ios-rendering-docs/blob/main/README.md","recommender":"Kyle-Ye"},{"heading":"Should you opt-in to Swift 6.2 ’ s Main Actor isolation?","url":"https://www.donnywals.com/should-you-opt-in-to-swift-6-2s-main-actor-isolation/","recommender":"DylanYang"},{"heading":"Flutter 官方 LLM 动态 UI 库 flutter_genui 发布，让 App UI 自己生成 UI","url":"https://mp.weixin.qq.com/s/zrmuFMvcQDPUyun9c_N_Iw","recommender":"Crazy"}]},{"id":"r-352-2025-09-22","type":"report","title":"老司机 iOS 周报 #352 | 2025-09-22","issue":352,"date":"2025-09-22","year":2025,"path":"Reports/2025/#352-2025.09.22.md","url":"Reports/2025/%23352-2025.09.22.md","excerpt":"Swift 6.2 正式发布：随着 Swift 语言本身走向成熟，每年的更新慢慢的已经不是集中在语言功能上，投入了更多的精力到工具链和生态建设上。；KMP on iOS 深度工程化：模块化、并发编译与 98% 增量构建加速：本文主要介绍了 Bilibili KMP 在 iOS 工程化的一些深度改造，达成模块化、并发编译与 98% 增量构建加速的目标。主要通过对 Kotlin/Native 编译管线的深度拆解与重构，系统性地解决了其在模块","sections":[{"heading":"Swift 6.2 正式发布","url":"https://www.swift.org/blog/swift-6.2-released/","recommender":"kemchenj"},{"heading":"KMP on iOS 深度工程化：模块化、并发编译与 98% 增量构建加速","url":"https://mp.weixin.qq.com/s/wOnyjYcka99eFJz8BWlu4Q","recommender":"JonyFang"},{"heading":"Automating Github Action Workflows For Swift","url":"https://elegantchaos.com/2025/08/28/action-builder.html","recommender":"Damien"},{"heading":"认知负荷才是关键","url":"https://github.com/zakirullin/cognitive-load/blob/main/README.zh-cn.md","recommender":"zhangferry"},{"heading":"阿权的开发经验小集","url":"https://juejin.cn/post/7550466215790886927","recommender":"阿权"},{"heading":"iOS26 Runtime Changes:Concurrent mutation of nonatomic properties","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/5148","recommender":"ChengzhiHuang"},{"heading":"How to disable Liquid Glass","url":"https://www.swiftwithvincent.com/blog/how-to-disable-liquid-glass","recommender":"Cooper Chen"},{"heading":"marioaguzman Design Guidelines layout","url":"https://marioaguzman.github.io/design/layoutguidelines/","recommender":"含笑饮砒霜"}]},{"id":"r-351-2025-09-15","type":"report","title":"老司机 iOS 周报 #351 | 2025-09-15","issue":351,"date":"2025-09-15","year":2025,"path":"Reports/2025/#351-2025.09.15.md","url":"Reports/2025/%23351-2025.09.15.md","excerpt":"Memory Integrity Enforcement: A complete vision for memory safety in Apple devices：本文章是 Apple 推出的 Memory Integrity Enforcement（MIE）技术，结合自研芯片与系统级安全机制，为 iPhone 17 系列提供业界首个全时开启的内存安全保护，无需用户感知即可防御缓冲区溢出、释放后使用等漏洞。该功能基于增强版 Arm 内","sections":[{"heading":"Memory Integrity Enforcement: A complete vision for memory safety in Apple devices","url":"https://security.apple.com/blog/memory-integrity-enforcement/","recommender":"Damien"},{"heading":"SwiftUI WebView","url":"https://troz.net/post/2025/swiftui-webview/","recommender":"DylanYang"},{"heading":"Debugging Swift Concurrency: “ Am I on the Main Actor? ”","url":"https://www.swiftyplace.com/blog/debugging-swift-concurrency","recommender":"JonyFang"},{"heading":"Building a design system at Genius Scan","url":"https://www.swiftbysundell.com/articles/building-a-design-system-at-genius-scan/","recommender":"david-clang"},{"heading":"Four Corners: the first game in Catalog written in Swift","url":"https://news.play.date/news/four-corners-swift/","recommender":"极速男孩"},{"heading":"Implementing a Refractive Glass Shader in Metal","url":"https://medium.com/@victorbaro/implementing-a-refractive-glass-shader-in-metal-3f97974fbc24","recommender":"BluesJiang"}]},{"id":"r-350-2025-09-08","type":"report","title":"老司机 iOS 周报 #350 | 2025-09-08","issue":350,"date":"2025-09-08","year":2025,"path":"Reports/2025/#350-2025.09.08.md","url":"Reports/2025/%23350-2025.09.08.md","excerpt":"What's New in the Lambda V2 Runtime (Beta)：Lambda V2 Runtime 是 AWS Lambda Swift 运行时的重大升级，核心改进是使用 Swift 结构化并发重写了内部实现。新版本引入了更灵活的执行模型，开发者可以控制 函数入口，支持后台执行（ ）和流式响应（ ）等高级特性。同时提供了统一的服务生命周期管理；Flutter 小技巧之有趣的 UI 骨架屏框架 skeletonize","sections":[{"heading":"What's New in the Lambda V2 Runtime (Beta)","url":"https://swifttoolkit.dev/posts/lambda-v2","recommender":"Kyle-Ye"},{"heading":"Flutter 小技巧之有趣的 UI 骨架屏框架 skeletonizer","url":"https://mp.weixin.qq.com/s/ceDt69ue5aV4wGwaGIKmAQ","recommender":"Crazy"},{"heading":"果味儿幽灵 -- Xcode 新 AI 助手深度解析","url":"https://mp.weixin.qq.com/s/TzM7MpYCSDrkUuT9eiSFrw","recommender":"Smallfly"},{"heading":"iOS 26 正式版即将发布，Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持","url":"https://mp.weixin.qq.com/s/cYKke432bBzpg365Ia9y7Q","recommender":"david-clang"},{"heading":"What makes Claude Code so damn good (and how to recreate that magic in your agent)!?","url":"https://minusx.ai/blog/decoding-claude-code/","recommender":"zhangferry"},{"heading":"awesome-nano-banana","url":"https://github.com/JimmyLv/awesome-nano-banana","recommender":"EyreFree"}]},{"id":"r-349-2025-09-01","type":"report","title":"老司机 iOS 周报 #349 | 2025-09-01","issue":349,"date":"2025-09-01","year":2025,"path":"Reports/2025/#349-2025.09.01.md","url":"Reports/2025/%23349-2025.09.01.md","excerpt":"Why I'm Not Using Xcode 26's AI Chat Integration (And What Could Change My Mind)：文章者结合自身开发体验，分析了 Xcode 26 中 AI 集成的不足，并建议 Apple 补齐（作者也是恨铁不成钢啊！）：；Working with partially generated content in Xcode previews：iOS 26 有了新的 Found","sections":[{"heading":"Why I'm Not Using Xcode 26's AI Chat Integration (And What Could Change My Mind)","url":"https://www.fline.dev/why-im-not-using-xcode-26s-ai-chat-integration-and-what-could-change-my-mind/","recommender":"阿权"},{"heading":"Working with partially generated content in Xcode previews","url":"https://www.artemnovichkov.com/blog/working-with-partially-generated-content-in-xcode-previews","recommender":"DylanYang"},{"heading":"From GPT-2 to gpt-oss: Analyzing the Architectural Advances And How They Stack Up Against Qwen3","url":"https://sebastianraschka.com/blog/2025/from-gpt-2-to-gpt-oss.html","recommender":"阿权"},{"heading":"GPT-5 Thinking System Prompts Leak","url":"https://github.com/asgeirtj/system_prompts_leaks/blob/main/OpenAI/gpt-5-thinking.md","recommender":"Barney"},{"heading":"Corner concentricity in SwiftUI on iOS 26","url":"https://nilcoalescing.com/blog/ConcentricRectangleInSwiftUI/","recommender":"AidenRao"},{"heading":"MNN LLM Chat iOS 流式输出优化实践","url":"https://mp.weixin.qq.com/s/m5J5nLZiPd_yB0y-byyjCg","recommender":"JonyFang"}]},{"id":"r-348-2025-08-25","type":"report","title":"老司机 iOS 周报 #348 | 2025-08-25","issue":348,"date":"2025-08-25","year":2025,"path":"Reports/2025/#348-2025.08.25.md","url":"Reports/2025/%23348-2025.08.25.md","excerpt":"High Level Anatomy of a Camera Capturing Session：这边文章用比较简单易懂的话，介绍苹果的相机从拍摄到 Swift 中展示的完整流程。文章不长，比较适合做个相机原理了解。；从 DisplayList 到 Transaction: SwiftUI 调试实战：文章介绍了如何通过 SwiftUI 中的相关环境变量，使用 DisplayList 输出分析视图渲染问题，通过符号断点和汇编调试深入分析 ","sections":[{"heading":"High Level Anatomy of a Camera Capturing Session","url":"https://mfaani.com/posts/ios/swiftui-camera-learnings/","recommender":"AidenRao"},{"heading":"从 DisplayList 到 Transaction: SwiftUI 调试实战","url":"https://kyleye.top/posts/swiftui-debug-analysis","recommender":"Kyle-Ye"},{"heading":"Faster Equatable and Hashable conformances with Identifiable","url":"https://erkek.in/faster-equatable-and-hashable-conformances-with-identifiable","recommender":"Smallfly"},{"heading":"What's New in UIKit","url":"https://sebvidal.com/blog/whats-new-in-uikit-26/","recommender":"Barney"},{"heading":"SwiftUI for Mac 2025","url":"https://troz.net/post/2025/swiftui-mac-2025/","recommender":"Cooper Chen"},{"heading":"Git 2.51 support push/pull stash","url":"https://github.blog/open-source/git/highlights-from-git-2-51/","recommender":"david-clang"}]},{"id":"r-347-2025-08-18","type":"report","title":"老司机 iOS 周报 #347 | 2025-08-18","issue":347,"date":"2025-08-18","year":2025,"path":"Reports/2025/#347-2025.08.18.md","url":"Reports/2025/%23347-2025.08.18.md","excerpt":"万字长文解码如何玩转Prompt（附实践应用）：这是一篇来自淘宝团队，讲解提示词工程（PE）非常全面的文章，包含业界各类优秀方法论，当你苦于 AI 「不听话」时可以从这里获取灵感。除了提示词设计的七个核心原则，还可以结合你的应用场景，考虑使用这六大高级技巧：；@isolated(any)：在 Swift 并发模型逐渐完善的过程中，@isolated(any) 作为一个相对低调却关键的特性，正在为 API 设计与任务调度提供新的可能性。；","sections":[{"heading":"万字长文解码如何玩转Prompt（附实践应用）","url":"https://mp.weixin.qq.com/s/ad6y-pCe1_PV7iNA7Uh1bg","recommender":"zhanggferry"},{"heading":"@isolated(any)","url":"https://nshipster.com/isolated-any/","recommender":"Smallfly"},{"heading":"Flutter 3.35 发布，快来看看有什么更新吧","url":"https://mp.weixin.qq.com/s/PPnSmA3XmyS3cZ_m7zgpdw","recommender":"david-clang"},{"heading":"swiftlang/swift-subprocess: Subprocess is a cross-platform package for spawning processes in Swift.","url":"https://github.com/swiftlang/swift-subprocess","recommender":"Barney"},{"heading":"Define the scroll edge effect style of a scroll view for Liquid Glass","url":"https://www.createwithswift.com/define-the-scroll-edge-effect-style-of-a-scroll-view-for-liquid-glass/","recommender":"AidenRao"}]},{"id":"r-346-2025-08-11","type":"report","title":"老司机 iOS 周报 #346 | 2025-08-11","issue":346,"date":"2025-08-11","year":2025,"path":"Reports/2025/#346-2025.08.11.md","url":"Reports/2025/%23346-2025.08.11.md","excerpt":"Uncertain <T>：作者向我们描述了原生确定的 Bool 值无法精确表达一些概率出现的场景，因此引入了 Uncertain 这样一个库。它将不确定性引入到了编码之中，它可以通过概率建模来描述一个事件的概率而非结果。这可以被用于 GPS 定位或者传感器噪声等含有不确定性的场景。实际使用时，开发者可以通；一个半月高强度 Claude Code 使用后感受：Claude Code 在\"读懂代码→规划变更→实施改造→文档 / 测试\"整链","sections":[{"heading":"Uncertain <T>","url":"https://nshipster.com/uncertainty/","recommender":"DylanYang"},{"heading":"一个半月高强度 Claude Code 使用后感受","url":"https://onevcat.com/2025/08/claude-code/","recommender":"JonyFang"},{"heading":"@ViewConfigurable — A better way to build SwiftUI components","url":"https://medium.com/grindr-engineering/tl-dr-swiftui-makes-customizing-views-feel-effortless-until-you-build-your-own-reusable-4a3a0cd0e288","recommender":"AidenRao"},{"heading":"Designing for the Eye","url":"https://www.nubero.ch/blog/015/","recommender":"阿权"},{"heading":"Metal Shaders for SwiftUI","url":"https://www.metal.graphics/","recommender":"BluesJiang"}]},{"id":"r-345-2025-08-04","type":"report","title":"老司机 iOS 周报 #345 | 2025-08-04","issue":345,"date":"2025-08-04","year":2025,"path":"Reports/2025/#345-2025.08.04.md","url":"Reports/2025/%23345-2025.08.04.md","excerpt":"App Store Connect 中的年龄分级现已更新：苹果在 iOS 26 及以后的商店中更新了更细化的年龄分级，在现有的 4+ 和 9+ 分级的基础上，更新后的年龄分级系统新增了三个分级：13+、16+ 和 18+。苹果已经向开发者发送了邮件提醒需要完成新的年龄分级调查问卷。大家可以按需填写更新分级。；Deciding between 'let' and 'var' for Swift struct properties：文章围绕","sections":[{"heading":"App Store Connect 中的年龄分级现已更新","url":"https://developer.apple.com/cn/news/?id=ks775ehf"},{"heading":"Deciding between 'let' and 'var' for Swift struct properties","url":"https://www.swiftbysundell.com/articles/let-vs-var-for-swift-struct-properties/","recommender":"阿权"},{"heading":"New Watch","url":"https://david-smith.org/blog/2025/07/22/new-watch/","recommender":"Kyle-Ye"},{"heading":"A Peek into My Debugging Process (With Real Examples)","url":"https://www.polpiella.dev/how-i-fix-bugs-in-my-apps/","recommender":"Smallfly"},{"heading":"ChatGPT in Xcode 26: there ’ s a hidden prompt!","url":"https://www.swiftwithvincent.com/blog/chatgpt-in-xcode-26-theres-a-hidden-prompt","recommender":"AidenRao"},{"heading":"Combine and Swift Concurrency: A threading risk","url":"https://www.avanderlee.com/concurrency/combine-and-swift-concurrency-a-threading-risk/","recommender":"Barney"},{"heading":"My 10 Tips for Using Claude Code","url":"https://samwize.com/2025/07/08/my-10-tips-for-using-claude-code/","recommender":"david-clang"},{"heading":"Foundation Models Framework Example","url":"https://github.com/rudrankriyam/Foundation-Models-Framework-Example","recommender":"zhangferry"}]},{"id":"r-344-2025-07-28","type":"report","title":"老司机 iOS 周报 #344 | 2025-07-28","issue":344,"date":"2025-07-28","year":2025,"path":"Reports/2025/#344-2025.07.28.md","url":"Reports/2025/%23344-2025.07.28.md","excerpt":"WWDC 2025: What's new for the Apple community?：这篇文章快速介绍了 WWDC25 的重要更新，很适合产品、开发者进行速览，快速发现自己关系的功能和相关技术的介绍。文章很贴心的将相关文档的链接内置的其中方便读者快速检阅。其中的液态玻璃的适配和 Apple Intelligent 是重点的更新项目，也是开发者比较值得关注的地方。因；迁移至 Swift Actors：这篇文章聚焦 Swift Ac","sections":[{"heading":"WWDC 2025: What's new for the Apple community?","url":"https://www.createwithswift.com/wwdc-2025-whats-new-for-the-apple-community/","recommender":"BluesJiang"},{"heading":"迁移至 Swift Actors","url":"https://juejin.cn/post/7527865199861841947","recommender":"Smallfly"},{"heading":"CursorShenzhen 0608 讲师 PPT","url":"https://pf2n1japaz.feishu.cn/docx/DgAudpiFpoVqFgxEx00czJyonzf","recommender":"Cooper Chen"},{"heading":"Giving Claude Code Eyes to See Your SwiftUI Views","url":"https://twocentstudios.com/2025/07/13/giving-claude-code-eyes-to-see-your-swiftui-views/","recommender":"Barney"},{"heading":"Modern Swift Lock: Mutex & the Synchronization Framework","url":"https://www.avanderlee.com/concurrency/modern-swift-lock-mutex-the-synchronization-framework/","recommender":"DylanYang"},{"heading":"Apple Docs MCP - Apple 开发者文档 MCP","url":"https://github.com/kimsungwhee/apple-docs-mcp","recommender":"含笑饮砒霜"}]},{"id":"r-343-2025-07-21","type":"report","title":"老司机 iOS 周报 #343 | 2025-07-21","issue":343,"date":"2025-07-21","year":2025,"path":"Reports/2025/#343-2025.07.21.md","url":"Reports/2025/%23343-2025.07.21.md","excerpt":"Meet the Inspector view in SwiftUI：文章介绍了 SwiftUI 中检查器视图（Inspector View）的用法：；An open source tool to speed up iOS app launch：Emerge Tools 提供了一个轻量级的收集 App 启动阶段内执行到的函数的收集工具，而不用修改编译选项（开启插桩），以此可以用来投喂给 Xcode 进行二进制重排，进而通过减少启动过程中","sections":[{"heading":"Meet the Inspector view in SwiftUI","url":"https://serialcoder.dev/text-tutorials/swiftui/meet-the-inspector-view-in-swiftui/","recommender":"阿权"},{"heading":"An open source tool to speed up iOS app launch","url":"https://blog.sentry.io/open-source-tool-speed-up-ios-app-launch/","recommender":"ChengzhiHuang"},{"heading":"Everything You Should Know About Spacer","url":"https://kyleye.top/posts/everything-you-should-know-about-spacer/","recommender":"AidenRao"},{"heading":"Swift 6.2 Java 互操作性实践","url":"https://arturgruchala.com/swift-6-2-java-interoperability-in-practice/","recommender":"含笑饮砒霜"},{"heading":"What you need to know before migrating to Swift Testing","url":"https://soumyamahunt.medium.com/what-you-need-to-know-before-migrating-to-swift-testing-b9c1d749ebd5","recommender":"JonyFang"},{"heading":"部分使用了 Data.bytes 的代码无法正常编译","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/5061","recommender":"Smallfly"}]},{"id":"r-342-2025-07-14","type":"report","title":"老司机 iOS 周报 #342 | 2025-07-14","issue":342,"date":"2025-07-14","year":2025,"path":"Reports/2025/#342-2025.07.14.md","url":"Reports/2025/%23342-2025.07.14.md","excerpt":"Swift 宣布成立安卓工作组：Swift 官方宣布成立 Android 工作组，将 Android 列为官方支持的平台。该工作组的主要目标是为 Swift 语言添加并维护 Android 平台支持，让开发者能够使用 Swift 开发 Android 应用。；A Swift Developer ’ s Guide to Prompt Engineering with Apple ’ s FoundationModels：这篇文章是关于 ","sections":[{"heading":"Swift 宣布成立安卓工作组","url":"https://www.swift.org/android-workgroup/"},{"heading":"A Swift Developer ’ s Guide to Prompt Engineering with Apple ’ s FoundationModels","url":"https://www.natashatherobot.com/p/swift-prompt-engineering-apples-foundationmodels","recommender":"Barney"},{"heading":"Finding my Way","url":"https://david-smith.org/blog/2025/07/02/new-maps/","recommender":"Kyle-Ye"},{"heading":"《别急于下定论：人工智能编程工具实则可能降低生产力》 Not So Fast: AI Coding Tools Can Actually Reduce Productivity","url":"https://secondthoughts.ai/p/ai-coding-slowdown","recommender":"Cooper Chen"},{"heading":"Schedule a countdown timer with AlarmKit","url":"https://nilcoalescing.com/blog/CountdownTimerWithAlarmKit/","recommender":"阿权"},{"heading":"Google I/O Extended ：2025 Flutter 的现状与未来","url":"https://mp.weixin.qq.com/s/hqra9NJJ4-KwtoQFc6h1mg","recommender":"david-clang"},{"heading":"使用 Xcode 26 构建，在 (, iOS 26) 设备启动崩溃 Symbol not found: _NSUserActivityTypeBrowsingWeb","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/5062","recommender":"DylanYang"}]},{"id":"r-341-2025-07-07","type":"report","title":"老司机 iOS 周报 #341 | 2025-07-07","issue":341,"date":"2025-07-07","year":2025,"path":"Reports/2025/#341-2025.07.07.md","url":"Reports/2025/%23341-2025.07.07.md","excerpt":"Don ‘ t Liquid Glass All the Things：iOS 26 的液体玻璃效果让大家眼前一亮，大家可能已经在重新设计自己的 App，恨不得给所有 UI 都加上液态玻璃效果。文章提到液态玻璃效果容易滥用，导致界面的不和谐。使用液态玻璃的场景应该是用于突出按钮下方的内容，例如地图预览上方的操作按钮。换句话说，液态玻璃效果的控件会让控；深入解析｜ Cursor 编程实践经验分享：本文深度剖析 AI 编程助手 Cursor","sections":[{"heading":"Don ‘ t Liquid Glass All the Things","url":"https://david-smith.org/blog/2025/06/17/design-dary-liquid-glass-everything/","recommender":"阿权"},{"heading":"深入解析｜ Cursor 编程实践经验分享","url":"https://mp.weixin.qq.com/s/UQPcxiV4UsTxpPYRjaNZIA","recommender":"Cooper Chen"},{"heading":"Flutter 里的像素对齐问题，深入理解为什么界面有时候会出现诡异的细线？","url":"https://mp.weixin.qq.com/s/eESwYV6tfXP-zeygHObCrw","recommender":"david-clang"},{"heading":"Rewriting a 12 Year Old Objective-C iOS App with Claude Code","url":"https://twocentstudios.com/2025/06/22/vinylogue-swift-rewrite/","recommender":"Smallfly"},{"heading":"Understanding and Improving SwiftUI Performance","url":"https://medium.com/airbnb-engineering/understanding-and-improving-swiftui-performance-37b77ac61896","recommender":"AidenRao"},{"heading":"container","url":"https://github.com/apple/container","recommender":"老驴"}]},{"id":"r-340-2025-06-30","type":"report","title":"老司机 iOS 周报 #340 | 2025-06-30","issue":340,"date":"2025-06-30","year":2025,"path":"Reports/2025/#340-2025.06.30.md","url":"Reports/2025/%23340-2025.06.30.md","excerpt":"btrace 3.0 对外开源：重磅新增 iOS 支持！免插桩原理大揭秘！：btrace 是字节开源的一款高性能 Android/iOS 端性能追踪（Tracing）工具，基于 Perfetto 进行数据展示。它能够详细记录方法的调用过程，精准分析耗时，并归因性能瓶颈，兼具高采样精度和低性能损耗。与 Apple 的 Time Profiler 等传统工具；避免在 Swift 中使用 `self.`：这篇文章探讨了在 Swift 开发中避","sections":[{"heading":"btrace 3.0 对外开源：重磅新增 iOS 支持！免插桩原理大揭秘！","url":"https://github.com/bytedance/btrace/blob/master/INTRODUCTION.zh-CN.MD","recommender":"JonyFang"},{"heading":"避免在 Swift 中使用 `self.`","url":"https://juejin.cn/post/7508668930896412722","recommender":"AidenRao"},{"heading":"Why I ’ ve Filed Over 1,000 Apple Feedbacks — And Why You Should Too","url":"https://www.linkedin.com/pulse/why-ive-filed-over-1000-apple-feedbacks-you-should-too-eric-dorphy-qfe8c/","recommender":"阿权"},{"heading":"Reverse-Engineering Xcode's Coding Intelligence prompt","url":"https://peterfriese.dev/blog/2025/reveng-xcode-coding-intelligence/#explaining-a-chunk-of-code","recommender":"zhangferry"},{"heading":"Flutter 又双叒叕可以在 iOS 26 的真机上 hotload 运行了，来看看又是什么黑科技","url":"https://mp.weixin.qq.com/s/jGqJFTlLqF2N_rqVdSkLKQ","recommender":"Damien"},{"heading":"EFQRCode","url":"https://github.com/EFPrefix/EFQRCode","recommender":"Barney"},{"heading":"SwiftData versus SQL Query Builder","url":"https://www.pointfree.co/blog/posts/174-free-episode-swiftdata-versus-sql-query-builder","recommender":"Kyle-Ye"}]},{"id":"r-339-2025-06-23","type":"report","title":"老司机 iOS 周报 #339 | 2025-06-23","issue":339,"date":"2025-06-23","year":2025,"path":"Reports/2025/#339-2025.06.23.md","url":"Reports/2025/%23339-2025.06.23.md","excerpt":"Unique values in Swift: Removing duplicates from an array：文章介绍了 Swift 中数组去重一些最佳实践。；Automatic Observation Tracking in UIKit and AppKit: The Feature Apple Forgot to Mention：苹果在 iOS 18/macOS 15 中为 UIKit/AppKit 框架秘密添加了“自动观察追","sections":[{"heading":"Unique values in Swift: Removing duplicates from an array","url":"https://www.avanderlee.com/swift/unique-values-removing-duplicates-array/","recommender":"阿权"},{"heading":"Automatic Observation Tracking in UIKit and AppKit: The Feature Apple Forgot to Mention","url":"https://steipete.me/posts/2025/automatic-observation-tracking-uikit-appkit","recommender":"AidenRao"},{"heading":"Recreating the bird animation from Swift.org","url":"https://alexwlchan.net/2025/swift-bird-animation/","recommender":"Smallfly"},{"heading":"Tips and tricks for when using SwiftUI ’ s ViewBuilder","url":"https://www.swiftbysundell.com/articles/swiftui-viewbuilder-tips-and-tricks/","recommender":"DylanYang"},{"heading":"enableAppleAI","url":"https://github.com/kanshurichard/enableAppleAI","recommender":"ChengzhiHuang"},{"heading":"Notepad.exe","url":"https://notepadexe.com/","recommender":"EyreFree"},{"heading":"macOS 26 恢复启动台小技巧","url":null,"recommender":"Barney"},{"heading":"apple-on-device-openai","url":"https://github.com/gety-ai/apple-on-device-openai","recommender":"Cooper Chen"}]},{"id":"r-338-2025-06-16","type":"report","title":"老司机 iOS 周报 #338 | 2025-06-16","issue":338,"date":"2025-06-16","year":2025,"path":"Reports/2025/#338-2025.06.16.md","url":"Reports/2025/%23338-2025.06.16.md","excerpt":"Redesigned Swift.org is now live：Swift 上线了新的官网，新官网的设计目标是突出 Swift 易于上手的特性。并且还提供了 软件包、Swift 实际应用示例、代码片段以及进一步学习的资源链接等信息。；What's new in Swift 6.2?：Swift 6.2 带来了一系列语言特性增强和并发模型优化，旨在提升开发效率并简化并发编程。以下是核心更新要点： - 一.并发编程改进 - 1.默认 ac","sections":[{"heading":"Redesigned Swift.org is now live","url":"https://www.swift.org/blog/redesigned-swift-org-is-now-live/"},{"heading":"What's new in Swift 6.2?","url":"https://www.hackingwithswift.com/articles/277/whats-new-in-swift-6-2","recommender":"含笑饮砒霜"},{"heading":"Accessorise Your Context Menu Interactions","url":"https://sebvidal.com/blog/accessorise-your-context-menu-interactions/","recommender":"Smallfly"},{"heading":"A (Re-)Introduction to ExtensionKit","url":"https://www.massicotte.org/extensionkit-intro","recommender":"Cooper Chen"},{"heading":"iOS 26 beta1 重新禁止 JIT 执行，Flutter 下的 iOS 真机 hot load 暂时无法使用","url":"https://mp.weixin.qq.com/s/KREg8100EKo3oemJZ6F36Q","recommender":"david-clang"},{"heading":"SourceKitten","url":"https://github.com/jpsim/SourceKitten"}]},{"id":"r-337-2025-06-09","type":"report","title":"老司机 iOS 周报 #337 | 2025-06-09","issue":337,"date":"2025-06-09","year":2025,"path":"Reports/2025/#337-2025.06.09.md","url":"Reports/2025/%23337-2025.06.09.md","excerpt":"Optimized mathematical computations in Swift：这篇文章介绍如何用 的 框架 （特别是 模块） 高效处理大规模数学计算 （如求和、平均值、标准差）。它替代传统低效方法（如 ）， 显著提升大数据场景性能 （如百万级健康数据点）。核心展示了 、 和 的简洁用法，并指出该框架还支持更复杂计算（如机器学习、信号处理）。；微信自研高性能推理计算引擎 XNet-DNN：跨平台 GPU 部署大语言模型及优化实","sections":[{"heading":"Optimized mathematical computations in Swift","url":"https://swiftwithmajid.com/2025/05/13/optimized-mathematical-computations-in-swift/","recommender":"Barney"},{"heading":"微信自研高性能推理计算引擎 XNet-DNN：跨平台 GPU 部署大语言模型及优化实践","url":"https://mp.weixin.qq.com/s/QNQpWKX3EuoTJvBNrIqmPQ","recommender":"Cooper Chen"},{"heading":"一行代码解决 iOS 18 iPad TabBar 位置变化，还你熟悉的底部导航","url":"https://mp.weixin.qq.com/s/i5ydTkzlyxcgdQQ39b7lnA","recommender":"BluesJiang"},{"heading":"Compose Multiplatform Skia 对比 Flutter Impeller ，都是跨平台自绘有什么差异","url":"https://mp.weixin.qq.com/s/o0vopxuOcqzT47R0Pb2EkA","recommender":"david-clang"},{"heading":"『极致』的二进制重排","url":"https://juejin.cn/post/7432913408574930971","recommender":"JonyFang"},{"heading":"Data Scout: SwiftData debugging tool","url":"https://medium.com/@djalex566/behind-the-scenes-of-datascout-a-swiftdata-debugging-tool-dcfc880f0733","recommender":"阿权"},{"heading":"Swift Embedded ESP32C6 OLED Demo","url":"https://github.com/CmST0us/swift-embedded-xiao-esp32c6-expansion_board","recommender":"Kyle-Ye"}]},{"id":"r-336-2025-05-26","type":"report","title":"老司机 iOS 周报 #336 | 2025-05-26","issue":336,"date":"2025-05-26","year":2025,"path":"Reports/2025/#336-2025.05.26.md","url":"Reports/2025/%23336-2025.05.26.md","excerpt":"LLM 学习笔记：最好的学习方法是带着问题去寻找答案：这篇文章以日常 AI 聊天场景为切入点，生动解析了大语言模型背后的技术原理。特别值得关注的是：；What's new in Swift 6.2?：这篇文章介绍了 Swift 6.2 将会迎来的重大更新，聚焦于提升开发效率与代码安全性。其核心改进包括：；Dependency container on top of task local values in Swift：这篇文章由 Swi","sections":[{"heading":"LLM 学习笔记：最好的学习方法是带着问题去寻找答案","url":"https://mp.weixin.qq.com/s/T7aD9diSNymHhv68FSaSZA","recommender":"Cooper Chen"},{"heading":"What's new in Swift 6.2?","url":"https://www.hackingwithswift.com/articles/277/whats-new-in-swift-6-2","recommender":"Smallfly"},{"heading":"Dependency container on top of task local values in Swift","url":"https://swiftwithmajid.com/2025/04/30/dependency-container-on-top-of-task-local-values-in-swift/","recommender":"Cooper Chen"},{"heading":"2025 上半年 Flutter iOS 大坑超汇总，看看你踩中了没","url":"https://mp.weixin.qq.com/s/JceoW5K554Gg3QYZoVYbYw","recommender":"david-clang"},{"heading":"Default isolation with Swift 6.2","url":"https://www.massicotte.org/default-isolation-swift-6_2","recommender":"DylanYang"},{"heading":"OpenAsyncImage","url":"https://github.com/OpenSwiftUIProject/OpenAsyncImage"}]},{"id":"r-335-2025-05-19","type":"report","title":"老司机 iOS 周报 #335 | 2025-05-19","issue":335,"date":"2025-05-19","year":2025,"path":"Reports/2025/#335-2025.05.19.md","url":"Reports/2025/%23335-2025.05.19.md","excerpt":"Apple 公布将于今年晚些时候推出的强大辅助功能：苹果在辅助功能的上的设计还是非常先进的，现有的一些辅助功能适配起来相对来说还是比较轻松的，期待苹果更多的辅助功能。；UIApplication delegate deprecation coming in iOS 19 SDK：作者通过关注 WebKit 提交记录发现 iOS 19 SDK 中 UIApplicationDelegate 协议中的部分 API 将被弃用，原因是修复因新 ","sections":[{"heading":"Apple 公布将于今年晚些时候推出的强大辅助功能","url":"https://www.apple.com.cn/newsroom/2025/05/apple-unveils-powerful-accessibility-features-coming-later-this-year/"},{"heading":"UIApplication delegate deprecation coming in iOS 19 SDK","url":"https://lapcatsoftware.com/articles/2025/4/5.html","recommender":"Damien"},{"heading":"Using Model Context Protocol in iOS apps","url":"https://www.artemnovichkov.com/blog/using-model-context-protocol-in-ios-apps","recommender":"含笑饮砒霜"},{"heading":"Xtool: cross-platform Xcode replacement. Build iOS apps on Linux and more!","url":"https://forums.swift.org/t/xtool-cross-platform-xcode-replacement-build-ios-apps-on-linux-and-more/79803","recommender":"Kyle-Ye"},{"heading":"Vibe Xcoding your apps","url":"https://tuist.dev/blog/2025/05/13/vibe-xcoding","recommender":"EyreFree"},{"heading":"A flowing WebGL gradient, deconstructed","url":"https://alexharri.com/blog/webgl-gradients","recommender":"莲叔"},{"heading":"Unlocking the Real Power of Swift 6's Typed Throws with Error Chains","url":"https://www.fline.dev/swift-6-typed-throws-error-chains/","recommender":"阿权"},{"heading":"Debug crashes in iOS using MetricKit","url":"https://ohmyswift.com/blog/2025/05/08/debug-crashes-in-ios-using-metrickit/","recommender":"Barney"},{"heading":"Fitting the Lapse experience into 15 MegaBytes","url":"https://blog.jacobstechtavern.com/p/f7411f56-a502-4ef4-81b1-aef15238d460","recommender":"DylanYang"},{"heading":"ButtonKit","url":"https://github.com/Dean151/ButtonKit","recommender":"Smallfly"}]},{"id":"r-334-2025-05-12","type":"report","title":"老司机 iOS 周报 #334 | 2025-05-12","issue":334,"date":"2025-05-12","year":2025,"path":"Reports/2025/#334-2025.05.12.md","url":"Reports/2025/%23334-2025.05.12.md","excerpt":"Adding dependencies to binary Swift packages：这篇文章介绍了作者如何为 Swift 的二进制包（binary Swift packages）添加依赖的问题和解决方案。普通 Swift 包可以直接声明依赖，但二进制包无法这样做，这给闭源 SDK 的开发带来了挑战。过去作者采用复制依赖库源代码到二进制包中的方式来解决，但这种方式；支付宝客户端 Kotlin/Native 包体积优化实践：支付宝在使","sections":[{"heading":"Adding dependencies to binary Swift packages","url":"https://danielsaidi.com/blog/2025/05/02/adding-dependencies-to-binary-swift-packages","recommender":"含笑饮砒霜"},{"heading":"支付宝客户端 Kotlin/Native 包体积优化实践","url":"https://mp.weixin.qq.com/s/vcuo2YJsrn3kQcTNuoLuGQ","recommender":"Kyle-Ye"},{"heading":"使用 AVPlayer 播放 FairPlay DRM 视频的最佳实践","url":"https://mp.weixin.qq.com/s/vnK8GZP9ucvML6GQ7EJkeQ","recommender":"阿权"},{"heading":"Gatekeeper change in macOS 15.4","url":"https://lapcatsoftware.com/articles/2025/4/8.html","recommender":"Cooper Chen"},{"heading":"How a Single Line Of Code Could Brick Your iPhone","url":"https://rambo.codes/posts/2025-04-24-how-a-single-line-of-code-could-brick-your-iphone","recommender":"david-clang"},{"heading":"DeepWiki","url":"https://deepwiki.com/","recommender":"EyreFree"},{"heading":"swift-subprocess","url":"https://github.com/swiftlang/swift-subprocess","recommender":"kemchenj"}]},{"id":"r-333-2025-04-28","type":"report","title":"老司机 iOS 周报 #333 | 2025-04-28","issue":333,"date":"2025-04-28","year":2025,"path":"Reports/2025/#333-2025.04.28.md","url":"Reports/2025/%23333-2025.04.28.md","excerpt":"重磅上线 | 一次性购买通知 ONE_TIME_CHARGE 即将正式发布 / A new App Store Server Notification type will soon be available：自 2024/06/10 沙箱环境首发以来，该通知历经大半年的稳定性验证，现即将进入现网发布阶段。以下内容值得我们重点关注：；Using singletons in Swift 6：本文介绍了 Swift 6 中单例模式因并发安全性","sections":[{"heading":"重磅上线 | 一次性购买通知 ONE_TIME_CHARGE 即将正式发布 / A new App Store Server Notification type will soon be available","url":"https://developer.apple.com/documentation/appstoreservernotifications/notificationtype","recommender":"SeaHub"},{"heading":"Using singletons in Swift 6","url":"https://www.donnywals.com/using-singletons-in-swift-6/","recommender":"Smallfly"},{"heading":"Using Swift ’ s defer keyword within async and throwing contexts","url":"https://www.swiftbysundell.com/articles/using-defer-within-async-and-throwing-contexts/","recommender":"阿权"},{"heading":"Dynamically Constructing Generic Types in Swift","url":"https://kyleye.top/posts/dynamic_generic/","recommender":"JonyFang"},{"heading":"20 years of Git. Still weird, still wonderful.","url":"https://blog.gitbutler.com/20-years-of-git/","recommender":"AidenRao"},{"heading":"SwiftFiddle/swiftregex: Swift Regex is an online tool to learn, build and test Swift Regex Regex and Regex Builder.","url":"https://github.com/swiftfiddle/swiftregex","recommender":"Barney"},{"heading":"Creating MCP Servers in Swift","url":"https://www.artemnovichkov.com/blog/creating-mcp-servers-in-swift","recommender":"Kyle-Ye"},{"heading":"Make your app content show on Spotlight","url":"https://www.createwithswift.com/make-your-app-content-show-on-spotlight/","recommender":"极速男孩"}]},{"id":"r-332-2025-04-21","type":"report","title":"老司机 iOS 周报 #332 | 2025-04-21","issue":332,"date":"2025-04-21","year":2025,"path":"Reports/2025/#332-2025.04.21.md","url":"Reports/2025/%23332-2025.04.21.md","excerpt":"DocC for Multi-Platform Documentation：这篇文章介绍了如何手动创建 Swift 包的跨平台文档。虽然 DocC SPM 插件最近添加了对多目标文档生成的支持，但目前仍不支持跨平台包的文档生成。作者分享了一种解决方案，通过直接使用 Xcode 自带的 DocC 工具来实现。；iOS 静态代码检查方案解读：这篇文章对比了 iOS 开发中三大主流静态代码检查工具：SonarQube、Infer 和 Clan","sections":[{"heading":"DocC for Multi-Platform Documentation","url":"https://alexanderweiss.dev/blog/2025-03-09-docc-for-multi-platform-documentation","recommender":"Kyle-Ye"},{"heading":"iOS 静态代码检查方案解读","url":"https://mp.weixin.qq.com/s/yYmwuD3wl77Je4m1zFGfWQ","recommender":"含笑饮砒霜"},{"heading":"How to inspect .ipa files and secure your iOS app from common mistakes","url":"https://www.artemnovichkov.com/blog/how-to-inspect-ipa-files","recommender":"Barney"},{"heading":"你为什么需要了解 Dart AST？一个简单的 bug 带你快速认识下 Dart Kernel AST","url":"https://mp.weixin.qq.com/s/DgC0C3U9-9u8KFeM4Ud6mw","recommender":"david-clang"},{"heading":"SwiftUI Keyboard Shortcut Scope","url":"https://useyourloaf.com/blog/swiftui-keyboard-shortcut-scope/","recommender":"Smallfly"},{"heading":"Supercharging SwiftUI Text with Dynamic Content Styling","url":"https://danielsaidi.com/blog/2025/04/08/supercharging-swiftui-text-with-dynamic-content-styling","recommender":"阿权"}]},{"id":"r-331-2025-04-14","type":"report","title":"老司机 iOS 周报 #331 | 2025-04-14","issue":331,"date":"2025-04-14","year":2025,"path":"Reports/2025/#331-2025.04.14.md","url":"Reports/2025/%23331-2025.04.14.md","excerpt":"Building a dependency injection framework：文章介绍了在 Swift 中如何从零到一搭建轻量级级依赖注入（DI）容器，内容包括：；注意，暂时不要升级 MacOS ，Flutter/RN 等构建 ipa 可能会因 「ITMS-90048」被拒绝：macOS 15.4 会导致 Flutter/RN 构建产物新增无效文件夹 ，提交 App Store 审核会被拒。虽然文章还提供了临时解决办法，但还是建议","sections":[{"heading":"Building a dependency injection framework","url":"https://tanaschita.com/dependency-injection-building-lightweight-container/","recommender":"阿权"},{"heading":"注意，暂时不要升级 MacOS ，Flutter/RN 等构建 ipa 可能会因 「ITMS-90048」被拒绝","url":"https://mp.weixin.qq.com/s/s9fJWOJNhOf9Beu60VDQUA","recommender":"david-clang"},{"heading":"New in Swift 6.1: Test Scoping Traits","url":"https://www.pointfree.co/blog/posts/169-new-in-swift-6-1-test-scoping-traits","recommender":"Cooper Chen"},{"heading":"Swiftdata Architecture Patterns And Practices","url":"https://azamsharp.com/2025/03/28/swiftdata-architecture-patterns-and-practices.html","recommender":"Barney"},{"heading":"Introducing swiftly 1.0","url":"https://www.swift.org/blog/introducing-swiftly_10/","recommender":"DylanYang"},{"heading":"Spatial Rendering for Apple Vision Pro with ARKit, Metal, and Compositor Services by Warren Moore","url":"https://www.youtube.com/watch?v=vO0M4c9mb2E","recommender":"BluesJiang"}]},{"id":"r-330-2025-04-07","type":"report","title":"老司机 iOS 周报 #330 | 2025-04-07","issue":330,"date":"2025-04-07","year":2025,"path":"Reports/2025/#330-2025.04.07.md","url":"Reports/2025/%23330-2025.04.07.md","excerpt":"Swift 6.1 Released：Swift 6.1 正式推出，核心更新：；Modern URL construction in Swift：本文介绍了 Swift 在 URL 构建方面的现代解决方案，通过类型扩展、宏和新 API 的结合，实现了更安全、简洁的 URL 处理方式。开发者可根据项目需求选择合适方案，提升代码质量。具体内容为：；Deploying a Swift Server App to Fly.io and Rail","sections":[{"heading":"Swift 6.1 Released","url":"https://www.swift.org/blog/swift-6.1-released/","recommender":"AidenRao"},{"heading":"Modern URL construction in Swift","url":"https://www.swiftbysundell.com/articles/modern-url-construction-in-swift/","recommender":"阿权"},{"heading":"Deploying a Swift Server App to Fly.io and Railway","url":"https://swifttoolkit.dev/posts/deploy-fly-railway","recommender":"Kyle-Ye"},{"heading":"上","url":"https://www.woshipm.com/ai/6190336.html","recommender":"EyreFree"},{"heading":"Fast & Fluid: Integrating Rust egui into SwiftUI","url":"https://medium.com/@djalex566/fast-fluid-integrating-rust-egui-into-swiftui-30a218c502c1","recommender":"david-clang"},{"heading":"得物 iOS 启动优化之 Building Closure","url":"https://mp.weixin.qq.com/s/xr43Xx-A3NT8lPGIii8pPA","recommender":"Smallfly"}]},{"id":"r-329-2025-03-31","type":"report","title":"老司机 iOS 周报 #329 | 2025-03-31","issue":329,"date":"2025-03-31","year":2025,"path":"Reports/2025/#329-2025.03.31.md","url":"Reports/2025/%23329-2025.03.31.md","excerpt":"Understanding structural identity in SwiftUI：SwiftUI 使用结构体描述视图，由 SwiftUI 内部完成视图的绘制与更新。而结构体标识则是视图层级中的唯一 id，用于识别状态变化前后的视图结构体是否是同一视图，进而进行更新和重绘。；Profiling apps using Instruments：这是苹果官方出品的 Instruments 教程。Instruments 主要用来分析应用程","sections":[{"heading":"Understanding structural identity in SwiftUI","url":"https://tanaschita.com/swiftui-structural-identity/","recommender":"阿权"},{"heading":"Profiling apps using Instruments","url":"https://developer.apple.com/tutorials/instruments","recommender":"Smallfly"},{"heading":"充分理解 C/C++ 重要概念：运行时库","url":"https://mp.weixin.qq.com/s/Fed-0uVaOGDUiftH43vnGA","recommender":"极速男孩"},{"heading":"Detecting body poses in a live video feed","url":"https://www.createwithswift.com/detecting-body-poses-in-a-live-video-feed/","recommender":"AidenRao"},{"heading":"Why I Avoid Group","url":"https://chris.eidhof.nl/post/why-i-avoid-group/","recommender":"DylanYang"},{"heading":"这篇 GPU 学习笔记，详细整理了其工作原理、编程模型和架构设计","url":"https://mp.weixin.qq.com/s/IzsI_dzX6AxFnJGg8zewEw","recommender":"老驴"},{"heading":"FlowNavigation","url":"https://github.com/magnuskahr/swiftui-flow-navigation"}]},{"id":"r-328-2025-03-24","type":"report","title":"老司机 iOS 周报 #328 | 2025-03-24","issue":328,"date":"2025-03-24","year":2025,"path":"Reports/2025/#328-2025.03.24.md","url":"Reports/2025/%23328-2025.03.24.md","excerpt":"Understanding SwiftUI's Namespace：这篇文章介绍了 SwiftUI 的工作原理，从底层实现到实际应用，再到高级用法，内容详实且易于理解。作者不仅解释了 如何生成唯一标识符，还通过实际代码示例展示了如何利用它实现平滑的几何动画。相信无论是初学者还是有一定经验的开发者，都能从中获得一些启发。；Designing a custom lazy list in SwiftUI with better perform","sections":[{"heading":"Understanding SwiftUI's Namespace","url":"https://kyleye.top/posts/swiftui-namespace/","recommender":"Smallfly"},{"heading":"Designing a custom lazy list in SwiftUI with better performance","url":"https://www.swiftwithvincent.com/blog/animation-vs-withanimation-whats-the-difference","recommender":"Barney"},{"heading":"Identifying individual sounds in an audio file","url":"https://www.createwithswift.com/identifying-individual-sounds-in-an-audio-file/","recommender":"Damien"},{"heading":"Swift + Zed = ❤️","url":"https://tgomareli.medium.com/swift-zed-%EF%B8%8F-6b08de865425","recommender":"Cooper Chen"},{"heading":"Synchronous Work","url":"https://www.massicotte.org/synchronous-work","recommender":"DylanYang"},{"heading":"Framous: Screenshot Frames","url":"https://apps.apple.com/us/app/framous-screenshot-frames/id6636520519?mt=12","recommender":"阿权"},{"heading":"GlyphixTextFx","url":"https://github.com/ktiays/GlyphixTextFx","recommender":"AidenRao"},{"heading":"Swift DevRoom at FOSDEM 2025","url":"https://swiftlang.github.io/event-fosdem/","recommender":"zhangferry"}]},{"id":"r-327-2025-03-17","type":"report","title":"老司机 iOS 周报 #327 | 2025-03-17","issue":327,"date":"2025-03-17","year":2025,"path":"Reports/2025/#327-2025.03.17.md","url":"Reports/2025/%23327-2025.03.17.md","excerpt":"iOS Versions Market Share in 2025：网页展示了使用 iOS 系统（包括 iPadOS）的用户的分布变化，其中有两条结论：；通过覆写方法看 Swift 方法派发：作者通过一个子类覆写方法的 Demo 向我们解释了 Swift 内静态派发和动态派发两种机制，并介绍了 @objc 和 dynamic 关键字的含义，讲述了如何在 extension 中正确的覆写父类方法。看完以后感兴趣的同学也可以尝试再研究下 P","sections":[{"heading":"iOS Versions Market Share in 2025","url":"https://telemetrydeck.com/survey/apple/iOS/majorSystemVersions/"},{"heading":"通过覆写方法看 Swift 方法派发","url":"https://blog.rakuyoo.top/swift-method-dispatch-via-overriding/","recommender":"DylanYang"},{"heading":"A Journey to understand LLVM-IR","url":"https://un-devs.github.io/low-level-exploration/journey-to-understanding-llvm-ir/","recommender":"ChengzhiHuang"},{"heading":"op run","url":"https://nshipster.com/1password-cli/","recommender":"AidenRao"},{"heading":"What drives your users to pay? Jobs to Be Done has the answers","url":"https://www.revenuecat.com/blog/growth/what-drives-users-to-pay-jobs-to-be-done/","recommender":"含笑饮砒霜"},{"heading":"当 Swift 编译器删除了标准库中的代码 - 记修复 Swift 6 中的冗余 Load 指令消除优化器","url":"https://mp.weixin.qq.com/s/MLYm8S8vMeI9y06SgAGfFw","recommender":"david-clang"},{"heading":"RealityShaderExtension","url":"https://github.com/XanderXu/RealityShaderExtension","recommender":"BluesJiang"},{"heading":"How to Do Apple Search Ads (ASA) Right and Grow Your Downloads","url":"https://www.youtube.com/watch?v=W6_bN3AZo_s","recommender":"Kyle-Ye"}]},{"id":"r-326-2025-03-10","type":"report","title":"老司机 iOS 周报 #326 | 2025-03-10","issue":326,"date":"2025-03-10","year":2025,"path":"Reports/2025/#326-2025.03.10.md","url":"Reports/2025/%23326-2025.03.10.md","excerpt":"Lynx: 迈向原生体验：跨平台 UI 方案始终在性能、灵活性和工程复杂度之间寻找平衡。Lynx 采用声明式 DSL 直出原生 UI，减少 JS 端计算和通信开销，同时优化 UI Diff 机制，使更新更加高效。；Simple Modularization setup for a New App：这篇文章介绍了如何使用 Swift Package Manager 的本地包实现 iOS 应用的模块化。作者强调了模块化在改善构建时间、分离关","sections":[{"heading":"Lynx: 迈向原生体验","url":"https://mp.weixin.qq.com/s/Wmapq8NMfoXejIcxX-2K-Q","recommender":"Lynx"},{"heading":"Simple Modularization setup for a New App","url":"https://www.manu.show/2025-02-27-simple-modularization-setup/","recommender":"Smallfly"},{"heading":"Ollama","url":"https://nshipster.com/ollama/","recommender":"Cooper Chen"},{"heading":"不要升级，Flutter Debug 模式在 iOS 18.4 beta 无法运行，提示 Permission denied","url":"https://mp.weixin.qq.com/s/shfvj95_CjwO-33s_7LIWQ","recommender":"david-clang"},{"heading":"Designing a custom lazy list in SwiftUI with better performance","url":"https://nilcoalescing.com/blog/CustomLazyListInSwiftUI/","recommender":"Barney"},{"heading":"关于推理模型的一些误解和盲区","url":"https://onevcat.com/2025/02/reasoning-model/","recommender":"JonyFang"},{"heading":"XCFolder: 一个将 Xcode 项目 Group 转为 Folder 的工具","url":"https://github.com/ZhgChgLi/XCFolder"},{"heading":"Deep Dive into LLMs like ChatGPT","url":"https://www.youtube.com/watch?v=7xTGNNLPyMI&list=PPSV","recommender":"Damien"}]},{"id":"r-325-2025-03-03","type":"report","title":"老司机 iOS 周报 #325 | 2025-03-03","issue":325,"date":"2025-03-03","year":2025,"path":"Reports/2025/#325-2025.03.03.md","url":"Reports/2025/%23325-2025.03.03.md","excerpt":"Presenting and Managing Expandable Sections in SwiftUI：作者为我们介绍了如何在 SwiftUI 中实现一个可通过交互来展开和收起的 Section。在 Section 的 header 上实现一个自定义 view，并在点击时反转 Section 的 isExpanded 属性来达成目标。文章内容非常简单基础，并且有丰富的代码演示，适合；First analysis of Apple'","sections":[{"heading":"Presenting and Managing Expandable Sections in SwiftUI","url":"https://serialcoder.dev/text-tutorials/swiftui/presenting-and-managing-expandable-sections-in-swiftui/","recommender":"DylanYang"},{"heading":"First analysis of Apple's USB Restricted Mode bypass (CVE-2025-24200)","url":"https://blog.quarkslab.com/first-analysis-of-apples-usb-restricted-mode-bypass-cve-2025-24200.html","recommender":"david-clang"},{"heading":"How Swift's server support powers Things Cloud","url":"https://www.swift.org/blog/how-swifts-server-support-powers-things-cloud/","recommender":"阿权"},{"heading":"What ’ s new in Swift 6.1?","url":"https://www.donnywals.com/whats-new-in-swift-6-1/","recommender":"Cooper Chen"},{"heading":"Interactive & Beautiful CLI Tools with Noora","url":"https://swifttoolkit.dev/posts/noora-package","recommender":"Smallfly"},{"heading":"基于 WWDC 内容的 AI 问答平台 Ask WWDC","url":"https://askwwdc.com","recommender":"xiaofei86"}]},{"id":"r-324-2025-02-24","type":"report","title":"老司机 iOS 周报 #324 | 2025-02-24","issue":324,"date":"2025-02-24","year":2025,"path":"Reports/2025/#324-2025.02.24.md","url":"Reports/2025/%23324-2025.02.24.md","excerpt":"iOS & iPadOS 18.4 Beta 1: Here’s everything new：对于中国用户最期待的自然是中文版本的 Apple Intelligence 终于可以使用了，Release Notes 有两条相关提醒：；Understanding SwiftUI Preferences：本篇主要介绍了 SwiftUI 中的 Preferences 机制，讲述了其在父子视图间传递数据的作用。 作者通过具体示例，展示了如何利用","sections":[{"heading":"iOS & iPadOS 18.4 Beta 1: Here’s everything new","url":"https://9to5mac.com/2025/02/21/ios-18-4-beta-1-heres-everything-new/"},{"heading":"Understanding SwiftUI Preferences","url":"https://peterfriese.dev/blog/2025/swiftui-preferences-swift6/#what-are-preferences-in-swiftui","recommender":"JonyFang"},{"heading":"The Synchronization Framework in Swift 6","url":"https://blog.jacobstechtavern.com/p/the-synchronisation-framework","recommender":"DylanYang"},{"heading":"The Framework Next Door","url":"https://www.elkraneo.com/the-framework-next-door","recommender":"BluesJiang"},{"heading":"解决 Xcode 16 \"Waiting to reconnect to ...\" 问题","url":"https://stackoverflow.com/questions/79016653/after-upgrading-to-xcode-16-i-am-stuck-at-waiting-to-reconnect-to-when-tryi","recommender":"Cooper Chen"},{"heading":"asm lessons","url":"https://github.com/FFmpeg/asm-lessons","recommender":"老驴"},{"heading":"你的 iPhone 也可以离线运行 DeepSeek「含原理介绍」","url":"https://mp.weixin.qq.com/s/oXfrBKwZzXIzg-k_KRQEbQ","recommender":"EyreFree"},{"heading":"DispatchConcurrentQueue 可用性提示","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/4870","recommender":"Damien"}]},{"id":"r-323-2025-02-17","type":"report","title":"老司机 iOS 周报 #323 | 2025-02-17","issue":323,"date":"2025-02-17","year":2025,"path":"Reports/2025/#323-2025.02.17.md","url":"Reports/2025/%23323-2025.02.17.md","excerpt":"Updating the Visual Studio Code extension for Swift：Swift 团队正式支持 Visual Studio Code 中的新版本 Swift 扩展，旨在提升跨平台开发体验。原有扩展已迁移至 GitHub /swiftlang 组织，确保更广泛的社区支持和持续更新。对于现有开发者，升级过程无缝衔接，旧版扩展会自动替换为新版，用户可以轻；Creating a reusable action ","sections":[{"heading":"Updating the Visual Studio Code extension for Swift","url":"https://www.swift.org/blog/vscode-swift-2/","recommender":"Cooper Chen"},{"heading":"Creating a reusable action menu component in SwiftUI","url":"https://peterfriese.dev/blog/2025/swiftui-action-menu/","recommender":"AidenRao"},{"heading":"Attaching debugger to system apps","url":"https://supersonicbyte.com/blog/attaching-debugger-to-system-apps/","recommender":"Kyle-Ye"},{"heading":"Attending Apple Intelligence and App Intents workshop at Paris","url":"https://blog.thomasdurand.fr/story/2025-01-17-attending-apple-workshop/","recommender":"Smallfly"},{"heading":"Flutter 3.29 发布，看起来会是一个“大坑”的版本","url":"https://mp.weixin.qq.com/s/_uA5XYYqmzbtTVCtqRPI7w","recommender":"david-clang"},{"heading":"SweetPad: Develop Swift/iOS projects using VSCode","url":"https://github.com/sweetpad-dev/sweetpad","recommender":"阿权"},{"heading":"一个使用 Instrument 的小技巧","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/4871","recommender":"Barney"}]},{"id":"r-322-2025-02-10","type":"report","title":"老司机 iOS 周报 #322 | 2025-02-10","issue":322,"date":"2025-02-10","year":2025,"path":"Reports/2025/#322-2025.02.10.md","url":"Reports/2025/%23322-2025.02.10.md","excerpt":"Apple 开源 Xcode 底层构建引擎：Apple 近日开源了 swift-build，它是 Xcode、Swift Playground 底层使用的构建引擎（在 Xcode 里名为 XCBBuildService）。；不再依赖 CallKit，iOS 微信使用新方案实现通话弹窗接听：苹果上线了新的 LiveCommunicationKit 作为在中国大陆替代 CallKit ，从用户视角分析，与 CallKit 最大的区别就是适配","sections":[{"heading":"Apple 开源 Xcode 底层构建引擎","url":"https://www.swift.org/blog/the-next-chapter-in-swift-build-technologies/","recommender":"kemchenj"},{"heading":"不再依赖 CallKit，iOS 微信使用新方案实现通话弹窗接听","url":"https://mp.weixin.qq.com/s/6hw75UXjqGGBfNmuH3_cVQ"},{"heading":"Debugging An Undebuggable App","url":"https://bryce.co/undebuggable/","recommender":"ChengzhiHuang"},{"heading":"Advantages of Using withAnimation","url":"https://www.magnuskahr.dk/posts/2025/01/advantage-of-withAnimation/","recommender":"含笑饮砒霜"},{"heading":"Hardcore Debugging","url":"https://blog.jacobstechtavern.com/p/hardcore-debugging","recommender":"zhangferry"},{"heading":"Compose 多平台是真实存在的！","url":"https://whackylabs.com/swift/kotlin/compose/2025/01/12/compose-multiplatform-is-real/","recommender":"极速男孩"},{"heading":"深入 Flutter 和 Compose 的 PlatformView 实现对比，它们是如何接入平台控件","url":"https://mp.weixin.qq.com/s/FCu6OiZRh6EcmCWLB904jA","recommender":"david-clang"},{"heading":"深入 Flutter 和 Compose 在 UI 渲染刷新时 Diff 实现对比","url":"https://mp.weixin.qq.com/s/756kaH11g0rM7dlklLSiuA","recommender":"Crazy"},{"heading":"Network Link Conditioner: Simulating Slow Networking","url":"https://www.avanderlee.com/debugging/network-link-conditioner-utility/","recommender":"阿权"}]},{"id":"r-321-2025-01-20","type":"report","title":"老司机 iOS 周报 #321 | 2025-01-20","issue":321,"date":"2025-01-20","year":2025,"path":"Reports/2025/#321-2025.01.20.md","url":"Reports/2025/%23321-2025.01.20.md","excerpt":"探究 SwiftUI Preview 的工作原理：在 SwiftUI 开发中，Xcode Preview 常出现崩溃或卡死问题，如果不了解其工作原理，通常只能用清除缓存、重启 Xcode 等方法解决。作者通过将 DerivedData 文件夹加入 Git 管理，观察其变化来研究 Preview 原理。其运行机制上，Xcode 1；Using Copilot to write a raindrop audio synthesizer us","sections":[{"heading":"探究 SwiftUI Preview 的工作原理","url":"https://onee.me/zh/blog/how-new-xcode-swiftui-preview-works-under-the-hood/","recommender":"JonyFang"},{"heading":"Using Copilot to write a raindrop audio synthesizer using AVAudioEngine","url":"https://www.cocoawithlove.com/blog/copilot-raindrop-generator.html","recommender":"EyreFree"},{"heading":"Creating interactive tutorials using DocC","url":"https://www.nutrient.io/blog/creating-interactive-tutorials-using-docc/","recommender":"Kyle-Ye"},{"heading":"Creating a SwiftUI text view with tappable links","url":"https://danielsaidi.com/blog/2024/12/18/creating-a-swiftui-text-view-with-tappable-links","recommender":"Bluesjiang"},{"heading":"Size Matters: An Exploration of Virtual Memory on iOS","url":"https://alwaysprocessing.blog/2022/02/20/size-matters","recommender":"阿权"},{"heading":"Type-Driven Design with Swift","url":"https://swiftology.io/collections/type-driven-design/","recommender":"DylanYang"},{"heading":"echarts","url":"https://echarts.apache.org/examples/zh/index.html#chart-type-line","recommender":"极速男孩"}]},{"id":"r-320-2025-01-13","type":"report","title":"老司机 iOS 周报 #320 | 2025-01-13","issue":320,"date":"2025-01-13","year":2025,"path":"Reports/2025/#320-2025.01.13.md","url":"Reports/2025/%23320-2025.01.13.md","excerpt":"Algorithm changes to server connections for Apple Pay on the Web：从 2025 年 2 月 4 日开始，苹果将改变支持 Apple Pay 在 Web 上的服务器连接的安全算法。为了保持服务不间断，你需要确保你的生产服务器在这个日期之前支持指定的六种密码之一。；Xcode Library customization with SPM plugin：本文探讨了如何通过 Swi","sections":[{"heading":"Algorithm changes to server connections for Apple Pay on the Web","url":"https://developer.apple.com/news/?id=2x8awlvm","recommender":"Damien"},{"heading":"Xcode Library customization with SPM plugin","url":"https://www.artemnovichkov.com/blog/xcode-library-customization-with-spm-plugin","recommender":"Kyle-Ye"},{"heading":"数据编织在AB实验自动化中的应用 | 京东零售技术实践","url":"https://mp.weixin.qq.com/s/NMPot2AfEtsWXVPowZBDOA","recommender":"Barney"},{"heading":"使用火山引擎 APMPlus 优化 iOS 内存性能的全套指南","url":"https://mp.weixin.qq.com/s/3qDQJXXiVl9gF-q5KtbxVw","recommender":"阿权"},{"heading":"What happens when you move a file in git?","url":"https://swiftrocks.com/what-happens-when-you-move-a-file-in-git","recommender":"JonyFang"},{"heading":"Now we’re all Forked!","url":"https://appdecentral.com/2024/12/13/now-we-are-all-forked","recommender":"Cooper Chen"},{"heading":"解密小红书与美团的合作案例","url":"https://www.xiaoyuzhoufm.com/episode/676e5d051e823e72d332d12e","recommender":"EyreFree"}]},{"id":"r-319-2025-01-06","type":"report","title":"老司机 iOS 周报 #319 | 2025-01-06","issue":319,"date":"2025-01-06","year":2025,"path":"Reports/2025/#319-2025.01.06.md","url":"Reports/2025/%23319-2025.01.06.md","excerpt":"聊聊 Flutter & Dart 里的内存泄漏和优化，也许没你想的那么复杂：本篇文章简单的聊了一下有关 Flutter 的内存泄漏问题，主要从持续引用和全局引用两个方面为大家讲解了一下 Flutter 最容易引起内存泄漏的几个地方。全文很短，作者集中测试了 Timer 与 AnimationController 两个类在引用上的区别，以及如何处理这两个类；百度 APP iOS 端磁盘优化实践（上）：在 APP 开发中，磁盘管理已成为不","sections":[{"heading":"聊聊 Flutter & Dart 里的内存泄漏和优化，也许没你想的那么复杂","url":"https://mp.weixin.qq.com/s/_88yMWWkLI6fFPHhqMdc2w","recommender":"Crazy"},{"heading":"百度 APP iOS 端磁盘优化实践（上）","url":"https://mp.weixin.qq.com/s/YNd8-NKVdql3pRNImwxyTA","recommender":"含笑饮砒霜"},{"heading":"Preventing Accidental API Breaks: A Swift Developer's Guide to API Diffing","url":"https://www.adyen.com/knowledge-hub/swift-api-diff","recommender":"DylanYang"},{"heading":"Compile Metal shader Bitcode to x86 and ARM assembly","url":"https://worthdoingbadly.com/metalbitcode/","recommender":"ChengzhiHuang"},{"heading":"什么？Flutter 可能会被 SwiftUI/ArkUI 化？全新的 Flutter Roadmap","url":"https://mp.weixin.qq.com/s/oiwfzBiednsQQgSCG-K_0g","recommender":"CrazyCoderShi"},{"heading":"Home Assistant iOS","url":"https://github.com/home-assistant/iOS","recommender":"阿权"}]},{"id":"r-318-2024-12-30","type":"report","title":"老司机 iOS 周报 #318 | 2024-12-30","issue":318,"date":"2024-12-30","year":2024,"path":"Reports/2024/#318-2024.12.30.md","url":"Reports/2024/%23318-2024.12.30.md","excerpt":"Calling Hidden Swift Functions：这篇博文介绍了在 Swift 中调用隐藏函数的方法。Swift 中有 6 种访问级别，从 open 到 private。但是，用 Swift 编写的 Apple 框架（尤其是 SwiftUI）包含供其他 Apple 框架使用但不供第三方应用程序使用的 API。文章探讨了如何在自己；Be careful wrapping a throwing function in a Tas","sections":[{"heading":"Calling Hidden Swift Functions","url":"https://www.emergetools.com/blog/posts/calling-hidden-swift-functions","recommender":"AidenRao"},{"heading":"Be careful wrapping a throwing function in a Task","url":"https://www.swiftwithvincent.com/blog/be-careful-wrapping-a-throwing-function-in-a-task","recommender":"Barney"},{"heading":"Enhance Xcode Previews with Unit Test Coverage","url":"https://www.emergetools.com/blog/posts/unit-test-xcode-previews/","recommender":"DylanYang"},{"heading":"MetalLibraryArchive","url":null},{"heading":"为什么 C 口数据线越来越乱？","url":"https://www.bilibili.com/video/BV1j7zzYGEp9/","recommender":"极速男孩"}]},{"id":"r-317-2024-12-23","type":"report","title":"老司机 iOS 周报 #317 | 2024-12-23","issue":317,"date":"2024-12-23","year":2024,"path":"Reports/2024/#317-2024.12.23.md","url":"Reports/2024/%23317-2024.12.23.md","excerpt":"展望未来：打造出色的 visionOS App（线下）：参加在上海 Apple 开发者中心举办的为期一天活动，了解如何打造出色的 visionOS App。；得物 iOS 函数调用栈及符号化调优实践｜得物技术：这篇文章介绍了得物技术团队如何解决 iOS 隐私合规检测的性能难题。文章详细解析了 的内部机制，并通过逆向工程优化了调用栈的获取与符号化过程。实现包括自定义 方法、缩短堆栈长度以及智能缓存策略，显著降低了 CPU 占用，提升了检测","sections":[{"heading":"展望未来：打造出色的 visionOS App（线下）","url":"https://developer.apple.com/events/view/F7QL84UKJV/dashboard"},{"heading":"得物 iOS 函数调用栈及符号化调优实践｜得物技术","url":"https://mp.weixin.qq.com/s/KSAZRfqYmBPuooXJM5qn0A","recommender":"Smallfly"},{"heading":"Exploring Apple Intelligence: Image Generation","url":"https://www.createwithswift.com/exploring-apple-intelligence-image-generation/","recommender":"Cooper Chen"},{"heading":"Apple' s use of Swift and SwiftUI in iOS 18","url":"https://blog.timac.org/2024/1208-state-of-swift-and-swiftui-ios18/","recommender":"ZengyiMa"},{"heading":"JDImage - 京东自研鸿蒙图片库","url":"https://juejin.cn/post/7444800867030286371","recommender":"Crazy"},{"heading":"HuggingChat macOS","url":"https://github.com/huggingface/chat-macOS","recommender":"EyreFree"},{"heading":"Skip: Build native apps for iPhone and Android with Skip","url":"https://skip.tools","recommender":"bq"},{"heading":"SwiftUI-experiments","url":"https://github.com/mikelikesdesign/SwiftUI-experiments","recommender":"DylanYang"}]},{"id":"r-316-2024-12-16","type":"report","title":"老司机 iOS 周报 #316 | 2024-12-16","issue":316,"date":"2024-12-16","year":2024,"path":"Reports/2024/#316-2024.12.16.md","url":"Reports/2024/%23316-2024.12.16.md","excerpt":"Flutter 3.27 发布：Flutter 3.27 悄悄的就来了，该版本包含了大量更新，包括：；Prevent screenshot capture of sensitive SwiftUI views：这篇文章使用了一个比较巧妙的方法来实现截屏隐藏隐私信息。核心是使用 的 属性，然后将被包装的 View 作为其子 View 即可。然后使用了 preference 来实现父容器大小与子容器大小匹配。可以通过这个文章整体了解 Swi","sections":[{"heading":"Flutter 3.27 发布","url":"https://mp.weixin.qq.com/s/gQ5u1m7hudyoa-HeLyMKlw","recommender":"CrazyCoderShi"},{"heading":"Prevent screenshot capture of sensitive SwiftUI views","url":"https://www.createwithswift.com/prevent-screenshot-capture-of-sensitive-swiftui-views/","recommender":"BluesJiang"},{"heading":"Why Can't You Loop Over Ranges of Characters in Swift","url":"https://mfaani.com/posts/swift/why-cant-you-loop-over-ranges-of-characters-in-swift/","recommender":"bq"},{"heading":"WebKit GPU Profiling","url":"https://developer.playcanvas.com/user-manual/optimization/gpu-profiling/","recommender":"莲叔"},{"heading":"Concurrency Step-by-Step: Reading from Storage","url":"https://www.massicotte.org/step-by-step-reading-from-storage","recommender":"Barney"},{"heading":"rmtrash","url":"https://github.com/TBXark/rmtrash","recommender":"Kyle-Ye"},{"heading":"ml-cross-entropy","url":"https://github.com/apple/ml-cross-entropy","recommender":"Leo"}]},{"id":"r-315-2024-12-09","type":"report","title":"老司机 iOS 周报 #315 | 2024-12-09","issue":315,"date":"2024-12-09","year":2024,"path":"Reports/2024/#315-2024.12.09.md","url":"Reports/2024/%23315-2024.12.09.md","excerpt":"CocoaPods Trunk Read-only Plan：Cocoapods 为将 Specs 仓库转为只读状态制定了时间表，预计在 2026 年 12 月 2 日正式不再接受新的提交。；有意为之还是技术缺陷？SwiftUI 多层导航中的 onChange 异常 | 肘子的 Swift 记事本：本文探讨了 SwiftUI 中 的异常行为，特别是在多层导航的情况下。文章分析了在使用 和 时， 修饰符可能会出现的问题，尤其是当视图层级嵌","sections":[{"heading":"CocoaPods Trunk Read-only Plan","url":"https://blog.cocoapods.org/CocoaPods-Specs-Repo/"},{"heading":"有意为之还是技术缺陷？SwiftUI 多层导航中的 onChange 异常 | 肘子的 Swift 记事本","url":"https://fatbobman.com/zh/posts/the-anomaly-of-onchange-in-swiftui-multi-layer-navigation/","recommender":"Barney"},{"heading":"Improving the approachability of data-race safety","url":"https://github.com/hborla/swift-evolution/blob/approachable-concurrency-vision/visions/approachable-concurrency.md","recommender":"Smallfly"},{"heading":"深入探讨 C++ 多线程性能优化","url":"https://mp.weixin.qq.com/s/18TujefnTj-17GuNgmYW-Q","recommender":"老驴"},{"heading":"Xcode + ChatGPT: Official Support is Available Now","url":"https://medium.com/@hiandic/dc21998f3653?source=friends_link&sk=e4dfbadcc5281bd474ecd546b221877e","recommender":"EyreFree"},{"heading":"Easydict: 一个简洁优雅的词典翻译 macOS App","url":"https://github.com/tisfeng/Easydict","recommender":"Cooper Chen"},{"heading":"swift-sharing","url":"https://github.com/pointfreeco/swift-sharing","recommender":"bq"}]},{"id":"r-314-2024-12-02","type":"report","title":"老司机 iOS 周报 #314 | 2024-12-02","issue":314,"date":"2024-12-02","year":2024,"path":"Reports/2024/#314-2024.12.02.md","url":"Reports/2024/%23314-2024.12.02.md","excerpt":"AutoConsis：UI 内容一致性智能检测：这篇文章介绍了美团技术团队与复旦大学计算机学院合作开发的 AutoConsis 系统，这是一个自动化智能检测流程，用于检测移动 App 中 UI 界面内容的一致性。该系统通过目标区域识别、目标信息提取和一致性校验三个关键步骤，实现了低成本、高泛化性和高置信度的 UI 内容一致性检；Lazy vars in @Observable classes in Swift：从 ObservableO","sections":[{"heading":"AutoConsis：UI 内容一致性智能检测","url":"https://mp.weixin.qq.com/s/VwnnYnyo9sCDdUuG4Mu1kQ","recommender":"Damien"},{"heading":"Lazy vars in @Observable classes in Swift","url":"https://nilcoalescing.com/blog/LazyVarsInObservableClasses/","recommender":"zoeGuo"},{"heading":"Exploring Apple Intelligence: Writing Tools","url":"https://www.createwithswift.com/exploring-apple-intelligence-writing-tools","recommender":"EyreFree"},{"heading":"货拉拉 iOS 疑难 Crash 治理-系统键盘语音","url":"https://juejin.cn/post/7396463744186515465","recommender":"xiaofei86"},{"heading":"Google Deepmind LLM 研究员解读 OpenAI o1 及 LLM+ 强化学习新范式 ｜ 3 小时播客全文精华","url":"https://mp.weixin.qq.com/s/i019cHmumJIviyLCDPI3sA","recommender":"含笑饮砒霜"},{"heading":"Syntax Highlighting SwiftUI Code with Swift Syntax","url":"https://sahandnayebaziz.org/blog/syntax-highlighting-swiftui-with-swift-syntax","recommender":"Kyle-Ye"},{"heading":"SwiftUIFX","url":"https://swiftpackageindex.com/finnvoor/SwiftUIFX","recommender":"bq"},{"heading":"NSDockTilePlugIn","url":"https://github.com/marioaguzman/NSDockTilePlugIn-Example","recommender":"Cooper Chen"}]},{"id":"r-313-2024-11-25","type":"report","title":"老司机 iOS 周报 #313 | 2024-11-25","issue":313,"date":"2024-11-25","year":2024,"path":"Reports/2024/#313-2024.11.25.md","url":"Reports/2024/%23313-2024.11.25.md","excerpt":"Can't install any apps on my new iPhone 16 Pro with iOS 18 from Xcode：苹果的开发工程师对于从 Xcode 16 Beta/rc 升级到 Xcode 16 正式版用户会遇到无法安装 app 到 iPhone 16 系列手机的问题给出了解决方案：手动通过指令安装 XcodeSystemResources 。该问题在 Xcode 16.1 Beta 2 ；编译器，靠你了！使","sections":[{"heading":"Can't install any apps on my new iPhone 16 Pro with iOS 18 from Xcode","url":"https://forums.developer.apple.com/forums/thread/764196?answerId=804884022#804884022"},{"heading":"编译器，靠你了！使用类型改善状态设计","url":"https://onevcat.com/2024/11/type-as-state/","recommender":"Kyle-Ye"},{"heading":"MainActor usage in Swift explained to dispatch to the main thread","url":"https://www.avanderlee.com/swift/mainactor-dispatch-main-thread/","recommender":"AidenRao"},{"heading":"Flutter vs. Kotlin Multiplatform: Which Should You Choose for Cross-Platform Development?","url":"https://medium.com/@rushabhprajapati20/flutter-vs-kotlin-multiplatform-which-should-you-choose-for-cross-platform-development-4bcf28358918","recommender":"Crazy"},{"heading":"Flutter 小技巧之 OverlayPortal 实现自限性和可共享的页面图层","url":"https://mp.weixin.qq.com/s/LW3bASRhA_HL6pS27qUVMA","recommender":"CrazyCoderShi"},{"heading":"Integrating Live Activity and Dynamic Island in iOS: A Complete Guide","url":"https://canopas.com/integrating-live-activity-and-dynamic-island-in-i-os-a-complete-guide","recommender":"Barney"},{"heading":"Swift Format in Xcode","url":"https://troz.net/post/2024/swift_format/","recommender":"DylanYang"}]},{"id":"r-312-2024-11-18","type":"report","title":"老司机 iOS 周报 #312 | 2024-11-18","issue":312,"date":"2024-11-18","year":2024,"path":"Reports/2024/#312-2024.11.18.md","url":"Reports/2024/%23312-2024.11.18.md","excerpt":"We're forking Flutter. This is why.：Flutter 社区在 Flutter 基金会的支持下，启动了名为 \"Flock\" 的 Flutter 新分支。此举是由于 Google 在处理桌面应用支持等方面的政策使一部分开发者感到不满，认为其发展速度和开放性不足。\"Flock\" 分支希望通过更加民主和包容的社区驱动模式，更；A memory leak in Apple's Network Extension ","sections":[{"heading":"We're forking Flutter. This is why.","url":"https://getflocked.dev/blog/posts/we-are-forking-flutter-this-is-why/","recommender":"极速男孩"},{"heading":"A memory leak in Apple's Network Extension framework","url":"https://obdev.at/blog/a-memory-leak-in-apples-network-extension-framework/"},{"heading":"案例研究：设计出色的 visionOS App","url":"https://developer.apple.com/events/view/GV4QHX6VBJ/dashboard"},{"heading":"Xcode stops fetching Swift packages","url":"https://danielsaidi.com/blog/2024/11/04/xcode-stops-fetching-swift-packages","recommender":"Smallfly"},{"heading":"逆流而上的设计 - Swift 所有权和 ~Copyable","url":"https://onevcat.com/2024/11/noncopyable/","recommender":"zoeGuo"},{"heading":"THREADS IOS PERFORMANCE","url":"https://atscaleconference.com/threads-ios-performance/","recommender":"DylanYang"},{"heading":"screenshot-to-code","url":"https://github.com/abi/screenshot-to-code","recommender":"EyreFree"},{"heading":"SwiftConnection Videos, Material and Transcript","url":"https://async.techconnection.io/frenchkit","recommender":"Barney"}]},{"id":"r-311-2024-11-11","type":"report","title":"老司机 iOS 周报 #311 | 2024-11-11","issue":311,"date":"2024-11-11","year":2024,"path":"Reports/2024/#311-2024.11.11.md","url":"Reports/2024/%23311-2024.11.11.md","excerpt":"Migrating Combine to AsyncAlgorithms：Swift Concurrency 发布以来，其设计在许多简单用例上大大超越了 Combine，而在 AsyncAlgorithms 发布之后，Combine 中的许多功能在 Swift Concurrency 中都可以使用。本文以一个示例项目为例，逐步演示了将 Combine ；Expanding SwiftUI capabilities in Nutrient","sections":[{"heading":"Migrating Combine to AsyncAlgorithms","url":"https://blog.jacobstechtavern.com/p/migrating-combine-to-asyncalgorithms","recommender":"zoeGuo"},{"heading":"Expanding SwiftUI capabilities in Nutrient: Customizable main toolbar","url":"https://www.nutrient.io/blog/swiftui-main-toolbar/","recommender":"Barney"},{"heading":"Faster iOS Networking with Shared Dictionary Compression","url":"https://eisel.me/shared-dictionary-compression","recommender":"JonyFang"},{"heading":"GitHub Copilot 官方发布 Xcode 插件","url":"https://github.blog/changelog/2024-10-29-github-copilot-code-completion-in-xcode-is-now-available-in-public-preview/","recommender":"kemchenj"},{"heading":"Metal-Puzzles","url":"https://github.com/abeleinin/Metal-Puzzles","recommender":"BluesJiang"}]},{"id":"r-310-2024-11-04","type":"report","title":"老司机 iOS 周报 #310 | 2024-11-04","issue":310,"date":"2024-11-04","year":2024,"path":"Reports/2024/#310-2024.11.04.md","url":"Reports/2024/%23310-2024.11.04.md","excerpt":"TestFlight 增强功能助你吸引测试员：TestFlight 分发功能迎来了加强，新增对测试员的招募标准，例如指定 OS 版本，方便在在 1w 的名额内，尽可能按 app 实际要求暴露问题，例如鼓励低 OS 的用户加入测试。同时还提供了公开链接的转化情况看板等新功能。总体是一次满足开发者们痛点的更新。；How to build a Safari extension with SwiftUI：Polpiella 在博客中分享了如何使","sections":[{"heading":"TestFlight 增强功能助你吸引测试员","url":"https://developer.apple.com/cn/news/?id=fps422ld"},{"heading":"How to build a Safari extension with SwiftUI","url":"https://www.polpiella.dev/safari-extensions-swiftui/","recommender":"Barney"},{"heading":"Phase Animator Behavior","url":"https://chris.eidhof.nl/post/phase-animator/","recommender":"AidenRao"},{"heading":"Swift Macro 在业务开发中的探索与实践","url":"https://juejin.cn/post/7428200842229055529","recommender":"JonyFang"},{"heading":"App development on iPad","url":"https://mutatingfunc.github.io/blog/2024-10-12-app-development-on-ipad/","recommender":"Kyle-Ye"},{"heading":"Vapor and Swift Testing: Running tests in parallel","url":"https://www.avanderlee.com/swift-testing/vapor-and-swift-testing-running-tests-in-parallel/","recommender":"Smallfly"},{"heading":"Reminder: Apple Watches use 32 bit pointers","url":"https://jeffverkoeyen.com/blog/2024/10/02/arm64_32-PSA/","recommender":"极速男孩"},{"heading":"Flutter Color 大调整，需适配迁移，颜色不再是 0-255，而是 0-1.0，支持更大色域","url":"https://mp.weixin.qq.com/s/imRQnDJgHTdrcuD5rYQApg","recommender":"Crazy"}]},{"id":"r-309-2024-10-28","type":"report","title":"老司机 iOS 周报 #309 | 2024-10-28","issue":309,"date":"2024-10-28","year":2024,"path":"Reports/2024/#309-2024.10.28.md","url":"Reports/2024/%23309-2024.10.28.md","excerpt":"New requirement for app updates in the European Union：自 2024 年 10 月 17 日起（已经生效），在欧盟地区上架的 app 需要提供交易商身份信息，之后才能提交 app 。如果一直不提供交易商信息，则 app 会在 2025 年 2 月 17 日被下架。详见：填写说明。；Apple Push Notification service server certificate up","sections":[{"heading":"New requirement for app updates in the European Union","url":"https://developer.apple.com/news/?id=yfacfeal"},{"heading":"Apple Push Notification service server certificate update","url":"https://developer.apple.com/news/?id=09za8wzy","recommender":"这是一则前置通知"},{"heading":"Elite Hoops Year One: 12 Bite-Sized Lessons","url":"https://www.swiftjectivec.com/elite-hoops-gaining-users-as-an-indie-app-with-paid-ads-and-lessons-learned/","recommender":"CrazyCoderShi"},{"heading":"swiftlang/swift-java","url":"https://github.com/swiftlang/swift-java","recommender":"Barney"},{"heading":"直接使用 xcodebuild 比 Xcode 慢的原因分析","url":"https://github.com/wojciech-kulik/xcodebuild.nvim/issues/201#issuecomment-2423828065","recommender":"Cooper Chen"},{"heading":"The Memory Leak: An Xcode Detective Story","url":"https://www.emergetools.com/blog/posts/the-memory-leak-an-xcode-detective-story","recommender":"莲叔"},{"heading":"Beware UserDefaults: a tale of hard to find bugs, and lost data","url":"https://christianselig.com/2024/10/beware-userdefaults/","recommender":"xiaofei86"},{"heading":"MoveMe - SwiftUI Edition","url":"https://whackylabs.com/swift/swiftui/ios/animation/2024/09/12/moveme-swiftui-edition/","recommender":"AidenRao"},{"heading":"So how does this whole @preconcurrency thing work?","url":"https://www.massicotte.org/preconcurrency","recommender":"DylanYang"},{"heading":"ProtobufKit","url":"https://github.com/OpenSwiftUIProject/ProtobufKit","recommender":"kemchenj"}]},{"id":"r-308-2024-10-21","type":"report","title":"老司机 iOS 周报 #308 | 2024-10-21","issue":308,"date":"2024-10-21","year":2024,"path":"Reports/2024/#308-2024.10.21.md","url":"Reports/2024/%23308-2024.10.21.md","excerpt":"Xcode 16 + withCheckedContinuation 崩溃：如果你的 App 在近期适配了 iOS 18 SDK 并切换到了 Xcode 16 打包，在 App 崩溃监控可能会发现部分 withCheckedContinuation 崩溃。；二刷 iOS 性能与编译，简单点说：这篇文章是性能和编译相关的优质好文，文章内容覆盖了卡顿、内存、IO、CPU、启动、Bazel、构建等多个领域，每个领域下通过实践中遇到的问题展开，","sections":[{"heading":"Xcode 16 + withCheckedContinuation 崩溃","url":null,"recommender":"Kyle-Ye"},{"heading":"二刷 iOS 性能与编译，简单点说","url":"https://mp.weixin.qq.com/s/X96VdTsskmNVCoqMzZjbgg","recommender":"Leo"},{"heading":"AVAudioEffectNode: painless low level audio effects written in Swift","url":"https://orjpap.github.io/swift/low-level/audio/avfoundation/2024/09/19/avAudioEffectNode.html","recommender":"Smallfly"},{"heading":"Copy On Write and the Swift-CowBox Macro","url":"https://swifttoolkit.dev/posts/copy-on-write-cowbox","recommender":"Kyle-Ye"},{"heading":"Security-scoped bookmarks for URL access","url":"https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access/","recommender":"水水"},{"heading":"Discover 3 new features of Xcode 16","url":"https://www.swiftwithvincent.com/blog/discover-3-new-features-of-xcode-16","recommender":"zoeGuo"},{"heading":"Are Android apps THAT much smaller than iOS?","url":"https://www.emergetools.com/blog/posts/are-android-apps-really-that-much-smaller-than-ios","recommender":"Crazy"},{"heading":"SwiftCraft 2024","url":"https://www.youtube.com/playlist?list=PLugrLwuQvERqB4Kj8GOPwCnUMOLxJ0Ny9","recommender":"Damien"},{"heading":"apple-knowledge","url":"https://github.com/hack-different/apple-knowledge","recommender":"含笑饮砒霜"}]},{"id":"r-307-2024-09-30","type":"report","title":"老司机 iOS 周报 #307 | 2024-09-30","issue":307,"date":"2024-09-30","year":2024,"path":"Reports/2024/#307-2024.09.30.md","url":"Reports/2024/%23307-2024.09.30.md","excerpt":"在 Swift 中如何正确传递 Unsafe Pointers 参数：文章总结了作者在抖音推动规模化落地 Swift 组件中发现的一些常见 Unsafe Pointers 问题。通过具体的工程例子和编译器代码分析给出了具体原因。；为超越 JVM 而生？深入理解 Kotlin Native 的梦想与可能：Kotlin Native 是 Kotlin 多平台生态的关键一环。本文依据 Kotlin Native 的源码，结合作者在运用 Kot","sections":[{"heading":"在 Swift 中如何正确传递 Unsafe Pointers 参数","url":"https://mp.weixin.qq.com/s/xDeZ6zM7-6RfPXrs5kCqWw","recommender":"Kyle-Ye"},{"heading":"为超越 JVM 而生？深入理解 Kotlin Native 的梦想与可能","url":"https://mp.weixin.qq.com/s/oo7YTnW4oL1xq17cNPGhnw","recommender":"JonyFang"},{"heading":"Freeing disk space on GitHub Actions runners","url":"https://www.dzombak.com/blog/2024/09/Freeing-disk-space-on-GitHub-Actions-runners.html","recommender":"J_Knight_"},{"heading":"SwiftData: Solving Fatal Errors and EXC_BAD_ACCESS While Handling Entities on Different Threads","url":"https://www.simplykyra.com/blog/swiftdata-solving-fatal-errors-and-exc_bad_access-while-handling-entities-on-different-threads/","recommender":"AidenRao"},{"heading":"Point-Free is Xcode 16 ready","url":"https://www.pointfree.co/blog/posts/152-point-free-is-xcode-16-ready","recommender":"极速男孩"},{"heading":"ChatMLX","url":"https://github.com/maiqingqiang/ChatMLX","recommender":"EyreFree"},{"heading":"VisionOS 30 天学习计划","url":"https://github.com/satoshi0212/visionOS_30Days","recommender":"BluesJiang"}]},{"id":"r-306-2024-09-23","type":"report","title":"老司机 iOS 周报 #306 | 2024-09-23","issue":306,"date":"2024-09-23","year":2024,"path":"Reports/2024/#306-2024.09.23.md","url":"Reports/2024/%23306-2024.09.23.md","excerpt":"Xcode Folders & Groups：Xcode 15 到 Xcode 16 有不少变化，本文就 Folders & Groups 相关变化做了一些比较，比如 : 添加文件，创建 Group 等；最终作者也给出了一些总结性的建议，如果有不习惯新组织形式的小伙伴依然可以保持 15 时候的形式.；COW2LLVM: The isKnownUniquelyReferenced Deep-Dive：Swift 编译器中的 copy-on","sections":[{"heading":"Xcode Folders & Groups","url":"https://troz.net/post/2024/xcode_folders_groups/","recommender":"CrazyCoderShi"},{"heading":"COW2LLVM: The isKnownUniquelyReferenced Deep-Dive","url":"https://jacobbartlett.substack.com/p/cow2llvm-the-isknownuniquelyreferenced","recommender":"Cooper Chen"},{"heading":"SwiftUI's Observable macro is not a drop-in replacement for ObservableObject","url":"https://www.jessesquires.com/blog/2024/09/09/swift-observable-macro/","recommender":"Barney"},{"heading":"我是怎么做个人知识管理（PKM）的","url":"https://starming.com/2024/09/12/my-pkm/","recommender":"含笑饮砒霜"},{"heading":"swift-export","url":"https://swiftpackageindex.com/franklefebvre/swift-export","recommender":"Smallfly"},{"heading":"HandVector 2.0 版本更新","url":"https://juejin.cn/post/7408086889591390262","recommender":"BluesJiang"},{"heading":"Hummingbird 2","url":"https://forums.swift.org/t/hummingbird-2/74535","recommender":"DylanYang"}]},{"id":"r-305-2024-09-09","type":"report","title":"老司机 iOS 周报 #305 | 2024-09-09","issue":305,"date":"2024-09-09","year":2024,"path":"Reports/2024/#305-2024.09.09.md","url":"Reports/2024/%23305-2024.09.09.md","excerpt":"WWDC24 10151 - SwiftUI 过渡效果篇：本文将介绍 SwiftUI 实现过渡效果的两种方式：AnyTransition 和 Transition。并逐步剖析自定义 SwiftUI 过渡效果的步骤和注意事项，最后通过多个示例展示视觉、着色器、颜色、文字、滚动和导航等不同类型过渡效果的应用，旨在启发读者创建令人印象深刻的过；Backport SwiftUI modifiers：SwiftUI 每年都会更新新的修饰符，但我们","sections":[{"heading":"WWDC24 10151 - SwiftUI 过渡效果篇","url":"https://xiaozhuanlan.com/topic/8321460975","recommender":"zdd"},{"heading":"Backport SwiftUI modifiers","url":"https://alejandromp.com/development/blog/backport-swiftui-modifiers/","recommender":"AidenRao"},{"heading":"抄 Apple Intelligence 作业的思路","url":"https://juejin.cn/post/7407385581079396389","recommender":"Cooper Chen"},{"heading":"Dogfooding Emerge Tools: Open-sourcing an Android Hacker News App","url":"https://www.emergetools.com/blog/posts/open-sourcing-emerge-tools-hackernews-app","recommender":"Crazy"},{"heading":"Cross-Platform Swift: View Paradigms","url":"https://www.pointfree.co/episodes/ep290-cross-platform-swift-view-paradigms","recommender":"Kyle-Ye"}]},{"id":"r-304-2024-09-02","type":"report","title":"老司机 iOS 周报 #304 | 2024-09-02","issue":304,"date":"2024-09-02","year":2024,"path":"Reports/2024/#304-2024.09.02.md","url":"Reports/2024/%23304-2024.09.02.md","excerpt":"JSON Parsing in Swift explained with code examples：解析 JSON 是我们在编码中常处理的问题，文章介绍了在 Swift 编码中不使用外部依赖解析 JSON。作者示例说明了如何使用 协议来轻松解码 JSON，如何通过自定义映射将 JSON 关键字映射到 Swift 属性名，以及如何转换驼峰命名法和蛇形命名法，示例了如何使用自定义日；SwiftUI for Mac 2024：这篇文章列举了","sections":[{"heading":"JSON Parsing in Swift explained with code examples","url":"https://www.avanderlee.com/swift/json-parsing-decoding/","recommender":"zoeGuo"},{"heading":"SwiftUI for Mac 2024","url":"https://troz.net/post/2024/swiftui-mac-2024/","recommender":"水水"},{"heading":"Flutter Web 正式官宣弃用 HTML renderer ， Canvas 路线成为唯一","url":"https://mp.weixin.qq.com/s/FdRMQGcZU5BDOI2N0EksiQ","recommender":"CrazyCoderShi"},{"heading":"Investigating a Dynamic Linking Crash with Xcode 16","url":"https://pspdfkit.com/blog/2024/dynamic-linking-crash-xcode-16/","recommender":"Smallfly"},{"heading":"Swift Build Times and Module Verification …","url":"https://pfandrade.me/blog/swift-build-times-and-module-verification/","recommender":"Cooper Chen"},{"heading":"JavaScript to Swift and back: Bridging location services in WKWebView","url":"https://swiftlybald.com/javascript-to-swift-and-back-bridging-location-services-in-wkwebview/","recommender":"AidenRao"},{"heading":"Send data Between iOS Apps and Extensions Using Darwin Notifications","url":"https://ohmyswift.com/blog/2024/08/27/send-data-between-ios-apps-and-extensions-using-darwin-notifications/","recommender":"DylanYang"}]},{"id":"r-303-2024-08-26","type":"report","title":"老司机 iOS 周报 #303 | 2024-08-26","issue":303,"date":"2024-08-26","year":2024,"path":"Reports/2024/#303-2024.08.26.md","url":"Reports/2024/%23303-2024.08.26.md","excerpt":"CocoaPods 官宣进入维护模式：CocoaPods 的生命走入倒计时，后续将在某个时间节点将 Specs repo 设置为 read-only，一个时代结束了。感谢开源社区的作者们提供了这么好用的依赖工具。对于国内的开发者来说，在 SPM 能满足大家需求前，可以考虑在内网建立私有 Specs repo 以及定制；WWDC24 10173 - Analyze Heap Memory：新手级的 iOS 内存分析入门文章，通过学习 Me","sections":[{"heading":"CocoaPods 官宣进入维护模式","url":"https://blog.cocoapods.org/CocoaPods-Support-Plans/"},{"heading":"WWDC24 10173 - Analyze Heap Memory","url":"https://xiaozhuanlan.com/topic/9307481265","recommender":"iPhreetom"},{"heading":"Reminder: Conditional Breakpoints are Slow","url":"https://twocentstudios.com/2024/08/08/conditional-breakpoints/","recommender":"水水"},{"heading":"Issue with AVAsset access in iOS 18 beta | Apple Developer Forums","url":"https://forums.developer.apple.com/forums/thread/758691","recommender":"Barney"},{"heading":"How to automatically detect memory leaks on CI/CD using UI tests","url":"https://www.polpiella.dev/automatically-detect-memory-leaks-using-ui-tests/","recommender":"莲叔"},{"heading":"swift-translate","url":"https://github.com/hidden-spectrum/swift-translate","recommender":"DylanYang"}]},{"id":"r-302-2024-08-19","type":"report","title":"老司机 iOS 周报 #302 | 2024-08-19","issue":302,"date":"2024-08-19","year":2024,"path":"Reports/2024/#302-2024.08.19.md","url":"Reports/2024/%23302-2024.08.19.md","excerpt":"NFC & SE Platform for Secure Contactless Transactions - Support - Apple Developer：苹果即将在 iOS 18.1 中引入 NFC & SE 平台，让开发者能在 iOS 应用中实现安全便捷的无接触支付等功能。开发者得先跟苹果签个协议，确保他们遵守行业规则和保护用户隐私。新系统要求 iPhone XS 或更新机型，运行 iOS 18.1 或更高版本。；WWDC2","sections":[{"heading":"NFC & SE Platform for Secure Contactless Transactions - Support - Apple Developer","url":"https://developer.apple.com/support/nfc-se-platform/","recommender":"Barney"},{"heading":"WWDC24 10125 - 自动化创建 Passkey 和全新密码 App 帮助简化登录流程，并提升安全性","url":"https://xiaozhuanlan.com/topic/6145027938","recommender":"米广"},{"heading":"WWDC24 10100 - ARKit 新功能介绍","url":"https://xiaozhuanlan.com/topic/1830462795","recommender":"lijingpei"},{"heading":"Swift Navigation: Powerful navigation tools for all Swift platforms","url":"https://www.pointfree.co/blog/posts/149-swift-navigation-powerful-navigation-tools-for-all-swift-platforms","recommender":"DylanYang"},{"heading":"Non-Sendable types are cool too you know","url":"https://www.massicotte.org/non-sendable","recommender":"zoeGuo"},{"heading":"Diffuse reflection UV computation tool","url":"https://www.elkraneo.com/diffuse-reflection-uv-computation-tool/","recommender":"BluesJiang"},{"heading":"Exploring OpenAI: Creating a Proxy with AIProxy for iOS and macOS Apps","url":"https://www.rudrank.com/exploring-openai-creating-a-proxy-with-aiproxy/","recommender":"EyreFree"},{"heading":"Concurrency Step-by-Step: A Network Request","url":"https://www.massicotte.org/step-by-step-network-request","recommender":"Smallfly"},{"heading":"Migrating KeyboardKit to Swift 6 language mode","url":"https://douglashill.co/keyboardkit-swift-6/","recommender":"AidenRao"}]},{"id":"r-301-2024-08-12","type":"report","title":"老司机 iOS 周报 #301 | 2024-08-12","issue":301,"date":"2024-08-12","year":2024,"path":"Reports/2024/#301-2024.08.12.md","url":"Reports/2024/%23301-2024.08.12.md","excerpt":"WWDC24 10177 - 用 HDR 图片点亮你的 App：本文首先简要阐述了 HDR 相关的基本概念，例如 reference white、headroom 以及 tone mapping，然后回顾了苹果以往建立的 HDR 标准以及 HDR 渲染技术，最后重点介绍了今年新推出的 Adaptive HDR 标准以及在该标准下，如何对 HD；WWDC24 10073 - 提升 SwiftUI 的可访问性体验：深入了解 SwiftUI ","sections":[{"heading":"WWDC24 10177 - 用 HDR 图片点亮你的 App","url":"https://xiaozhuanlan.com/topic/3465798021","recommender":"陈震昊"},{"heading":"WWDC24 10073 - 提升 SwiftUI 的可访问性体验","url":"https://xiaozhuanlan.com/topic/7683249501","recommender":"Jason"},{"heading":"‘ You are a helpful mail assistant, ’ and other Apple Intelligence instructions","url":"https://www.theverge.com/2024/8/5/24213861/apple-intelligence-instructions-macos-15-1-sequoia-beta","recommender":"含笑饮砒霜"},{"heading":"SwiftUI app lifecycle: issues with ScenePhase and using AppDelegate adaptors","url":"https://www.jessesquires.com/blog/2024/06/29/swiftui-scene-phase/","recommender":"Barney"},{"heading":"Swift Protocol 背后的故事(理论)","url":"https://zxfcumtcs.github.io/2022/02/04/SwiftProtocol2/","recommender":"DylanYang"},{"heading":"轻踩一下就崩溃吗——踩内存案例分析","url":"https://mp.weixin.qq.com/s/9OCFb2cH-H5zbaIT5VAS9w","recommender":"Cooper Chen"},{"heading":"Zoom transitions","url":"https://douglashill.co/zoom-transitions/","recommender":"极速男孩"},{"heading":"Cursor: The AI Code Editor","url":"https://www.cursor.com/","recommender":"kemchenj"},{"heading":"Embedded Swift Tutorial - Getting Started (Everything you need to know)","url":"https://blog.supereasyapps.com/embedded-swift-tutorial-getting-started-everything-you-need-to-know/","recommender":"Kyle-Ye"}]},{"id":"r-300-2024-08-05","type":"report","title":"老司机 iOS 周报 #300 | 2024-08-05","issue":300,"date":"2024-08-05","year":2024,"path":"Reports/2024/#300-2024.08.05.md","url":"Reports/2024/%23300-2024.08.05.md","excerpt":"WWDC24 10162 - 多次拍摄保持色彩一致：色彩一致性是人类视觉感知的一个特性，看苹果如何软硬件结合，在拍摄上重现该“生理”特性。；WWDC24 10149 - 在 SwiftUI 中设计窗口：Window（窗口） 是承载 App 内容的最重要的容器，尤其是在 macOS 和 VisionOS 平台上更是需要优雅地设计和使用窗口。本文将介绍 Windows 组件，并且基于一个 Demo（BOT-anist）从实战角度进行教学。；","sections":[{"heading":"WWDC24 10162 - 多次拍摄保持色彩一致","url":"https://xiaozhuanlan.com/topic/5093124687","recommender":"bqlin"},{"heading":"WWDC24 10149 - 在 SwiftUI 中设计窗口","url":"https://xiaozhuanlan.com/topic/9328564107","recommender":"Rickey"},{"heading":"Xcode-Kotlin 2.0 Release","url":"https://touchlab.co/xcode-kotlin-2-0","recommender":"Crazy"},{"heading":"Async await in Swift: The Full Toolkit","url":"https://www.emergetools.com/blog/posts/swift-async-await-the-full-toolkit","recommender":"AidenRao"},{"heading":"Building Swift Executables","url":"https://swifttoolkit.dev/posts/building-swift-executables","recommender":"Kyle-Ye"},{"heading":"Swift 6 适配的一些体会以及对现状的小吐槽","url":"https://onevcat.com/2024/07/swift-6/","recommender":"含笑饮砒霜"},{"heading":"结合实例深入理解 C++ 对象的内存布局","url":"https://mp.weixin.qq.com/s/pzvI1AEUoz6uWdjlBI2xSQ","recommender":"老驴"},{"heading":"swift-issue-reporting","url":"https://github.com/pointfreeco/swift-issue-reporting/tree/main","recommender":"Damien"}]},{"id":"r-299-2024-07-29","type":"report","title":"老司机 iOS 周报 #299 | 2024-07-29","issue":299,"date":"2024-07-29","year":2024,"path":"Reports/2024/#299-2024.07.29.md","url":"Reports/2024/%23299-2024.07.29.md","excerpt":"WWDC24 10146 - 为自定义容器视图添加更多的能力：该文章介绍了 SwiftUI 新添加的一些用于操控 Subview 的 API。这些 API 令 SwfitUI 的操控 UI 的能力大大增强，让我们可以给自定义容器添加更多灵活性和更强大的能力。；WWDC24 10198 运行、暂停、检查：探索如何使用 LLDB 进行有效调试：本文以 WWDC24-10198 为主线，综合了 WWDC19-24 期间多个和调试主题相关的 S","sections":[{"heading":"WWDC24 10146 - 为自定义容器视图添加更多的能力","url":"https://xiaozhuanlan.com/topic/9032587461","recommender":"whf881211"},{"heading":"WWDC24 10198 运行、暂停、检查：探索如何使用 LLDB 进行有效调试","url":"https://xiaozhuanlan.com/topic/0854921673","recommender":"haochen08"},{"heading":"SwiftUI Hero Animations with NavigationTransition","url":"https://peterfriese.dev/blog/2024/hero-animation/","recommender":"xiaofei86"},{"heading":"Memory consumption when loading UIImage from disk","url":"https://www.avanderlee.com/swiftui/memory-consumption-loading-uiimage-from-disk/","recommender":"含笑饮砒霜"},{"heading":"Exploring SwiftUI: Make SF Symbols Wiggle Wiggle","url":"https://www.rudrank.com/exploring-swiftui-make-sf-symbols-wiggle/","recommender":"Smallfly"},{"heading":"Using SwiftUI in Command Line Tools","url":"https://swifttoolkit.dev/posts/swiftui-meets-command-line","recommender":"Damien"},{"heading":"Enable XcodeLLM on ChinaSKU Mac without disabling SIP","url":"https://github.com/Kyle-Ye/XcodeLLMEligible","recommender":"Kyle-Ye"},{"heading":"Charts","url":"https://github.com/ChartsOrg/Charts","recommender":"水水"}]},{"id":"r-298-2024-07-22","type":"report","title":"老司机 iOS 周报 #298 | 2024-07-22","issue":298,"date":"2024-07-22","year":2024,"path":"Reports/2024/#298-2024.07.22.md","url":"Reports/2024/%23298-2024.07.22.md","excerpt":"WWDC24 10104 - 使用 RealityKit 构建空间绘画 App：RealityKit 是 visionOS 应用空间功能的基础。我们将以空间绘画 App 为例，探索资源在 RealityKit 中的运作方式，通过构建自定义网格、纹理和着色器、使用低级别网格和纹理 API 等，实现精致的视觉设计。；WWDC24 10074 - 动态字体体验入门：使用动态字体功能实现一个演示 App，对比 SwiftUI 与 UIKit 在","sections":[{"heading":"WWDC24 10104 - 使用 RealityKit 构建空间绘画 App","url":"https://xiaozhuanlan.com/topic/9421058376","recommender":"Layer"},{"heading":"WWDC24 10074 - 动态字体体验入门","url":"https://xiaozhuanlan.com/topic/6789542301","recommender":"nuomi1"},{"heading":"WWDC24 10118 - UIKit 新功能","url":"https://xiaozhuanlan.com/topic/0679358421","recommender":"Sharker"},{"heading":"Blend Modes in SwiftUI","url":"https://digitalbunker.dev/blend-modes-in-swiftui/","recommender":"Smallfly"},{"heading":"Mastering Animatable and AnimatablePair in SwiftUI","url":"https://digitalbunker.dev/mastering-animatable-and-animatablepair-swiftui/","recommender":"水水"},{"heading":"Introducing Entry macro in SwiftUI","url":"https://swiftwithmajid.com/2024/07/09/introducing-entry-macro-in-swiftui/","recommender":"EyreFree"},{"heading":"Create Custom SF Symbols in Sketch","url":"https://www.danijelavrzan.com/posts/2024/06/create-custom-sf-symbols/","recommender":"zoeGuo"},{"heading":"Charts","url":"https://github.com/ChartsOrg/Charts","recommender":"极速男孩"}]},{"id":"r-297-2024-07-15","type":"report","title":"老司机 iOS 周报 #297 | 2024-07-15","issue":297,"date":"2024-07-15","year":2024,"path":"Reports/2024/#297-2024.07.15.md","url":"Reports/2024/%23297-2024.07.15.md","excerpt":"WWDC24 10135 - What's new in Xcode 16：和往年一样，今年 Xcode 也迎来了全新版本，Session 10135 从 ， ， ， ， 几个方面非常简短地讲述了更新的内容，文章针对这些重点特性分别进行了 Session 内容的翻译和部分必要的补充，尽力保证读者都可以对其有清楚的认识和理解；然后从 Xcode Relea；WWDC24 10188 - SF Symbols 6 使用指南：为了更方便没有 ","sections":[{"heading":"WWDC24 10135 - What's new in Xcode 16","url":"https://xiaozhuanlan.com/topic/3658412079","recommender":"Yuanxu Han"},{"heading":"WWDC24 10188 - SF Symbols 6 使用指南","url":"https://xiaozhuanlan.com/topic/3691085724","recommender":"Mim0sa"},{"heading":"The State Of Meridian","url":"https://khanlou.com/2024/06/the-state-of-meridian/","recommender":"Kyle-Ye"},{"heading":"Swift Testing support for SnapshotTesting","url":"https://www.pointfree.co/blog/posts/146-swift-testing-support-for-snapshottesting","recommender":"Smallfly"},{"heading":"Using TextRenderer to create highlighted text","url":"https://alexanderweiss.dev/blog/2024-06-24-using-textrenderer-to-create-highlighted-text","recommender":"AidenRao"},{"heading":"ImHex","url":"https://github.com/WerWolv/ImHex","recommender":"EyreFree"},{"heading":"StreamUI","url":"https://github.com/StreamUI/StreamUI","recommender":"Damien"}]},{"id":"r-296-2024-07-08","type":"report","title":"老司机 iOS 周报 #296 | 2024-07-08","issue":296,"date":"2024-07-08","year":2024,"path":"Reports/2024/#296-2024.07.08.md","url":"Reports/2024/%23296-2024.07.08.md","excerpt":"WWDC24 10144 - What's New in SwiftUI：SwiftUI 作为苹果在 2019 年发布的跨平台框架至今，经过多年的版本更新、优化迭代，已经相对成熟。国外已经有部分公司已经开始使用 SwiftUI 进行商业化开发了，对已有 app 进行重构和更新和新 app 的从 0 开发。国内目前因大量用户的 iOS 版本还停留在较早版；WWDC24 10136 - Swift 的新功能：文章简要回顾 Swift 过去十","sections":[{"heading":"WWDC24 10144 - What's New in SwiftUI","url":"https://xiaozhuanlan.com/topic/5931472806","recommender":"WBear"},{"heading":"WWDC24 10136 - Swift 的新功能","url":"https://xiaozhuanlan.com/topic/2470951386","recommender":"bq"},{"heading":"Async await in Swift explained with code examples","url":"https://www.avanderlee.com/swift/async-await/","recommender":"zoeGuo"},{"heading":"Flutter 架构设计：MVVM + Repository","url":"https://mp.weixin.qq.com/s/pEQmf9LjhpsHQ7SOe33IPg   ","recommender":"极速男孩"},{"heading":"Plotting a Path to a Package Ecosystem without Data Race Errors","url":"https://www.swift.org/blog/ready-for-swift-6/","recommender":"Damien"},{"heading":"普通 iOS 开发者的第一款 Harmony Next 应用","url":"https://mp.weixin.qq.com/s/KjydTcbUQAafB6zFIi7yDw","recommender":"Crazy"},{"heading":"Generative AI for beginners","url":"https://github.com/microsoft/generative-ai-for-beginners","recommender":"JonyFang"},{"heading":"AutoCorrect","url":"https://github.com/huacnlee/autocorrect","recommender":"Smallfly"},{"heading":"WhisperKit","url":"https://github.com/argmaxinc/WhisperKit/","recommender":"DylanYang"}]},{"id":"r-295-2024-07-01","type":"report","title":"老司机 iOS 周报 #295 | 2024-07-01","issue":295,"date":"2024-07-01","year":2024,"path":"Reports/2024/#295-2024.07.01.md","url":"Reports/2024/%23295-2024.07.01.md","excerpt":"WWDC24 10195 - Go further with Swift Testing：Swift Testing 是 Swift 团队推出的一个全新的测试框架，集合了原生、开源、跨平台、高效、易用、IDE 无缝集成等新特性。文章从 0 开始介绍如何使用 Swift Testing ，对比了与 XCTest 的差异，最后对 Swift Testing 以及单元测试的；Flutter 面试八股之深入理解 Dart 异步实现机制：Flut","sections":[{"heading":"WWDC24 10195 - Go further with Swift Testing","url":"https://xiaozhuanlan.com/topic/5946873021","recommender":"Zac"},{"heading":"Flutter 面试八股之深入理解 Dart 异步实现机制","url":"https://mp.weixin.qq.com/s/OTYt2efBQOYuc5ko_PU1iw","recommender":"CrazyCoderShi"},{"heading":"All new frameworks presented at WWDC24","url":"https://marcoeidinger.github.io/appleframeworks/","recommender":"含笑饮砒霜"},{"heading":"Reverse Engineering Photos' New Search UI","url":"https://sebvidal.com/blog/reverse-engineering-photos-search-ui/","recommender":"Damien"},{"heading":"Preparing your App Icon for dark and tinted appearance","url":"https://www.createwithswift.com/preparing-your-app-icon-for-dark-and-tinted-appearance/","recommender":"AidenRao"},{"heading":"SwiftData vs Realm: Performance Comparison","url":"https://www.emergetools.com/blog/posts/swiftdata-vs-realm-performance-comparison/","recommender":"DylanYang"},{"heading":"riffo.ai：AI 文件自动整理工具","url":"https://riffo.ai","recommender":"EyreFree"},{"heading":"Installing macOS Sequoia Beta in a Separate APFS Volume","url":"https://adrian.schoenig.me/blog/2024/06/13/installing-macos-sequoia-in-a-separate-volume/","recommender":"Crazy"},{"heading":"apple/app-store-server-library-swift","url":"https://github.com/apple/app-store-server-library-swift","recommender":"Barney"},{"heading":"below/HelloSilicon","url":"https://github.com/below/HelloSilicon","recommender":"xuyafei86"}]},{"id":"r-294-2024-06-24","type":"report","title":"老司机 iOS 周报 #294 | 2024-06-24","issue":294,"date":"2024-06-24","year":2024,"path":"Reports/2024/#294-2024.06.24.md","url":"Reports/2024/%23294-2024.06.24.md","excerpt":"使用 Swift 6 语言模式构建 Swift 包：Swift 6 带来了许多重要的新特性，如数据隔离和数据竞争安全检查，这些特性有助于编写更安全、更高效的代码。然而，这些新特性并不会自动启用，需要通过 Swift 6 语言模式显式开启。通过下载和安装 Swift 6 工具链，并在命令行或包清单文件中启用 Swift 6 语言模式；Here are 3 advanced tips in Swift：作者在本文中介绍了三个知识点 1. e","sections":[{"heading":"使用 Swift 6 语言模式构建 Swift 包","url":"https://juejin.cn/post/7376444924425011210","recommender":"AidenRao"},{"heading":"Here are 3 advanced tips in Swift","url":"https://www.swiftwithvincent.com/blog/here-are-3-advanced-tips-in-swift/","recommender":"DylanYang"},{"heading":"A preview of our upcoming UIKitNavigation library","url":"https://www.pointfree.co/blog/posts/145-a-preview-of-our-upcoming-uikitnavigation-library","recommender":"Barney"},{"heading":"node-swift: Write NodeJS native modules in Swift","url":"https://github.com/kabiroberai/node-swift","recommender":"EyreFree"},{"heading":"Getting started with Swift Testing","url":"https://www.polpiella.dev/swift-testing","recommender":"Smallfly"},{"heading":"Environment & Preference Updates","url":"https://talk.objc.io/episodes/S01E409-environment-preference-updates?t=63","recommender":"水水"},{"heading":"Enable XcodeLLM for ChinaSKU Mac on macOS 15 Beta 1","url":"https://gist.github.com/Kyle-Ye/4ad1aa92df3a31bd812487af65e16947","recommender":"Kyle-Ye"},{"heading":"分析 XPC 通信的图形界面","url":"https://github.com/chichou/XpcScope","recommender":"Damien"},{"heading":"So You Think You Know Git Part 2 - DevWorld 2024","url":"https://www.youtube.com/watch?v=Md44rcw13k4","recommender":"BluesJiang"}]},{"id":"r-293-2024-06-17","type":"report","title":"老司机 iOS 周报 #293 | 2024-06-17","issue":293,"date":"2024-06-17","year":2024,"path":"Reports/2024/#293-2024.06.17.md","url":"Reports/2024/%23293-2024.06.17.md","excerpt":"Bad practice: not using a ButtonStyle：本文介绍了一些不使用 ButtonStyle 的 bad case，一篇关于 SwiftUI ButtonStyle 的入门科普。；QQ 客户端性能稳定性防劣化系统 Hodor 技术方案：手 Q 的防劣化系统命名为 Hodor 系统，从 2021 年 10 月开始研发，历时近三年迭代至今。系统涉及验证闭环、群控机架搭建等复杂过程，包含不少行业内独创方案。与厂商合","sections":[{"heading":"Bad practice: not using a ButtonStyle","url":"https://www.swiftwithvincent.com/blog/bad-practice-not-using-a-buttonstyle","recommender":"Kyle-Ye"},{"heading":"QQ 客户端性能稳定性防劣化系统 Hodor 技术方案","url":"https://mp.weixin.qq.com/s/ng_R0s9tAsFCdc2O1JE_Pw","recommender":"JonyFang"},{"heading":"Comparing Swift Compiler Performance on Type Inference Part I Strings, Numbers, Arrays, Dictionaries and Constructables","url":"https://lucasvandongen.dev/compiler_performance.php","recommender":"kemchenj"},{"heading":"iOS 18: Notable UIKit Additions","url":"https://www.swiftjectivec.com/ios-18-notable-uikit-additions","recommender":"Kyle-Ye"},{"heading":"Rust - 性能超越 Kotlin 的跨平台方案","url":"https://mp.weixin.qq.com/s/b8lHRfk5G2yN7pkoURU7CA","recommender":"Smallfly"},{"heading":"o3d","url":"https://mp.weixin.qq.com/s/_EaqpWF-CgCgX0sTkXoHsw","recommender":"Damien"},{"heading":"swift-testing-revolutionary","url":"https://github.com/giginet/swift-testing-revolutionary/","recommender":"DylanYang"},{"heading":"Cocoapods-sled 让 iOS 组件二进制化变得简单","url":"https://juejin.cn/post/7375419781132042267","recommender":"莲叔"}]},{"id":"r-292-2024-06-10","type":"report","title":"老司机 iOS 周报 #292 | 2024-06-10","issue":292,"date":"2024-06-10","year":2024,"path":"Reports/2024/#292-2024.06.10.md","url":"Reports/2024/%23292-2024.06.10.md","excerpt":"【老司机技术出品】 WWDC24 内参目录（更新中）：今年我们如期带来 Session 的汇总，并会在每天推送当天新放出的 Session ，欢迎大家关注更新。；What Does spacing = nil Mean in SwiftUI?：作者通过探讨子视图间不一致的间距问题，深入分析了 spacing 参数的默认值 nil 所代表的含义。作者从“是什么”、“为什么”、“怎么用”的角度，分析了 SwiftUI 中 spacing 的","sections":[{"heading":"【老司机技术出品】 WWDC24 内参目录（更新中）","url":"https://wwdc-reference.feishu.cn/wiki/QsFQwuOgcirBZck2xorcGtwUnKb?table=tblETPZEPEmxZ8gy&view=vewysxfUqf"},{"heading":"What Does spacing = nil Mean in SwiftUI?","url":"https://fatbobman.com/en/posts/spacing-of-swiftui/","recommender":"zoeGuo"},{"heading":"How Do You Know Whether or Not SwiftUI Previews and Preview Content Are Excluded From App Store Builds?","url":"https://jaredsinclair.com/2024/05/20/preview-content.html","recommender":"Kyle-Ye"},{"heading":"Do NOT init State externally in SwiftUI","url":"https://samwize.com/2024/05/08/do-not-init-state-externally-in-swiftui-view/","recommender":"JonyFang"},{"heading":"Swift 集成 KSCrash IOS 崩溃跟踪","url":"https://bin.zmide.com/?p=1220","recommender":"kemchenj"},{"heading":"Boost Performance by Over 100x Using the Accelerate Framework","url":"https://getstream.io/blog/accelerate-framework/","recommender":"BluesJiang"},{"heading":"Designing a Declarative API","url":"https://www.mobilesystemdesign.com/blog/declarative-api-design/","recommender":"DylanYang"},{"heading":"几个在 SwiftUI 中使用惰性容器的技巧和注意事项","url":"https://fatbobman.com/zh/posts/tips-and-considerations-for-using-lazy-containers-in-swiftui/","recommender":"AidenRao"},{"heading":"ZippyFormat","url":"https://github.com/michaeleisel/ZippyFormat","recommender":"EyreFree"}]},{"id":"r-291-2024-06-03","type":"report","title":"老司机 iOS 周报 #291 | 2024-06-03","issue":291,"date":"2024-06-03","year":2024,"path":"Reports/2024/#291-2024.06.03.md","url":"Reports/2024/%23291-2024.06.03.md","excerpt":"深入理解内存分配：内存问题一直是 iOS 平台上最常见的稳定性问题，尤其在以 OC 为主的应用中。我们在排查野指针崩溃的问题时遇到的难点往往是崩溃点和问题点往往不在一起。这篇文章通过分析 iOS 平台内存分配的原理来非常严谨的解释了这个现象的原因，非常值得大家学习。之后作者还提出了一种定制内存分配；Tricking iOS Into Animating App Icons：如何让你的 APP 图标动起来？这是一个很有意思的事情，文本作者","sections":[{"heading":"深入理解内存分配","url":"http://djs66256.github.io/2018/04/04/2018-04-04-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D/","recommender":"莲叔"},{"heading":"Tricking iOS Into Animating App Icons","url":"https://bryce.co/animated-app-icons/#the-problems","recommender":"水水"},{"heading":"Copy on Write Performance Measurements","url":"https://github.com/Swift-CowBox/Swift-CowBox-Sample","recommender":"Kyle-Ye"},{"heading":"Build your next website in Swift","url":"https://www.hackingwithswift.com/articles/266/build-your-next-website-in-swift","recommender":"DylanYang"},{"heading":"Always correct gradient text in UIKit","url":"https://nemecek.be/blog/143/always-correct-gradient-text-in-uikit","recommender":"Barney"},{"heading":"一文搞懂七种基本的 GC 垃圾回收算法","url":"https://mp.weixin.qq.com/s/RSWYSAzpvPJD056vZDQPig","recommender":"Crazy"},{"heading":"WWDC Index","url":"https://nonstrict.eu/wwdcindex/","recommender":"EyreFree"},{"heading":"Developing An Inclusive Mindset","url":"https://david-smith.org/blog/2024/04/22/new-post/","recommender":"享耳先森"}]},{"id":"r-290-2024-05-27","type":"report","title":"老司机 iOS 周报 #290 | 2024-05-27","issue":290,"date":"2024-05-27","year":2024,"path":"Reports/2024/#290-2024.05.27.md","url":"Reports/2024/%23290-2024.05.27.md","excerpt":"Incorrect bundle purchase payments: Fixed!：作者 5 月初发现苹果从 24 年 2 月起，对于应用内包含了 App 套装销售(Offering app bundles) 的 App ，会少给予开发者一份原本 App 的购买费用，即：错误地从 App 套装销售 的购买收益中两次减去了之前购买的应用程序的价格。；探讨跨平台技术与跨平台 UI 框架及 Kotlin Multiplatform 在 bi","sections":[{"heading":"Incorrect bundle purchase payments: Fixed!","url":"https://lapcatsoftware.com/articles/2024/5/2.html"},{"heading":"探讨跨平台技术与跨平台 UI 框架及 Kotlin Multiplatform 在 bilibili 的实践","url":"https://mp.weixin.qq.com/s/b8_s1iboJMEdEvyMd59u-g","recommender":"JonyFang"},{"heading":"Is Dynamic Isolation Bad?","url":"https://www.massicotte.org/dynamic-isolation","recommender":"zoeGuo"},{"heading":"Faster Git checkouts on NFS and SSD with parallelism","url":"https://matheustavares.gitlab.io/posts/parallel-checkout","recommender":"AidenRao"},{"heading":"计算机系统篇之链接（15）：共享库拦截技术之运行时库打桩","url":"https://csstormq.github.io/blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B%E9%93%BE%E6%8E%A5%EF%BC%8815%EF%BC%89%EF%BC%9A%E5%85%B1%E4%BA%AB%E5%BA%93%E6%8B%A6%E6%88%AA%E6%8A%80%E6%9C%AF%E4%B9%8B%E8%BF%90%E8%A1%8C%E6%97%B6%E5%BA%93%E6%89%93%E6%A1%A9%EF%BC%88%E4%B8%8A%EF%BC%89","recommender":"Damien"},{"heading":"Scaling ChatGPT: Five Real-World Engineering Challenges","url":"https://newsletter.pragmaticengineer.com/p/scaling-chatgpt","recommender":"老驴"},{"heading":"HandVector","url":"https://github.com/XanderXu/HandVector","recommender":"BluesJiang"},{"heading":"上卷","url":"https://bytedance.larkoffice.com/docx/doxcnYJ8ZNlDkdguWyuxrT9Vrje","recommender":"Smallfly"},{"heading":"【 iOS 】并发（Concurrency）","url":"https://bytedance.larkoffice.com/docx/doxcnMYZcL7DvPKuE9IN0iJ4eKh","recommender":"DylanYang"}]},{"id":"r-289-2024-05-20","type":"report","title":"老司机 iOS 周报 #289 | 2024-05-20","issue":289,"date":"2024-05-20","year":2024,"path":"Reports/2024/#289-2024.05.20.md","url":"Reports/2024/%23289-2024.05.20.md","excerpt":"SE-0436: Objective-C implementations in Swift：Swift 团队最近提出了提案 SE-0436，可以用 Swift 来实现 Objective-C 的 Category/Extension，并且让调用者对此毫无感知，就像是 Objective-C 实现的那样，但这个功能的必要性在哪？；【 Just For Fun 】 C - 宏开发 - 选取第 n 项参数、按照参数数目展开不同的宏、缺陷：这个","sections":[{"heading":"SE-0436: Objective-C implementations in Swift","url":"https://forums.swift.org/t/se-0436-objective-c-implementations-in-swift/71712","recommender":"kemchenj"},{"heading":"【 Just For Fun 】 C - 宏开发 - 选取第 n 项参数、按照参数数目展开不同的宏、缺陷","url":"https://zhuanlan.zhihu.com/p/61152480","recommender":"Barney"},{"heading":"每个程序员都应该了解的硬件知识","url":"https://mp.weixin.qq.com/s/Ol9J1ZWevHSjP2ZIyidK-g","recommender":"xuyafei86"},{"heading":"存储空间终于算“对”了","url":"https://mp.weixin.qq.com/s/_2dzH99T1r70tYSH8z_0Ow","recommender":"Smallfly"},{"heading":"Flutter 3.22 发布，快来看看有什么更新吧？","url":"https://mp.weixin.qq.com/s/wvas9YoP6WQgubmVp9hPUQ","recommender":"Crazy"},{"heading":"时隔五年，IGListKit 迎来 5.0.0 版本更新","url":"https://github.com/Instagram/IGListKit/releases/tag/5.0.0","recommender":"zvving"},{"heading":"SwiftSecurity: Modern Swift framework for Keychain API","url":"https://github.com/dm-zharov/swift-security","recommender":"含笑饮砒霜"},{"heading":"The Sound of Software","url":"https://www.notboring.software/words/the-sound-of-software","recommender":"CrazyCoderShi"}]},{"id":"r-288-2024-05-13","type":"report","title":"老司机 iOS 周报 #288 | 2024-05-13","issue":288,"date":"2024-05-13","year":2024,"path":"Reports/2024/#288-2024.05.13.md","url":"Reports/2024/%23288-2024.05.13.md","excerpt":"AppStore Connect 提交失败 Workaround：上周陆续有读者在老司机的 App Review 群中反馈提交审核时遇到了奇怪的问题，也有群友提供了解决方案，我们再次汇总如下：；戴铭的 Swift 小册子：小册子是一个使用 Swift、按照声明式 UI 和响应式编程范式开发的开源 macOS 程序，上面的内容主要面向 Swift 零基础的同学，包括 Swift 的知识点、直接可用的小例子和知识点相关的其它资料，推荐 Sw","sections":[{"heading":"AppStore Connect 提交失败 Workaround","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/4537"},{"heading":"戴铭的 Swift 小册子","url":"https://github.com/ming1016/SwiftPamphletApp","recommender":"AidenRao"},{"heading":"Safely unwrap optional values in SwiftUI bindings","url":"https://www.polpiella.dev/safely-unwrap-optional-value-in-swiftui-binding/","recommender":"zoeGuo"},{"heading":"iOS 依赖库版本一致性检测：确保应用兼容性","url":"https://juejin.cn/post/7358011504967925812","recommender":"BluesJiang"},{"heading":"淘系两年半 A/B 实验经历，聊聊我理解的“科学实验”","url":"https://mp.weixin.qq.com/s/-durED9M0UMqhT0i2S67lQ","recommender":"Smallfly"},{"heading":"彻底弄懂 Linux 下的文件描述符（fd）","url":"https://yushuaige.github.io/2020/08/14/%E5%BD%BB%E5%BA%95%E5%BC%84%E6%87%82%20Linux%20%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6%EF%BC%88fd%EF%BC%89/#1%E3%80%81%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E4%BE%8B%E5%AD%90%E8%AF%B4%E8%B5%B7/","recommender":"DylanYang"},{"heading":"OS Style settings view","url":"https://paulpeelen.com/SettingsView","recommender":"水水"},{"heading":"Flutter 之 HTTP3/QUIC 和 Cronet 你了解过吗？","url":"https://mp.weixin.qq.com/s/InAzeSa-2YeV2oo6gnykhg","recommender":"极速男孩"},{"heading":"SWIFT PACKAGE INDEXING EPISODE 43: Now I ’ m worried our metrics aren ’ t correct! with special guest Holly Borla","url":"https://share.transistor.fm/s/2d4b1ba7","recommender":"Kyle-Ye"},{"heading":"difftastic","url":"https://difftastic.wilfred.me.uk/","recommender":"Crazy"}]},{"id":"r-287-2024-04-29","type":"report","title":"老司机 iOS 周报 #287 | 2024-04-29","issue":287,"date":"2024-04-29","year":2024,"path":"Reports/2024/#287-2024.04.29.md","url":"Reports/2024/%23287-2024.04.29.md","excerpt":"RxSwift 6 更新了什么：这是一篇 What's new in RxSwift 6 ? 的译文，文章介绍了 RxSwift 6 的新特性和重要更新，如将 从 RxCocoa 迁移到 RxSwift、使用 自动建立 Binders、新的 运算符，以及一些运算符重命名 等。无论你是 RxSwift 的新手还是；SwiftUI: Custom View Transition(Navigation) With Matched Geomet","sections":[{"heading":"RxSwift 6 更新了什么","url":"https://juejin.cn/post/7345687862530113546","recommender":"zoeGuo"},{"heading":"SwiftUI: Custom View Transition(Navigation) With Matched Geometry","url":"https://blog.stackademic.com/swiftui-custom-view-transition-nav-with-matched-geometry-032552356fc5","recommender":"Damien"},{"heading":"Swift 6 upgrade Preparation","url":"https://medium.com/jamf-engineering/swift-6-upgrade-preparation-0941fbea2db6","recommender":"Kyle-Ye"},{"heading":"Periphery","url":"https://github.com/peripheryapp/periphery","recommender":"Smallfly"},{"heading":"Copilot For Xcode","url":"https://github.com/intitni/CopilotForXcode","recommender":"Cooper Chen"}]},{"id":"r-286-2024-04-22","type":"report","title":"老司机 iOS 周报 #286 | 2024-04-22","issue":286,"date":"2024-04-22","year":2024,"path":"Reports/2024/#286-2024.04.22.md","url":"Reports/2024/%23286-2024.04.22.md","excerpt":"Xcode Bookmarks：Xcode 15 引入了一种新的代码注释和搜索查询书签功能，用户可以通过选择代码行并使用上下文菜单来创建书签，还可以对书签添加描述、分组和标记完成状态，以及保存搜索查询。这项新功能提高了代码注释和搜索结果的管理效率。；How to define a custom file header for a Swift Package：开发过程中代码的文件头可以包含一些必要信息，Xcode 一般会为我们生成默认的文","sections":[{"heading":"Xcode Bookmarks","url":"https://useyourloaf.com/blog/xcode-bookmarks/","recommender":"Barney"},{"heading":"How to define a custom file header for a Swift Package","url":"https://danielsaidi.com/blog/2024/03/21/how-to-define-a-custom-file-header-for-a-swift-package","recommender":"zoeGuo"},{"heading":"Splitting Up a Monolith: From 1 to 25 Swift Packages","url":"https://ryanashcraft.com/splitting-up-a-monolithic-swift-package/","recommender":"Smallfly"},{"heading":"Bar Chart creation using Swift Charts","url":"https://www.avanderlee.com/swift-charts/bar-chart-creation-using-swift-charts/","recommender":"DylanYang"},{"heading":"QQ 9 “傻快傻快”背后的技术秘密","url":"https://mp.weixin.qq.com/s/nVXE0iSllZ3rFei4t7bR7g","recommender":"JonyFang"},{"heading":"Mac App 原生内置 Debug 菜单","url":"https://mjtsai.com/blog/2024/03/22/_eventfirstresponderchaindescription/#comment-4059578","recommender":"BluesJiang"}]},{"id":"r-285-2024-04-15","type":"report","title":"老司机 iOS 周报 #285 | 2024-04-15","issue":285,"date":"2024-04-15","year":2024,"path":"Reports/2024/#285-2024.04.15.md","url":"Reports/2024/%23285-2024.04.15.md","excerpt":"iOS 17.4/17.4.1 新安装的用户首次启动 IDFA 权限获取失败，以及 workaround：首次新安装 APP 的用户会在通过 ATTrackingManager.requestTrackingAuthorization() 申请 IDFA 的时候自动失败（即使用户还没有手动点击拒绝），这会对依赖 IDFA 归因或者正在投放的 APP 造成一定影响，论坛也已经有同学给出；五年沉淀，微信全平台终端数据库 WCDB 迎来重大升","sections":[{"heading":"iOS 17.4/17.4.1 新安装的用户首次启动 IDFA 权限获取失败，以及 workaround","url":"https://forums.developer.apple.com/forums/thread/746432?answerId=784610022#784610022"},{"heading":"五年沉淀，微信全平台终端数据库 WCDB 迎来重大升级！","url":"https://mp.weixin.qq.com/s/RWCqLD0M_WGCrCcz0oQIcQ","recommender":"JonyFang"},{"heading":"How to avoid using AnyView in SwiftUI","url":"https://tanaschita.com/swiftui-how-to-avoid-using-anyview/","recommender":"AidenRao"},{"heading":"In Search of a Smooth Scroll","url":"https://byla.lt/posts/in-search-of-smooth-scroll/","recommender":"水水"},{"heading":"Exploring ABI stability, @frozen, and library evolution mode","url":"https://digitalbunker.dev/understanding-frozen-in-swift/","recommender":"DylanYang"},{"heading":"Mac OS X Debugging Magic","url":"https://web.archive.org/web/20101206131250/http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html","recommender":"Cooper Chen"},{"heading":"COW Macro Package","url":null,"recommender":"Kyle-Ye"}]},{"id":"r-284-2024-04-08","type":"report","title":"老司机 iOS 周报 #284 | 2024-04-08","issue":284,"date":"2024-04-08","year":2024,"path":"Reports/2024/#284-2024.04.08.md","url":"Reports/2024/%23284-2024.04.08.md","excerpt":"Generate and read analytics reports from the App Store Connect API：这篇文章介绍了苹果公司最近推出的 50 多种新的分析报告，这些报告包括应用商店参与度、应用商店商务、应用使用情况、框架使用情况和性能等方面的数据。虽然这些新数据提供了很多洞察力，非常有价值，但它们仅通过 App Store Connect API 独家提供，而且获取数据的方式并不；Swift Isolat","sections":[{"heading":"Generate and read analytics reports from the App Store Connect API","url":"https://www.polpiella.dev/analytics-reports-api-app-store-connect","recommender":"Smallfly"},{"heading":"Swift Isolation Intuition","url":"https://www.massicotte.org/isolation-intuition","recommender":"DylanYang"},{"heading":"Near real-time UI code generation on iPad","url":"https://otaku.codes/uni/dissertation/dissertation.pdf","recommender":"BluesJiang"},{"heading":"理解 C++ 的六种 Memory Order","url":"https://lancern.xyz/2021/07/07/cpp-memory-order/","recommender":"老驴"},{"heading":"Using @_silgen_name to forward declare functions in Swift and improve build times","url":"https://swiftrocks.com/using-silgenname-to-call-private-swift-code","recommender":"Cooper Chen"},{"heading":"lldb remove randomness","url":"https://bryce.co/lldb-remove-randomness/","recommender":"极速男孩"}]},{"id":"r-283-2024-04-01","type":"report","title":"老司机 iOS 周报 #283 | 2024-04-01","issue":283,"date":"2024-04-01","year":2024,"path":"Reports/2024/#283-2024.04.01.md","url":"Reports/2024/%23283-2024.04.01.md","excerpt":"A better pull request：在使用 Git 时，执行 ，「三个点」查看当前分支与远端分支的差异，清楚的了解将要拉取的内容，然而当远端分支有提交时，新的提交无法在 diff 中显示，这么设计有其合理性。本文作者认为不太方便，在 Bitbucket 中使用「两个点」展示与最新分支的 diff 会更清晰。对实现感；SwiftUI Previews-based architecture：本文作者通过一个简单的 demo 阐述了如","sections":[{"heading":"A better pull request","url":"https://blog.developer.atlassian.com/a-better-pull-request/","recommender":"Smallfly"},{"heading":"SwiftUI Previews-based architecture","url":"https://blog.thomasdurand.fr/story/2024-03-15-preview-based-architecture/","recommender":"DylanYang"},{"heading":"Using a Swift macro to generate an EnvironmentKey","url":"https://www.swiftwithvincent.com/blog/using-a-swift-macro-to-generate-an-environmentkey","recommender":"Barney"},{"heading":"Be Careful When You Initialize a State Object","url":"https://jaredsinclair.com/2024/03/14/state-object-autoclosure.html","recommender":"AidenRao"},{"heading":"Unrestricted View Replication","url":"https://bryce.co/replicating-views/","recommender":"JonyFang"},{"heading":"How to run asynchronous code in Swift Playground correctly?","url":"https://antran.app/2024/swift_playground_async_execution/","recommender":"zoeGuo"},{"heading":"Make Your iOS App Smaller with Dynamic Frameworks","url":"https://www.emergetools.com/blog/posts/make-your-ios-app-smaller-with-dynamic-frameworks","recommender":"Leo"}]},{"id":"r-282-2024-03-25","type":"report","title":"老司机 iOS 周报 #282 | 2024-03-25","issue":282,"date":"2024-03-25","year":2024,"path":"Reports/2024/#282-2024.03.25.md","url":"Reports/2024/%23282-2024.03.25.md","excerpt":"Apple 也在用的 Benchmark 框架：这篇文章介绍了一个专为 Swift 编写的 Benchmark 包，除了支持追踪常用的 CPU 时间和内存占用情况，还支持了 ARC 相关的数据，swift-foundation 之类的 Apple 官方开源项目也都在使用。；A Gentle Introduction to LLVM IR：本文由浅入深地介绍了 LLVM IR 的一些基本常识和概念，并给出了相关例子。；Swift Tool","sections":[{"heading":"Apple 也在用的 Benchmark 框架","url":"https://www.swift.org/blog/benchmarks/","recommender":"kemchenj"},{"heading":"A Gentle Introduction to LLVM IR","url":"https://mcyoung.xyz/2023/08/01/llvm-ir/","recommender":"Kyle-Ye"},{"heading":"Swift Tooling: Windows Edition","url":"https://speakinginswift.substack.com/p/swift-tooling-windows-edition","recommender":"Kyle-Ye"},{"heading":"Nerdy internals of an Apple text editor","url":"https://papereditor.app/internals","recommender":"含笑饮砒霜"},{"heading":"lsregister: How Files Are Handled in Mac OS X","url":"https://krypted.com/mac-security/lsregister-associating-file-types-in-mac-os-x/","recommender":"Barney"},{"heading":"Sending trial notifications with provisional authorization on iOSX","url":"https://nilcoalescing.com/blog/TrialNotificationsWithProvisionalAuthorizationOnIOS/","recommender":"享耳先森"}]},{"id":"r-281-2024-03-18","type":"report","title":"老司机 iOS 周报 #281 | 2024-03-18","issue":281,"date":"2024-03-18","year":2024,"path":"Reports/2024/#281-2024.03.18.md","url":"Reports/2024/%23281-2024.03.18.md","excerpt":"Swift Predicate: 用法、构成及注意事项：文章详细介绍了如何有效利用 Swift Predicate，包括谓词的构建技巧、全局函数和实例方法的限制、支持创建多种泛型参数的谓词、线程安全和序列化等。通过具体代码示例，展示了 Swift Predicate 在不同场景下的应用，如如何处理可选值、实现线程安全的数据处理等，同时；Third-party libraries acknowledgments using a Setti","sections":[{"heading":"Swift Predicate: 用法、构成及注意事项","url":"https://fatbobman.com/zh/posts/swift-predicate-usage-composition-and-considerations/","recommender":"JonyFang"},{"heading":"Third-party libraries acknowledgments using a Settings bundle","url":"https://www.avanderlee.com/workflow/third-party-libraries-acknowledgments-swift-packages/","recommender":"Damien"},{"heading":"What you should know about visionOS volumes before using them in an app","url":"https://www.lunarskydiving.com/blog/volume-limitations/","recommender":"EyreFree"},{"heading":"Debug for visionOS using Xcode simulator visualizations","url":"https://www.createwithswift.com/debug-visionos-using-xcode-simulator-visualizations/","recommender":"Barney"},{"heading":"Modding Plugins back into Xcode","url":"https://bryce.co/xcode-plugin-loader/","recommender":"享耳先森"},{"heading":"If you ’ ve created a visionOS app with a volume, you probably did it wrong","url":"https://www.lunarskydiving.com/blog/volume-window-zoom/","recommender":"Smallfly"},{"heading":"Vision Pro Connectivity","url":"https://buttondown.email/varrall/archive/vision-pro-connectivity/","recommender":"极速男孩"},{"heading":"Shattered Glass: Customizing Windows in visionOS","url":"https://blog.overdesigned.net/posts/2024-02-29-visionos-window-basics/","recommender":"DylanYang"},{"heading":"`__inline__` 是否会改变 local static variable 的行为？","url":"https://juejin.cn/post/7345692979075039247","recommender":"kemchenj"}]},{"id":"r-280-2024-03-11","type":"report","title":"老司机 iOS 周报 #280 | 2024-03-11","issue":280,"date":"2024-03-11","year":2024,"path":"Reports/2024/#280-2024.03.11.md","url":"Reports/2024/%23280-2024.03.11.md","excerpt":"Privacy updates for App Store submissions：Privacy manifests and signatures 的 deadline 来了，5 月 1 日。目前大部分知名第三方库都已经完成了适配，例如：SDWebImage、FMDB、Protobuf、SnapKit 等，但也有部分如：MBProgressHU、Starscr；Apple Vision Pro 开发者实验室 与 探索《人机界面指南》：","sections":[{"heading":"Privacy updates for App Store submissions","url":"https://developer.apple.com/news/?id=3d8a9yyh"},{"heading":"Apple Vision Pro 开发者实验室 与 探索《人机界面指南》","url":"https://developer.apple.com/events/view/upcoming-events?q=Shanghai"},{"heading":"The power of inout parameters","url":"https://danielsaidi.com/blog/2024/02/18/the-power-of-inout-parameters","recommender":"zoeGuo"},{"heading":"Why Ollie is moving away from SwiftUI to UIKit","url":"https://medium.com/goodones/why-ollie-is-moving-away-from-swiftui-to-uikit-cfdefe918d1c","recommender":"JonyFang"},{"heading":"How to determine where tasks and async functions run in Swift?","url":"https://www.donnywals.com/how-to-determine-where-tasks-and-async-functions-run-in-swift/","recommender":"Kyle-Ye"},{"heading":"C++ 常见避坑指南","url":"https://mp.weixin.qq.com/s/ivmOl-qGALnHEVbwKANiug","recommender":"莲叔"},{"heading":"Everything you need to know about Swift 5.10","url":"https://www.donnywals.com/everything-you-need-to-know-about-swift-5-10/","recommender":"含笑饮砒霜"},{"heading":"The power of self-sufficient features","url":"https://www.swiftindepth.com/articles/self-sufficient-features/","recommender":"享耳先森"},{"heading":"How to use VariadicView, SwiftUI's Private View API","url":"https://www.emergetools.com/blog/posts/how-to-use-variadic-view","recommender":"Cooper Chen"},{"heading":"High Performance Swift Apps","url":"https://jacobbartlett.substack.com/p/high-performance-swift-apps","recommender":"DylanYang"},{"heading":"ConcurrencyRecipes","url":"https://github.com/mattmassicotte/ConcurrencyRecipes","recommender":"AidenRao"}]},{"id":"r-279-2024-03-04","type":"report","title":"老司机 iOS 周报 #279 | 2024-03-04","issue":279,"date":"2024-03-04","year":2024,"path":"Reports/2024/#279-2024.03.04.md","url":"Reports/2024/%23279-2024.03.04.md","excerpt":"How to make a completionHandler much safer：我们经常会用 completionHandler 来处理异步事件，但是很难保证所有逻辑下都能执行到 completionHandler 的逻辑。那么在 Swift 语法中可以使用 defer 关键字，defer 可以确保 completionHandler 在方法返回之前一定被调；从入门到精通：如何解决 C++ 模板代码膨胀问题：C++ 模板是一种强大","sections":[{"heading":"How to make a completionHandler much safer","url":"https://www.swiftwithvincent.com/blog/how-to-make-a-completionhandler-much-safer","recommender":"zoeGuo"},{"heading":"从入门到精通：如何解决 C++ 模板代码膨胀问题","url":"https://mp.weixin.qq.com/s/aRqKGoVNcf8yzRhIHbmoBA","recommender":"老峰"},{"heading":"Swift 6.0 Release Process","url":"https://forums.swift.org/t/swift-6-0-release-process/70220","recommender":"AidenRao"},{"heading":"ImGui 在长桥跨端图表组件中的探索与应用","url":"https://mp.weixin.qq.com/s/-_NLEbonjEl1F2kyA0yx_A","recommender":"Smallfly"},{"heading":"天美引擎工程师：如何使用移动端硬件特性提升游戏上限？","url":"https://zhuanlan.zhihu.com/p/587988966","recommender":"含笑饮砒霜"},{"heading":"try catch 失效排查 - 探索异常处理机制的迷雾","url":"https://mp.weixin.qq.com/s/MK26EcuVS2GFOjocgvvetA","recommender":"xuyafei86"},{"heading":"How the Swift compiler knows that DispatchQueue.main implies @MainActor","url":"https://oleb.net/2024/dispatchqueue-mainactor","recommender":"Barney"},{"heading":"ARM 汇编系列","url":"https://www.lyldalek.top/6cd918093215420e8e980db08e9a8ba0","recommender":"Crazy"}]},{"id":"r-278-2024-02-26","type":"report","title":"老司机 iOS 周报 #278 | 2024-02-26","issue":278,"date":"2024-02-26","year":2024,"path":"Reports/2024/#278-2024.02.26.md","url":"Reports/2024/%23278-2024.02.26.md","excerpt":"App Store Connect upload requirement starts April 29：预计在 4 月 29 日，App Store Connect 就将限制必须使用 >= Xcode 15.0 进行提交，并支持最新的系统。还未升级的同学们需要尽快切换并进行适配啦。；Flutter 3.19.0 系列更新：国内新年假期期间 Flutter 团队发布了 2024 一季度的更新：Flutter 3.19.0 ；按照惯例随着","sections":[{"heading":"App Store Connect upload requirement starts April 29","url":"https://developer.apple.com/news/?id=fxu2qp7b"},{"heading":"Flutter 3.19.0 系列更新","url":"https://mp.weixin.qq.com/s/JRdT4vJutvNZ66uqqjYEPg","recommender":"CrazyCoderShi"},{"heading":"通过 Headphone Motion 访问 AirPods 的头部跟踪数据","url":"https://github.com/LLLLLayer/Headphone-Motion","recommender":"EyreFree"},{"heading":"On-device ML research with MLX and Swift","url":"https://www.swift.org/blog/mlx-swift/","recommender":"JonyFang"},{"heading":"Code Injection with Dyld Interposing","url":"https://www.emergetools.com/blog/posts/DyldInterposing","recommender":"Cooper Chen"},{"heading":"The SwiftUI Field Guide","url":"https://www.swiftuifieldguide.com","recommender":"zoeGuo"},{"heading":"云音乐 RN 新架构升级之 iOS 灰度方案","url":"https://mp.weixin.qq.com/s/jZ3wfbFf2xey8aTK16MU4A","recommender":"Smallfly"},{"heading":"armhf-swift-toolchain","url":"https://github.com/CmST0us/armhf-swift-toolchain","recommender":"kemchenj"}]},{"id":"r-277-2024-01-29","type":"report","title":"老司机 iOS 周报 #277 | 2024-01-29","issue":277,"date":"2024-01-29","year":2024,"path":"Reports/2024/#277-2024.01.29.md","url":"Reports/2024/%23277-2024.01.29.md","excerpt":"Update on apps distributed in the European Union：iOS 17.4 beta 上周上线了，其中最大的变化是因为欧盟 DMA 政策，苹果在欧盟再次做出重大让步，做出了 “违背祖宗” 的决定。 具体来说，有几个重大变化：；Apple introduces new options worldwide for streaming game services and apps that provid","sections":[{"heading":"Update on apps distributed in the European Union","url":"https://developer.apple.com/support/dma-and-apps-in-the-eu/","recommender":"老驴"},{"heading":"Apple introduces new options worldwide for streaming game services and apps that provide access to mini apps and games","url":"https://developer.apple.com/news/?id=f1v8pyay"},{"heading":"A new access modifier in Swift: package","url":"https://blog.eidinger.info/a-new-access-modifier-in-swift-package","recommender":"AidenRao"},{"heading":"Exploring object file formats","url":"https://maskray.me/blog/2024-01-14-exploring-object-file-formats","recommender":"含笑饮砒霜"}]},{"id":"r-276-2024-01-22","type":"report","title":"老司机 iOS 周报 #276 | 2024-01-22","issue":276,"date":"2024-01-22","year":2024,"path":"Reports/2024/#276-2024.01.22.md","url":"Reports/2024/%23276-2024.01.22.md","excerpt":"Bad practice: using \"YYYY\" to format a Date：文章讲述了在 Swift 编程语言中关于日期格式化的一个常见错误。\"YYYY\" 实际上表示的是该周开始的年份，这会导致新年初几天的日期显示不正确。例如，2023 年 1 月 1 日会错误地显示为 2022 年。这个错误通常在新年开始时才被注意到。正确的年份格式化方法应该使用 \"y；在微信小程序里运行完整的 Flutter，我们是怎么做到的？：MPFl","sections":[{"heading":"Bad practice: using \"YYYY\" to format a Date","url":"https://www.swiftwithvincent.com/blog/bad-practice-using-yyyy-to-format-a-date","recommender":"极速男孩"},{"heading":"在微信小程序里运行完整的 Flutter，我们是怎么做到的？","url":"https://juejin.cn/post/7324923422295670834","recommender":"邦 Ben"},{"heading":"Swift for C++ Practitioners, Part 1: Intro & Value Types","url":"https://www.douggregor.net/posts/swift-for-cxx-practioners-value-types/","recommender":"AidenRao"},{"heading":"VisionPro News","url":"https://developer.apple.com/news/?id=8fppguuh","recommender":"EyreFree"},{"heading":"AnyView ’ s impact on SwiftUI performance","url":"https://martinmitrevski.com/2024/01/02/anyviews-impact-on-swiftui-performance/","recommender":"东坡肘子"},{"heading":"闲话 APPLE 的 APP REVIEW 趣事","url":"https://sketchk.xyz/posts/secret-of-app-review-team","recommender":"Smallfly"},{"heading":"std:: versus ::std::","url":"https://mp.weixin.qq.com/s/QwhBdUZbmGFiUP_ssomXUQ","recommender":"老驴"}]},{"id":"r-275-2024-01-15","type":"report","title":"老司机 iOS 周报 #275 | 2024-01-15","issue":275,"date":"2024-01-15","year":2024,"path":"Reports/2024/#275-2024.01.15.md","url":"Reports/2024/%23275-2024.01.15.md","excerpt":"@Observable Macro performance increase over ObservableObject：这篇文章主要介绍 WWDC 2023 中首次公开的 @Observable 宏，这是一个设计精良的工具，旨在优化 SwiftUI 视图并提升应用性能。通过使用 @Observable 我们能有效地防止不必要的视图重绘 , 并更流畅地观察状态变化。尽管使用 @Observable ；Perception: A back","sections":[{"heading":"@Observable Macro performance increase over ObservableObject","url":"https://www.avanderlee.com/swiftui/observable-macro-performance-increase-observableobject/","recommender":"Barney"},{"heading":"Perception: A back-port of @Observable","url":"https://www.pointfree.co/blog/posts/129-perception-a-back-port-of-observable","recommender":"Smallfly"},{"heading":"Adapting your App Icon to visionOS","url":"https://www.createwithswift.com/adapting-your-app-icon-to-visionos/","recommender":"享耳先森"},{"heading":"iOS Availability 编译器实现机制解析","url":"https://juejin.cn/post/7316202786173829146","recommender":"JonyFang"},{"heading":"Encrypted Portals between Macs – built in Swift and Rust","url":"https://github.com/build-trust/ockam/blob/develop/examples/app/portals/README.md","recommender":"水水"},{"heading":"Missing compiler warning","url":"https://github.com/apple/swift/issues/70630","recommender":"Cooper Chen"}]},{"id":"r-274-2024-01-08","type":"report","title":"老司机 iOS 周报 #274 | 2024-01-08","issue":274,"date":"2024-01-08","year":2024,"path":"Reports/2024/#274-2024.01.08.md","url":"Reports/2024/%23274-2024.01.08.md","excerpt":"The Art of the Corner Radius：本篇文章简单介绍了 swiftUI 中 Corner Radius 的基础使用，浅显易懂，图文并茂，只需 3 分钟就可以领略“圆角”的艺术。；微信业务开发方法与实践：在当前竞争激烈的商业环境中，深刻理解业务流程对于开发复杂软件系统至关重要。微信团队万字长文带你拔开迷雾，直达本质，深入理解业务是什么，以及如何挖掘业务价值。；尾调用以及如何规避：尾调用（Tail Call）是函数式编","sections":[{"heading":"The Art of the Corner Radius","url":"https://david.y4ng.fr/the-art-of-the-corner-radius/","recommender":"Barney"},{"heading":"微信业务开发方法与实践","url":"https://mp.weixin.qq.com/s/we4LCGAwDC6bS7rQNztWMQ","recommender":"xuyafei86"},{"heading":"尾调用以及如何规避","url":"https://r3zpy9khqv.feishu.cn/docs/doccnCwMGwhIDmMi4miM7VfHqpe","recommender":"老峰"},{"heading":"浏览器内核创新技术演进及实践 - U4 5.0","url":"https://mp.weixin.qq.com/s/5xIJIN2nUBN2h6McYFg2FQ","recommender":"莲叔"},{"heading":"哥伦布即时设计平台 ChatGPT 落地实践","url":"https://mp.weixin.qq.com/s/5BuX1m_GDHQzuW_Kj2siOw","recommender":"水水"},{"heading":"Unxippity","url":"https://trycombine.com/posts/an-app-experiment-about-unxipping-xcode-goes-to-github/","recommender":"Smallfly"},{"heading":"swift-retry","url":"https://github.com/fumoboy007/swift-retry?tab=readme-ov-file","recommender":"AidenRao"}]},{"id":"r-273-2023-12-25","type":"report","title":"老司机 iOS 周报 #273 | 2023-12-25","issue":273,"date":"2023-12-25","year":2023,"path":"Reports/2023/#273-2023.12.25.md","url":"Reports/2023/%23273-2023.12.25.md","excerpt":"独立开发提高产品定位成功率：找到 3 个对标产品：这是一篇独立开发者从自身经验中总结出的关于怎么找到产品方向，以及怎么提高产品定位成功率的文章。作者通过几个例子分别描述了“大池小鱼”原则，分别找到目标用户正在用的产品、同样卖点的产品以及你的参照产品，来快速定位你的独立开发产品。有多少读者是独立开发者或者正跃跃欲试独立开发呢？这篇；货拉拉 iOS 模块化路由框架：TheRouterSwift：这篇文章介绍了货拉拉团队开发的 iOS 模块化","sections":[{"heading":"独立开发提高产品定位成功率：找到 3 个对标产品","url":"https://juejin.cn/post/7312640704404832283","recommender":"zoeGuo"},{"heading":"货拉拉 iOS 模块化路由框架：TheRouterSwift","url":"https://juejin.cn/post/7281889329584275471","recommender":"EyreFree"},{"heading":"苹果 iOS 分发和安装 App 的那些趣事","url":"https://juejin.cn/post/7315260397371490319","recommender":"享耳先森"},{"heading":"云音乐自研客户端 UI 自动化项目-Athena","url":"https://mp.weixin.qq.com/s/CX9j63Wxe8qlvqVMjyRhpg","recommender":"老峰"},{"heading":"Symbolicating SwiftUI (and any Apple Framework)","url":"https://www.emergetools.com/blog/posts/symbolicating-swiftui-and-any-apple-framework","recommender":"Damien"},{"heading":"Trigger property observers from initializers in Swift","url":"https://nilcoalescing.com/blog/TriggerPropertyObserversFromInitializersInSwift/","recommender":"Barney"},{"heading":"MacSymbolicator","url":"https://github.com/inket/MacSymbolicator","recommender":"含笑饮砒霜"}]},{"id":"r-272-2023-12-18","type":"report","title":"老司机 iOS 周报 #272 | 2023-12-18","issue":272,"date":"2023-12-18","year":2023,"path":"Reports/2023/#272-2023.12.18.md","url":"Reports/2023/%23272-2023.12.18.md","excerpt":"Flutter 小技巧之 3.16 升级最坑 M3 默认适配技巧：本文是一篇介绍如何在升级 Material 3 后，适配原有 Material 2 控件的文章，本文虽然读起来会很快，但是会为开发者减少大量的时间去解决系统级的适配问题。本文主要介绍了以下几个控件在 Material 3 升级后的变化，以及如何适配 Material 2 的方法。；Hummer 引擎优化系列 - PlatformView 的演进历史与优化探索：Platfo","sections":[{"heading":"Flutter 小技巧之 3.16 升级最坑 M3 默认适配技巧","url":"https://mp.weixin.qq.com/s/SIEYjZn0gKNMCGlPeg1rGw","recommender":"Crazy"},{"heading":"Hummer 引擎优化系列 - PlatformView 的演进历史与优化探索","url":"https://mp.weixin.qq.com/s/R3UUlgEPVR909NB_Jz6o-w","recommender":"CrazyCoderShi"},{"heading":"SFSafariViewController in SwiftUI: Open webpages in-app","url":"https://www.avanderlee.com/swiftui/sfsafariviewcontroller-open-webpages-in-app/","recommender":"享耳先森"},{"heading":"网易云音乐 RN 新架构升级实践","url":"https://mp.weixin.qq.com/s/tAf0SnW2M7Sp0E72YLJP5w","recommender":"含笑饮砒霜"},{"heading":"Marin's Side Projects 2023","url":"https://trycombine.com/posts/marin-side-projects-2023","recommender":"EyreFree"},{"heading":"Flutter 上了 Apple 第三方重大列表，2024 春季 iOS 的隐私清单究竟是什么","url":"https://mp.weixin.qq.com/s/Z5rc2ud3hJ2k7hN7EItyPA","recommender":"极速男孩"},{"heading":"MLX: An array framework for Apple Silicon (Made by Apple)","url":"https://github.com/ml-explore/mlx","recommender":"老驴"},{"heading":"Async Algorithms 1.0 Released","url":"https://github.com/apple/swift-async-algorithms","recommender":"kemchenj"}]},{"id":"r-271-2023-12-11","type":"report","title":"老司机 iOS 周报 #271 | 2023-12-11","issue":271,"date":"2023-12-11","year":2023,"path":"Reports/2023/#271-2023.12.11.md","url":"Reports/2023/%23271-2023.12.11.md","excerpt":"25 hours of Xcode Cloud now included with the Apple Developer Program：从 2024 年 1 月开始，每个付费开发者都将免费获得每月 25 小时的 Xcode Cloud 服务。使用 Xcode Cloud 服务可以方便得完成打包上传提审 TF 这一系列操作，对于独立开发者来说不用花费时间精力研究 AppStore Connect API 还是很有吸；Play an a","sections":[{"heading":"25 hours of Xcode Cloud now included with the Apple Developer Program","url":"https://developer.apple.com/news/?id=ik9z4ll6"},{"heading":"Play an animation in RealityKit","url":"https://www.createwithswift.com/play-an-animation-in-realitykit","recommender":"zoeGuo"},{"heading":"AsyncStream in the real world: wrapping an Apple Photos callback","url":"https://damian.fyi/swift/2023/12/03/asyncstream-in-the-real-world-wrapping-an-apple-photos-callback.html","recommender":"Barney"},{"heading":"现代 CPU 技术发展","url":"https://juejin.cn/post/7309061655094837283","recommender":"含笑饮砒霜"},{"heading":"Introducing Swift MMIO","url":"https://forums.swift.org/t/introducing-swift-mmio/68525","recommender":"AidenRao"},{"heading":"2024 年 Kotlin Multiplatform 发展路线图 | 官方博客","url":"https://mp.weixin.qq.com/s/IANDWuYiLlE_f2TSTPukaw","recommender":"Crazy"},{"heading":"Upcoming third-party SDK requirements","url":"https://developer.apple.com/cn/support/third-party-SDK-requirements/","recommender":"Damien"},{"heading":"MusicKit and App Clips","url":"https://www.polpiella.dev/musickit-and-app-clips/","recommender":"anotheren"},{"heading":"Pow: Delightful SwiftUI effects for your app","url":"https://movingparts.io/pow","recommender":"zvving"}]},{"id":"r-270-2023-12-04","type":"report","title":"老司机 iOS 周报 #270 | 2023-12-04","issue":270,"date":"2023-12-04","year":2023,"path":"Reports/2023/#270-2023.12.04.md","url":"Reports/2023/%23270-2023.12.04.md","excerpt":"即将迎来圣诞审核高峰，各位开发者调整好提交时间：苹果预告将在 12 月 22~27 日 迎来圣诞假期，期间审核会相对变慢，根据惯例加急也会照常开放，有期间发版需求的同学需要早做安排。根据往年经验在 20 日提审大概率可以在高峰来临前通过审核。；建立个人学习观｜地铁上的自习室：本文旨在帮助初入职场或陷入迷茫的读者建立个人学习观，强调在日常生活中保持学习心态，在不同空间和阶段中收获额外的东西，让学习成为一种习惯，丰富自己的知识和人生。；Mi","sections":[{"heading":"即将迎来圣诞审核高峰，各位开发者调整好提交时间","url":null},{"heading":"建立个人学习观｜地铁上的自习室","url":"https://mp.weixin.qq.com/s/azyF-y5jPIy5trOpZFf0pA","recommender":"含笑饮砒霜"},{"heading":"Missing Xcode run test buttons","url":"https://paul-samuels.com/blog/2023/10/24/missing-xcode-run-test-buttons/","recommender":"Barney"},{"heading":"Apple’s use of AppKit, Catalyst, Swift and SwiftUI in macOS Sonoma","url":"https://blog.timac.org/2023/1128-state-of-appkit-catalyst-swift-swiftui-mac/","recommender":"Smallfly"},{"heading":"Observable Architecture Beta!","url":"https://www.pointfree.co/blog/posts/125-observable-architecture-beta","recommender":"zvving"},{"heading":"《产生式元编程》第三章 替换蓝染概念纤悉","url":"https://mp.weixin.qq.com/s/V5LRUPhSCagSI5W3lj9hbw","recommender":"J_Knight_"},{"heading":"初探 SwiftUI Link","url":"https://kyleye.top/posts/explore-swiftui-link/","recommender":"kemchenj"},{"heading":"iPhone 加入游戏，但 USB-C 的乱纪元还没有完结","url":"https://sspai.com/post/84508","recommender":"老驴"},{"heading":"devv.ai","url":"https://devv.ai/","recommender":"zoeGuo"}]},{"id":"r-269-2023-11-27","type":"report","title":"老司机 iOS 周报 #269 | 2023-11-27","issue":269,"date":"2023-11-27","year":2023,"path":"Reports/2023/#269-2023.11.27.md","url":"Reports/2023/%23269-2023.11.27.md","excerpt":"Flutter 3.16 + Dart 3.2 发布：Flutter 常规季度更新发布了，本次发布为 Flutter 3.16 + Dart 3.2; 一如既往，本次更新还是以稳定性和性能优化为主，其中值得关注的是 Android Impeller 和 Material 3 成为新的默认主题, 当然了在组件和工具链上也做出了不少改进；Swift strings look identical but aren't：这篇文章介绍了两个看起来","sections":[{"heading":"Flutter 3.16 + Dart 3.2 发布","url":"https://mp.weixin.qq.com/s/vbkhjPNboqK1oDy_J5pzeA","recommender":"CrazyCoderShi"},{"heading":"Swift strings look identical but aren't","url":"https://damian.fyi/swift/2023/11/13/swift-strings-look-identical-but-aren't.html","recommender":"极速男孩"},{"heading":"What Every C Programmer Should Know About Undefined Behavior #1/3","url":"https://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html","recommender":"Smallfly"},{"heading":"Debugging SwiftUI views: what caused that change?","url":"https://www.avanderlee.com/swiftui/debugging-swiftui-views/","recommender":"Barney"},{"heading":"Custom Traits and SwiftUI","url":"https://useyourloaf.com/blog/custom-traits-and-swiftui/","recommender":"Damien"},{"heading":"Revealing and explaining package scores","url":"https://blog.swiftpackageindex.com/posts/revealing-and-explaining-package-scores","recommender":"EyreFree"},{"heading":"MachOView","url":"https://github.com/gdbinit/MachOView"}]},{"id":"r-268-2023-11-20","type":"report","title":"老司机 iOS 周报 #268 | 2023-11-20","issue":268,"date":"2023-11-20","year":2023,"path":"Reports/2023/#268-2023.11.20.md","url":"Reports/2023/%23268-2023.11.20.md","excerpt":"Generating Random Numbers Elegantly in Swift：文章介绍了在 Swift 中使用 RandomNumberGenerator 实现产生随机数的方式。写法优雅，可以产生自己任意范围的随机数，线程安全，还会根据 Swift 运行的平台来决定实现随机数的 api。；Reasoning about protocols：本文作者结合代码实例介绍了在 Swift 中面向协议编程的几个应用场景（动态派发，类泛","sections":[{"heading":"Generating Random Numbers Elegantly in Swift","url":"https://www.swiftjectivec.com/swift-randomnumbergenerator/","recommender":"zoeGuo"},{"heading":"Reasoning about protocols","url":"https://www.swiftindepth.com/articles/reasoning-about-protocols/","recommender":"J_Knight_"},{"heading":"在 Airbnb 爱彼迎解锁 SwiftUI","url":"https://mp.weixin.qq.com/s/AokW7NZvjBT76iaRnEnsOA","recommender":"AidenRao"},{"heading":"The complete guide to iOS & macOS development in Neovim","url":"https://wojciechkulik.pl/ios/the-complete-guide-to-ios-macos-development-in-neovim","recommender":"Smallfly"},{"heading":"An early look at the future of testing with swift-testing","url":"https://www.polpiella.dev/swift-testing/","recommender":"kemchenj"},{"heading":"百度 APP iOS 端包体积 50M 优化实践(七)编译器优化","url":"https://mp.weixin.qq.com/s/fmiccOgRx9_wopX9QmZiEA","recommender":"JonyFang"},{"heading":"SwiftBar","url":"https://github.com/swiftbar/SwiftBar","recommender":"xuyafei86"},{"heading":"Ensure Visual Accessibility: Glyphs, Icons and Shapes","url":"https://www.createwithswift.com/ensure-visual-accessibility-glyphs-icons-and-symbols/","recommender":"水水"},{"heading":"SwiftUI + Metal – Create special effects by building your own shaders","url":"https://www.youtube.com/watch?v=EgzWwgRpUuw","recommender":"Cooper Chen"}]},{"id":"r-267-2023-11-13","type":"report","title":"老司机 iOS 周报 #267 | 2023-11-13","issue":267,"date":"2023-11-13","year":2023,"path":"Reports/2023/#267-2023.11.13.md","url":"Reports/2023/%23267-2023.11.13.md","excerpt":"Apple Vision Pro 挑战赛：挑战赛地点在上海，分为两场，分别是 11 月 21、22 日，12 月 5、6 日，还没有亲自体验过 Vision Pro 的同学可以报名尝试参加，苹果会培训 空间计算 相关的知识。；深入浅出 MachO：本文通过对 MachO 文件的文件格式研究，介绍了 MacOS 和 iOS 中可执行文件的加载过程，从内核中的处理一直到动态连接器 dyld 的代码分析。可以看出 MachO 与 ELF 相比","sections":[{"heading":"Apple Vision Pro 挑战赛","url":"https://developer.apple.com/events/view/98ZM6WUVR4/dashboard"},{"heading":"深入浅出 MachO","url":"https://evilpan.com/2020/09/06/macho-inside-out/#mach-o-101","recommender":"JonyFang"},{"heading":"Calculating a Smooth Clock Hands Animation","url":"https://david-smith.org/blog/2023/11/06/design-notes-46/","recommender":"Smallfly"},{"heading":"Bad practice: not using multiline strings","url":"https://www.swiftwithvincent.com/blog/bad-practice-not-using-multiline-strings","recommender":"Barney"},{"heading":"iOS Crash 治理：淘宝 VisionKitCore 问题修复","url":"https://mp.weixin.qq.com/s/pmnrDbIeueGS_7Sck-83qQ","recommender":"Cooper Chen"},{"heading":"iOS libMalloc 源码分析","url":"https://juejin.cn/post/7290817530415775804","recommender":"老峰"},{"heading":"Progress toward the Swift 6 language mode","url":"https://forums.swift.org/t/progress-toward-the-swift-6-language-mode/68315","recommender":"AidenRao"},{"heading":"Things I wish someone would have told me about configuring VSCode","url":"https://www.bryanbraun.com/2023/08/10/things-i-wish-someone-would-have-told-me-about-configuring-vscode/","recommender":"anotheren"},{"heading":"Hierarchical background styles in SwiftUI","url":"https://nilcoalescing.com/blog/HierarchicalBackgroundStyles/","recommender":"Damien"},{"heading":"Why Curiosity Is Better Than Being Smart?","url":"https://durmonski.com/life-advice/curiosity-is-better-than-being-smart/","recommender":"水水"},{"heading":"Grape","url":"https://github.com/li3zhen1/Grape","recommender":"Leo"},{"heading":"NSSpain XI (2023)","url":"https://vimeo.com/showcase/10672108","recommender":"含笑饮砒霜"}]},{"id":"r-266-2023-11-06","type":"report","title":"老司机 iOS 周报 #266 | 2023-11-06","issue":266,"date":"2023-11-06","year":2023,"path":"Reports/2023/#266-2023.11.06.md","url":"Reports/2023/%23266-2023.11.06.md","excerpt":"2023 年每个软件开发者都必须知道的关于 Unicode 的最基本的知识（仍然不准找借口！）：本文使用风趣幽默的语言和生动的配图介绍了字符串编码的发展和 Unicode / UTF-8 的 “基本知识”，可以帮助读者更深入的理解 Swift 中字符串的设计。感兴趣的同学可以阅读原文了解。；视频号直播：如何进一步降低功耗占用？：这篇文章从一个简单的问题出发：同样的直播间，在有点赞动画时的帧率和 gpu 占用显著高于无动画时，一步步讲解了","sections":[{"heading":"2023 年每个软件开发者都必须知道的关于 Unicode 的最基本的知识（仍然不准找借口！）","url":"https://blog.xinshijiededa.men/unicode/","recommender":"xuyafei86"},{"heading":"视频号直播：如何进一步降低功耗占用？","url":"https://mp.weixin.qq.com/s/LKoGJylYfyk8iTXlvoW0gA","recommender":"莲叔"},{"heading":"深入理解 MachO 结构与运行时系统","url":"https://joey520.github.io/2020/01/30/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3MachO%E7%BB%93%E6%9E%84/%23%E5%89%8D%E8%A8%80","recommender":"Barney"},{"heading":"Switching Build Systems, Seamlessly","url":"https://engineering.atspotify.com/2023/10/switching-build-systems-seamlessly/","recommender":"Smallfly"},{"heading":"How async/await works internally in Swift","url":"https://swiftrocks.com/how-async-await-works-internally-in-swift","recommender":"EyreFree"},{"heading":"Working With UIViewRepresentable","url":"https://chris.eidhof.nl/post/view-representable/","recommender":"极速男孩"},{"heading":"Fatbobman ’ s Swift Weekly","url":"https://fatbobman.substack.com/p/fatbobmans-swift-weekly-001","recommender":"老驴"},{"heading":"记一个诡异的 TCP 挥手乱序问题","url":"https://mp.weixin.qq.com/s/vX0C-AmJ_tIddWbsWeizJA","recommender":"Crazy"},{"heading":"Swift Connection 2023 - Hidde van der Ploeg - How to Make Your App Look Like You've Hired a Designer","url":"https://www.youtube.com/watch?v=tlk9BRvIbq4","recommender":"Cooper Chen"}]},{"id":"r-265-2023-10-30","type":"report","title":"老司机 iOS 周报 #265 | 2023-10-30","issue":265,"date":"2023-10-30","year":2023,"path":"Reports/2023/#265-2023.10.30.md","url":"Reports/2023/%23265-2023.10.30.md","excerpt":"iOS & iPadOS 17.2 Beta & Xcode 15.1 Beta 2 Release：上周苹果发布了 iOS & iPadOS 17.2 、watchOS 10.2 、Xcode 15.1 等系列 Beta 版本的更新。较为重要的信息如下：；Bad practice: not using Phantom Types：这篇文章讨论了在 Swift 编程中使用虚类型（Phantom Types）引发的错误。作者首先构造了 2","sections":[{"heading":"iOS & iPadOS 17.2 Beta & Xcode 15.1 Beta 2 Release","url":"https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-17_2-release-notes"},{"heading":"Bad practice: not using Phantom Types","url":"https://www.swiftwithvincent.com/blog/bad-practice-not-using-phantom-types","recommender":"Damien"},{"heading":"Designing for spatial computing: from iOS and iPadOS to visionOS","url":"https://www.createwithswift.com/designing-for-visionos-shifting-from-ios-and-ipados/","recommender":"Smallfly"},{"heading":"Being a good citizen in the land of SwiftSyntax","url":"https://www.pointfree.co/blog/posts/116-being-a-good-citizen-in-the-land-of-swiftsyntax","recommender":"zvving"},{"heading":"Apple ’ s use of Swift and SwiftUI in iOS 17","url":"https://blog.timac.org/2023/1019-state-of-swift-and-swiftui-ios17/","recommender":"JonyFang"},{"heading":"The Care and Feeding of Developer ID","url":"https://developer.apple.com/forums/thread/732320","recommender":"水水"},{"heading":"Apparency - The App That Opens Apps","url":"https://www.mothersruin.com/software/Apparency/","recommender":"J_Knight_"},{"heading":"Matthew Massicotte - The Bleeding Edge of Swift Concurrency","url":"https://www.youtube.com/watch?v=HqjqwW12wpw","recommender":"含笑饮砒霜"}]},{"id":"r-264-2023-10-23","type":"report","title":"老司机 iOS 周报 #264 | 2023-10-23","issue":264,"date":"2023-10-23","year":2023,"path":"Reports/2023/#264-2023.10.23.md","url":"Reports/2023/%23264-2023.10.23.md","excerpt":"云音乐如何「搭」出新首页：本文介绍了云音乐如何通过可视化搭建系统支撑新版首页这样的核心场景，提出一套基于性能、动态化和精细化运营角度的解决方案。文章还探讨了动态化能力的重要性、各种动态化方案的能力和性能表现、针对不同业务诉求做出合适选择的必要性。；【iOS】一段防护代码引发的内存风暴：本文详细描述了腾讯音乐在一次防护代码导致的 OOM 问题上进行排查的过程，不仅详细解释了内存分析问题从基建到详细手段的步骤，也从另一个侧面说明了 Runl","sections":[{"heading":"云音乐如何「搭」出新首页","url":"https://mp.weixin.qq.com/s/rZzpXrU3T_0gbKhpM0M4dA","recommender":"JonyFang"},{"heading":"【iOS】一段防护代码引发的内存风暴","url":"https://mp.weixin.qq.com/s/zgwciJibBxyrA_wT2-w3QQ","recommender":"Cooper Chen"},{"heading":"Swift Parameter Packs","url":"https://paul-samuels.com/blog/2023/09/29/swift-parameter-packs/","recommender":"享耳先森"},{"heading":"Xcode 15以下版本调试 iOS 17 设备","url":"https://developer.apple.com/forums/thread/730947?answerId=758061022#758061022","recommender":"含笑饮砒霜"},{"heading":"Changes to URL string parsing in iOS 17","url":"https://augmentedcode.io/2023/10/02/changes-to-url-string-parsing-in-ios-17/","recommender":"Damien"},{"heading":"A New Approach to Testing in Swift","url":"https://forums.swift.org/t/a-new-approach-to-testing-in-swift/67425","recommender":"kemchenj"},{"heading":"直播流⻚⾯内存优化⽅案","url":"https://mp.weixin.qq.com/s/RzOpU_50WIZjUUNuKOBShA","recommender":"JonyFang"},{"heading":"Android 和 iOS 渲染架构差异对比，孰胜孰负？","url":"https://mp.weixin.qq.com/s/5s11skxtI5FHVTa3ZuqQ7g","recommender":"Crazy"},{"heading":"SwiftUIViewDebug","url":"https://github.com/Kyle-Ye/SwiftUIViewDebug#swiftuiviewdebug","recommender":"老峰"},{"heading":"swift-macro-testing","url":"https://github.com/pointfreeco/swift-macro-testing","recommender":"kemchenj"}]},{"id":"r-263-2023-10-16","type":"report","title":"老司机 iOS 周报 #263 | 2023-10-16","issue":263,"date":"2023-10-16","year":2023,"path":"Reports/2023/#263-2023.10.16.md","url":"Reports/2023/%23263-2023.10.16.md","excerpt":"ICP 备案上线：国庆节前夕，苹果审核商店也正式上线了 ICP 备案。目前新 APP 需要填写备案号才能提交审核；老 APP 目前不填备案号也能正常提审（预计是明年 4 月强制执行）。；Xcode 15.1 Beta Release Note：Xcode 15.1 Beta 版本发布，除了常规的新 SDK 发布，这次一条相对重要的信息是，从 15.1 开始，X86/64 的 芯片组（也就是 Intel CPU）不再能够开发 Vision","sections":[{"heading":"ICP 备案上线","url":"https://developer.apple.com/cn/help/app-store-connect/reference/app-information/"},{"heading":"Xcode 15.1 Beta Release Note","url":"https://developer.apple.com/documentation/xcode-release-notes/xcode-15_1-release-notes"},{"heading":"Migrating Ice Cubes to the SwiftUI Observation framework","url":"https://dimillian.medium.com/migrating-ice-cubes-to-the-swiftui-observation-framework-821f90deebee","recommender":"AidenRao"},{"heading":"Dismiss keyboard when return is pressed in a multiline SwiftUI TextField","url":"https://danielsaidi.com/blog/2023/09/15/dismiss-keyboard-when-return-is-pressed-in-a-multiline-swiftui-textfield","recommender":"Smallfly"},{"heading":"Interoperability: Swift ’ s Super Power","url":"https://browsercompany.substack.com/cp/137231709","recommender":"Cooper Chen"},{"heading":"深入理解 iOS Jetsam 机制，助力提升 Flotsam 召回率","url":"https://mp.weixin.qq.com/s/vUMmQvZ1I91fhf8kFXY_mA","recommender":"xuyafei86"},{"heading":"Swift 中闭包底层原理探索","url":"https://juejin.cn/post/6935797942435446791","recommender":"J_Knight_"},{"heading":"The Absolute Minimum Every Software Developer Must Know About Unicode in 2023","url":"https://tonsky.me/blog/unicode/","recommender":"水水"},{"heading":"@Model for CoreData","url":"https://www.alwaysrightinstitute.com//managedmodels/","recommender":"极速男孩"}]},{"id":"r-262-2023-09-25","type":"report","title":"老司机 iOS 周报 #262 | 2023-09-25","issue":262,"date":"2023-09-25","year":2023,"path":"Reports/2023/#262-2023.09.25.md","url":"Reports/2023/%23262-2023.09.25.md","excerpt":"WebP 堆缓冲区溢出 安全漏洞：23 年 9 月 12 日 Libwebp 公布了一个高危漏洞 CVE-2023-4863，评级为 Critical(8.8) 。受影响方众多，包括 Chrome，Firefox 等浏览器；集成 libWebP 的客户端 APP，以及包括部分版本的 Electron、flutte；iOS 点九图 NinePatch 解析：文章主要介绍了 iOS 点九图的应用实战。有原理介绍也有代码，是非常具体的实践，值","sections":[{"heading":"WebP 堆缓冲区溢出 安全漏洞","url":"https://github.com/advisories/GHSA-j7hp-h8jx-5ppr"},{"heading":"iOS 点九图 NinePatch 解析","url":"https://mp.weixin.qq.com/s/angyJag7AZntt2FLNCOuXw","recommender":"Barney"},{"heading":"开箱即用-移动网络 IPv6 浓度检测工具","url":"https://juejin.cn/post/7278899547828224039","recommender":"含笑饮砒霜"},{"heading":"Shake to undo in a SwiftUI app","url":"https://blog.thomasdurand.fr/story/2023-09-04-shake-to-undo-swiftui/","recommender":"zoeGuo"},{"heading":"How to build an iOS Live Activity","url":"https://medium.com/kinandcartacreated/how-to-build-ios-live-activity-d1b2f238819e","recommender":"anotheren"},{"heading":"Swift Macro: Revisited - The Strengths and Essence","url":"https://wezzard.com/post/2023/08/swift-macro-revisited-the-strengths-and-essence-a5a4","recommender":"AidenRao"},{"heading":"Swift Macro: Revisited - Traps and Pitfalls","url":"https://wezzard.com/post/2023/08/swift-macro-revisited-traps-and-pitfalls-1034","recommender":"[@邦Ben](https"},{"heading":"iPhone 15 Screen Sizes","url":"https://useyourloaf.com/blog/iphone-15-screen-sizes/","recommender":"ChenghzhiHuang"},{"heading":"Flutter 最优秀动画库「完全商业化」，Rive 2 你全面了解过吗？","url":"https://juejin.cn/post/7275155682051145787","recommender":"CrazyCoderShi"},{"heading":"ExampleKit","url":"https://github.com/toph42/ExampleKit","recommender":"Cooper Chen"},{"heading":"SnapshotTesting","url":"https://github.com/pointfreeco/swift-snapshot-testing","recommender":"J_Knight_"}]},{"id":"r-261-2023-09-18","type":"report","title":"老司机 iOS 周报 #261 | 2023-09-18","issue":261,"date":"2023-09-18","year":2023,"path":"Reports/2023/#261-2023.09.18.md","url":"Reports/2023/%23261-2023.09.18.md","excerpt":"App Store submissions now open for the latest OS releases：Xcode 15 RC 版本已经正式发布，目前 AppStore 已经可以接受使用 RC 版 Xcode 构建的产物了，同时苹果预告将在 2024 年 4 月起禁止使用 Xcode 14 提交新的产物。；网易云音乐 Tango 低代码引擎正式开源！：本文主要介绍了网易云开发的一款快速构建低代码平台的低代码设计器框架 Tan","sections":[{"heading":"App Store submissions now open for the latest OS releases","url":"https://developer.apple.com/news/?id=khzvxn8a"},{"heading":"网易云音乐 Tango 低代码引擎正式开源！","url":"https://mp.weixin.qq.com/s/X_F2JMY3rUm_mH-NP1FmEA","recommender":"Crazy"},{"heading":"Symbolicating SwiftUI (and any Apple Framework)","url":"https://www.emergetools.com/blog/posts/symbolicating-swiftui-and-any-apple-framework","recommender":"邦Ben"},{"heading":"Understanding Container Background for Widget in iOS 17","url":"https://swiftsenpai.com/development/widget-container-background/","recommender":"享耳先森"},{"heading":"A Day in the Life of a SwiftUI View","url":"https://chris.eidhof.nl/presentations/day-in-the-life/","recommender":"Smallfly"},{"heading":"我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash","url":"https://mp.weixin.qq.com/s/salgoWNYfqjhNwu30aHRnA","recommender":"JonyFang"},{"heading":"Introducing swiftly, a new Swift toolchain installer and manager","url":"https://forums.swift.org/t/introducing-swiftly-a-new-swift-toolchain-installer-and-manager/67254","recommender":"kemchenj"},{"heading":"SwiftDataKit","url":"https://github.com/fatbobman/SwiftDataKit","recommender":"含笑饮砒霜"},{"heading":"Introducing a Memory-Safe Successor Language in Large C++ Code Bases - John McCall - CppNow 2023","url":"https://www.youtube.com/watch?v=lgivCGdmFrw","recommender":"老峰"},{"heading":"Swift TO","url":"https://www.swiftconf.to/","recommender":"zvving"}]},{"id":"r-260-2023-09-11","type":"report","title":"老司机 iOS 周报 #260 | 2023-09-11","issue":260,"date":"2023-09-11","year":2023,"path":"Reports/2023/#260-2023.09.11.md","url":"Reports/2023/%23260-2023.09.11.md","excerpt":"Hidden feature: static properties：Swift 的静态属性具有一项隐藏特性：它们是隐式懒加载的，只在首次访问时初始化。这意味着，即使应用中有许多静态属性，它们也不会在应用启动时全部初始化，从而优化性能。若尝试显式地用 lazy 关键字声明静态属性，Swift 会报错，因为静态属性已经是懒加载的。；C++ 知识体系总结：语言核心与代码工程：这篇文章初看下属于谁看了必然会收藏但大概率不会看的文章。但看完后又给","sections":[{"heading":"Hidden feature: static properties","url":"https://www.swiftwithvincent.com/blog/hidden-feature-static-properties","recommender":"极速男孩"},{"heading":"C++ 知识体系总结：语言核心与代码工程","url":"https://mp.weixin.qq.com/s/lQoH4UF36_zKrw-Jbp2ylw","recommender":"莲叔"},{"heading":"The new Swift section in binaries built with Swift 5.9 and Xcode 15, \\_\\_TEXT/\\_\\_constg_swift","url":"https://twitter.com/sond813/status/1699822345471541415","recommender":"kemchenj"},{"heading":"一线大厂程序员的考公上岸心得","url":"https://mp.weixin.qq.com/s/dlOEngLD150RaTkAlAVkww","recommender":"老驴"},{"heading":"Xcode 15 iOS 17 小组件适配必看：Widget needs to adopt container background","url":"https://www.craft.me/s/UOcc5BqYFazbL2","recommender":"anotheren"},{"heading":"Develop and test OpticID for Vision Pro","url":"https://blog.eidinger.info/develop-and-test-opticid-for-vision-pro","recommender":"EyreFree"},{"heading":"实战总结｜抽丝剥茧，记一次神奇的崩溃","url":"https://mp.weixin.qq.com/s/vMlK7oIQH62VV6qHSPHnQQ","recommender":"xuyafei86"},{"heading":"京东京喜 iOS 包体积分析工具","url":"https://juejin.cn/post/7273740834201600063","recommender":"Damien"},{"heading":"add a label to the outer loop and use break with the label","url":"https://twitter.com/lee_kah_seng/status/1696795033033208151?s=43&t=Oi5pq1Y0PftkjDmJadkvxQ","recommender":"zoeGuo"}]},{"id":"r-259-2023-09-04","type":"report","title":"老司机 iOS 周报 #259 | 2023-09-04","issue":259,"date":"2023-09-04","year":2023,"path":"Reports/2023/#259-2023.09.04.md","url":"Reports/2023/%23259-2023.09.04.md","excerpt":"一文入门最热的 LLM 应用开发框架 LangChain：LangChain 是一个用于开发由语言模型驱动的应用程序的框架。笔者认为 Langchain 解决了现在开发人工智能应用（以 GPT 模型为例）的一些切痛点：数据滞后、token 数量限制、不能进行联网、不能与其他数据源链接。文章逐一介绍了 LangChain 以下组件的使用：；Adding teachable moments to your apps with TipKit：","sections":[{"heading":"一文入门最热的 LLM 应用开发框架 LangChain","url":"https://mp.weixin.qq.com/s/bYzNNL3F0998Do2Jl0PQtw","recommender":"zoeGuo"},{"heading":"Adding teachable moments to your apps with TipKit","url":"https://bendodson.com/weblog/2023/07/26/tipkit-tutorial/"},{"heading":"Mastering Thread Safety in Swift With One Runtime Trick","url":"https://betterprogramming.pub/mastering-thread-safety-in-swift-with-one-runtime-trick-260c358a7515","recommender":"莲叔"},{"heading":"Improve the build times of your SPM Packages and your apps","url":"https://mdb1.github.io/2023-08-18-improve-build-times-in-spm-packages-and-in-your-apps/","recommender":"含笑饮砒霜"},{"heading":"为现有 App 及 API 架构实现 End-to-End Testing 的可能性验证","url":"https://medium.com/zrealm-ios-dev/poc-app-end-to-end-testing-local-snapshot-api-mock-server-5a5c4b25a83d","recommender":"EyreFree"},{"heading":"解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug","url":"https://www.fatbobman.com/posts/serious-issues-caused-by-delayed-state-updates-in-SwiftUI/","recommender":"Damien"},{"heading":"腾讯 QQ 桌面版架构升级：内存优化探索与总结","url":"https://mp.weixin.qq.com/s/REHP26sx-8HjDIvGM63kJw","recommender":"Leo"},{"heading":"SwiftUI Tips：如何收起键盘","url":"https://juejin.cn/post/7268592310040199223","recommender":"享耳先森"},{"heading":"Flutter 小技巧之 3.13 全新生命周期 AppLifecycleListener","url":"https://mp.weixin.qq.com/s/wrWTklYNwLlTMBZJHxaudA","recommender":"Crazy"},{"heading":"Arc on Windows projects: swift-build","url":"https://github.com/thebrowsercompany/swift-build","recommender":"kemchenj"}]},{"id":"r-258-2023-08-28","type":"report","title":"老司机 iOS 周报 #258 | 2023-08-28","issue":258,"date":"2023-08-28","year":2023,"path":"Reports/2023/#258-2023.08.28.md","url":"Reports/2023/%23258-2023.08.28.md","excerpt":"Flutter 3.13 更新：Flutter 季度更新来啦 ！！！本次更新依然在 3.x 系列之下，也就是说还是持续的修复和优化，那么本次带来了哪些有意思的能力呢 :；Applying metal shader to text in SwiftUI：今年的 WWDC23 引入了用于将 shaders 着色器应用于 SwiftUI 视图的视图修改器，同时因为着色器还符合 ShapeStyle 协议，这意味着开发者可以直接将着色器传递给 ","sections":[{"heading":"Flutter 3.13 更新","url":"https://mp.weixin.qq.com/s/4zM6hwGKsR0X7E6n2VlCXA","recommender":"CrazyCoderShi"},{"heading":"Applying metal shader to text in SwiftUI","url":"https://augmentedcode.io/2023/08/07/applying-metal-shader-to-text-in-swiftui/","recommender":"Cooper Chen"},{"heading":"Swift ’ s closure capturing mechanics","url":"https://www.swiftbysundell.com/articles/swifts-closure-capturing-mechanics/","recommender":"JonyFang"},{"heading":"Deterministic builds with clang and lld","url":"http://blog.llvm.org/2019/11/deterministic-builds-with-clang-and-lld.html","recommender":"老峰"},{"heading":"How to Automate Memory Leak Detection in Your Swift Code with XCTest","url":"https://qualitycoding.org/swift-memory-leak-detection-xctest/","recommender":"AidenRao"},{"heading":"How to check if you use a required reason API","url":"https://blog.eidinger.info/how-to-check-if-you-use-a-required-reason-api","recommender":"J_Knight_"},{"heading":"SwingAnimation","url":"https://github.com/TopWidgets/SwingAnimation","recommender":"卓同学"}]},{"id":"r-257-2023-08-21","type":"report","title":"老司机 iOS 周报 #257 | 2023-08-21","issue":257,"date":"2023-08-21","year":2023,"path":"Reports/2023/#257-2023.08.21.md","url":"Reports/2023/%23257-2023.08.21.md","excerpt":"SSWG 2023 Annual Update：Swift 服务端工作组发布了今年的年度进度报告；Releasing Swift Transformers: Run On-Device LLMs in Apple Devices：随着大模型的持续火热，以及各路大模型的涌现，想必有很多开发者已经跃跃欲试。这是一篇由 Hugging Face 的工程师发布的指导 Swift 开发者在 Mac 上运行大模型的文章。文章主要有以下内容： - 将","sections":[{"heading":"SSWG 2023 Annual Update","url":"https://www.swift.org/blog/sswg-update-2023/","recommender":"kemchenj"},{"heading":"Releasing Swift Transformers: Run On-Device LLMs in Apple Devices","url":"https://huggingface.co/blog/swift-coreml-llm","recommender":"zoeGuo"},{"heading":"Adapting an App to visionOS","url":"https://varrall.substack.com/p/adapting-an-app-to-visionos","recommender":"EyreFree"},{"heading":"Build performance analysis for speeding up Xcode builds","url":"https://www.avanderlee.com/optimization/analysing-build-performance-xcode/","recommender":"Cooper Chen"},{"heading":"Dead Code Detection With Reaper","url":"https://www.emergetools.com/blog/posts/dead-code-detection-with-reaper","recommender":"老峰"},{"heading":"swiftui-cookbook","url":"https://www.kodeco.com/books/swiftui-cookbook","recommender":"含笑饮砒霜"},{"heading":"AppKit vs SwiftUI: Stable vs Shiny","url":"https://milen.me/writings/appkit-vs-swiftui-stable-vs-shiny/","recommender":"水水"}]},{"id":"r-256-2023-08-14","type":"report","title":"老司机 iOS 周报 #256 | 2023-08-14","issue":256,"date":"2023-08-14","year":2023,"path":"Reports/2023/#256-2023.08.14.md","url":"Reports/2023/%23256-2023.08.14.md","excerpt":"TestFlight Update Xcode 15 beta 6：目前已经可以使用 Xcode 15 Beta 6 打包的 APP 上传 TestFlight 收集用户对一些新特性的反馈了，比较重要的例如 敏感内容检测(SCSensitivityAnalyzer) 等。；WWDC23 10187, 10195, 10189, 10196 - SwiftData 全知道：SwiftData 是什么？SwiftUI 中要如何使用 Swif","sections":[{"heading":"TestFlight Update Xcode 15 beta 6","url":"https://developer.apple.com/news/releases/?id=08022023a"},{"heading":"WWDC23 10187, 10195, 10189, 10196 - SwiftData 全知道","url":"https://xiaozhuanlan.com/topic/4937125086","recommender":"kukushi"},{"heading":"WWDC23 10103 - 探索 App Intents 的功能更新","url":"https://xiaozhuanlan.com/topic/9860547123","recommender":"王守楷、刘欢"},{"heading":"WWDC23 10142 - 探索应用内购测试","url":"https://xiaozhuanlan.com/topic/5180246739","recommender":"Lin"},{"heading":"深入理解 Observation - 原理，back porting 和性能","url":"https://onevcat.com/2023/08/observation-framework/","recommender":"zvving"},{"heading":"移动端性能挖掘：字节跳动 iOS 与安卓性能归因实践","url":"https://mp.weixin.qq.com/s/12Co7Tbvw2PmIZPqFlxaHA","recommender":"Leo"},{"heading":"Dependencies as a Package Author","url":"https://www.massicotte.org/package-author-dependencies","recommender":"Barney"},{"heading":"数据序列化工具 Protobuf 编码 & 避坑指南","url":"https://mp.weixin.qq.com/s/xH9v4Al3B2vPbZIp2yqZpQ","recommender":"Smallfly"},{"heading":"GitHub embraces Swift and provides code analysis, security alerts and dependency updates for Swift projects","url":"https://blog.eidinger.info/github-embraces-swift-and-provides-code-analysis-security-alerts-and-dependency-updates-for-swift-projects","recommender":"kemchenj"}]},{"id":"r-255-2023-08-07","type":"report","title":"老司机 iOS 周报 #255 | 2023-08-07","issue":255,"date":"2023-08-07","year":2023,"path":"Reports/2023/#255-2023.08.07.md","url":"Reports/2023/%23255-2023.08.07.md","excerpt":"Bad practice: capturing a method reference：这篇文章讨论了在 Swift 中捕获方法引用的不良实践。文章指出，尽管在将方法引用作为参数传递给函数时不需要显式地使用 self 关键字，但实际上编译器会自动捕获对 self 的强引用，从而可能导致循环引用的问题，且编译器不会对此发出警告。；Objective-C Internals：虽然 Swift 已经成为官方默认的编程语言，但在国内大部分大型应用","sections":[{"heading":"Bad practice: capturing a method reference","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/4137","recommender":"AidenRao"},{"heading":"Objective-C Internals","url":"https://alwaysprocessing.blog/series/objc-internals","recommender":"Smallfly"},{"heading":"How to Create Callback-like Behavior Using AsyncStream in Swift","url":"https://swiftsenpai.com/swift/asyncstream-callback","recommender":"Barney"},{"heading":"Xcode 14 如何调试 iOS 17","url":"https://mp.weixin.qq.com/s/9K6gH-owQC_Oi6ZzRo2cRQ","recommender":"EyreFree"},{"heading":"Smart Open Xcode","url":"https://christianselig.com/2023/08/smartly-open-xcode/","recommender":"含笑饮砒霜"},{"heading":"​系统自带日志框架 os.Logger","url":"https://mp.weixin.qq.com/s/On3vVRu_gQwT9eT7Do62BQ","recommender":"Cooper Chen"},{"heading":"百度 APP iOS 端包体积 50M 优化实践(五) HEIC 图片和无用类优化实践","url":"https://mp.weixin.qq.com/s/PU5rC0U0XZ1VYqLWSUBWLQ","recommender":"xuyafei86"},{"heading":"TipKit-Examples","url":"https://github.com/jordibruin/TipKit-Examples","recommender":"zoeGuo"},{"heading":"A WWDC Design Lab Made My App So Much Better","url":"https://chriswu.com/posts/wwdc/designlab2023/","recommender":"水水"}]},{"id":"r-254-2023-07-31","type":"report","title":"老司机 iOS 周报 #254 | 2023-07-31","issue":254,"date":"2023-07-31","year":2023,"path":"Reports/2023/#254-2023.07.31.md","url":"Reports/2023/%23254-2023.07.31.md","excerpt":"List of APIs that require declared reasons now available：苹果在 WWDC23 上发布了应用程序（包括 SDK）的新隐私政策，并有 Get started with privacy manifests 的单独专题。7 月 27 日苹果发布了此则新闻，称：2023 年秋季开始，如果新上传的应用程序中使用了没有提供隐私清单的相关 API，那；Apple Vision Pro 开发者实验","sections":[{"heading":"List of APIs that require declared reasons now available","url":"https://developer.apple.com/news/?id=z6fu1dcu","recommender":"zoeGuo"},{"heading":"Apple Vision Pro 开发者实验室","url":"https://developer.apple.com/cn/visionos/labs/","recommender":"老峰"},{"heading":"WWDC23 10117 - App Store Connect 的新特性","url":"https://xiaozhuanlan.com/topic/5304186279","recommender":"iHTCboy"},{"heading":"WWDC23 10080 - 使用 RealityKit 构建空间体验","url":"https://xiaozhuanlan.com/topic/8296735401","recommender":"郭介騵"},{"heading":"WWDC23 10165 - What's new in Xcode 15","url":"https://xiaozhuanlan.com/topic/4731268095","recommender":"Noah"},{"heading":"WWDC23 10141 - App Store server API 新特性","url":"https://xiaozhuanlan.com/topic/6725091438","recommender":"yt"},{"heading":"WWDC23 10119 - 在 Safari 上开发浏览器插件","url":"https://xiaozhuanlan.com/topic/3290654871"},{"heading":"Flutter 的线程模型和异步原理","url":"https://mp.weixin.qq.com/s/XvVD-yG79x8KX1U5LJgMvg","recommender":"CrazyCoderShi"},{"heading":"Precompiled headers","url":"https://maskray.me/blog/2023-07-16-precompiled-headers","recommender":"Leo"},{"heading":"Swift Package Plugins 初探","url":"https://mp.weixin.qq.com/s/US6_4Yvs_XnUF1gELYiN6g","recommender":"含笑饮砒霜"},{"heading":"Building Peak","url":"https://harshil.net/blog/building-peak","recommender":"极速男孩"},{"heading":"asciiflow","url":"https://asciiflow.com/#/","recommender":"水水"},{"heading":"UIGraphicsBeginImageContextWithOptions Deprecated","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/4114","recommender":"Smallfly"},{"heading":"A collection of Metal Shaders","url":"https://github.com/rafunderscore/metallurgy","recommender":"Cooper Chen"}]},{"id":"r-253-2023-07-24","type":"report","title":"老司机 iOS 周报 #253 | 2023-07-24","issue":253,"date":"2023-07-24","year":2023,"path":"Reports/2023/#253-2023.07.24.md","url":"Reports/2023/%23253-2023.07.24.md","excerpt":"Unity support for visionOS: What you need to know：Unity 提供 visionOS 支持的 Beta 版本已经放出了申请链接，感兴趣的同学可以自行申请。；WWDC23 10164 - What's new in Swift：这个 Session 涉及了 Swift 的新语法特性和 Swift Macro 的话题，这些功能对于编写更加灵活和健壮的 API 以及高质量代码起到了很大的帮助。","sections":[{"heading":"Unity support for visionOS: What you need to know","url":"https://blog.unity.com/engine-platform/unity-support-for-visionos"},{"heading":"WWDC23 10164 - What's new in Swift","url":"https://xiaozhuanlan.com/topic/7306192458","recommender":"冬瓜"},{"heading":"WWDC23 10167 - 初见 Swift 宏","url":"https://xiaozhuanlan.com/topic/1403528796","recommender":"方舟(WAMaker)"},{"heading":"WWDC23 10117 - App Store Connect 的新特性","url":"https://xiaozhuanlan.com/topic/5304186279","recommender":"iHTCboy"},{"heading":"Android 视角谈 Bazel 与 Gradle 构建系统","url":"https://mp.weixin.qq.com/s/4AI7H428oSc4fWgcK3KOpQ","recommender":"Crazy"},{"heading":"How to Use Swift Package Manager to Save Gigabytes of Network Traffic and Disk Space","url":"https://betterprogramming.pub/how-to-use-swift-package-manager-saving-gigabytes-of-network-traffic-and-disk-space-998bd148ad56","recommender":"Smallfly"},{"heading":"Bad practice: testing if a String is empty","url":"https://www.swiftwithvincent.com/blog/bad-practice-testing-if-a-string-is-empty","recommender":"JonyFang"},{"heading":"Convenience Property Wrappers vs Custom Data Access Layer in SwiftUI","url":"https://azamsharp.com/2023/07/15/property-wrappers-vs-data-access-layer.html","recommender":"AidenRao"},{"heading":"Developer Duck AI for Xcode","url":"https://apps.apple.com/app/id1662283032","recommender":"EyreFree"},{"heading":"DeckKit","url":"https://github.com/danielsaidi/deckkit","recommender":"邦Ben"},{"heading":"Invisible Details of Interaction Design","url":"https://rauno.me/craft/interaction-design","recommender":"水水"},{"heading":"WWDC23 10156 & 10157 - SwiftUI 动画篇","url":"https://xiaozhuanlan.com/topic/3165078924","recommender":"zddhub(张东东)"},{"heading":"WWDC23 10122 - 探索适用于现代 Web 的媒体格式","url":"https://xiaozhuanlan.com/topic/1823954706","recommender":"夏天"},{"heading":"WWDC23 10053 - What's new in privacy","url":"https://xiaozhuanlan.com/topic/9504861273","recommender":"胡军（Hummer）"}]},{"id":"r-252-2023-07-17","type":"report","title":"老司机 iOS 周报 #252 | 2023-07-17","issue":252,"date":"2023-07-17","year":2023,"path":"Reports/2023/#252-2023.07.17.md","url":"Reports/2023/%23252-2023.07.17.md","excerpt":"WWDC23 10055 - UIKit 中的新功能：本文主要介绍了 UIKit 在 iOS 17 中的新功能、核心架构改进和 iPad OS 应用程序的改进，并且提供了多项常规增强功能，例如 Xcode 预览支持、自定义特征、交互式文本操作等。 这些增强功能为应用程序开发人员提供了更好的设计和用户体验，同时还改进了语言支持和性能。；WWDC23 10197 - SF Symbols 5 使用指南：为了更方便没有 SF Symbols ","sections":[{"heading":"WWDC23 10055 - UIKit 中的新功能","url":"https://xiaozhuanlan.com/topic/0651384792","recommender":"Sharker"},{"heading":"WWDC23 10197 - SF Symbols 5 使用指南","url":"https://xiaozhuanlan.com/topic/6438257091","recommender":"Mim0sa"},{"heading":"WWDC23 10028 - 让你的小组件栩栩如生","url":"https://xiaozhuanlan.com/topic/8965310274","recommender":"Raydon"},{"heading":"iOS 中的栈内存保护： ____stack_chk_fail 和 ARMv8.3 的指针验证机制","url":"https://juejin.cn/post/7251849146004734008","recommender":"莲叔"},{"heading":"轻量化的 iOS 动画框架","url":"https://mp.weixin.qq.com/s/ABveMrA--3JWkpfb2d09lw","recommender":"J_Knight_"},{"heading":"Flutter 小技巧之 InkWell & Ink 你了解多少","url":"https://mp.weixin.qq.com/s/TL7bRp9f9BrAgiwGc1OXGw","recommender":"CrazyCoderShi"},{"heading":"百度 APP iOS 端包体积 50M 优化实践(四)代码优化","url":"https://mp.weixin.qq.com/s/H9KtBPE67g3752OcnjXG7A","recommender":"JonyFang"},{"heading":"@backDeployed to extend function availability to older OS releases","url":"https://www.avanderlee.com/swift/backdeployed-function-back-deployment/","recommender":"Smallfly"},{"heading":"Introducing Swift HTTP Types","url":"https://www.swift.org/blog/introducing-swift-http-types/","recommender":"Damien"},{"heading":"First Attempt at Designing for visionOS","url":"https://www.david-smith.org/blog/2023/07/10/design-notes-39/","recommender":"EyreFree"},{"heading":"WWDC23 10191 - 在 iOS 上使用 Object Capture","url":"https://xiaozhuanlan.com/topic/8741092356","recommender":"轻舟"},{"heading":"WWDC23 10188 - 使用 CKSyncEngine 同步 iCloud","url":"https://xiaozhuanlan.com/topic/5379482610","recommender":"LabLawliet"},{"heading":"WWDC23 10121 - What's new in CSS","url":"https://xiaozhuanlan.com/topic/5902738416","recommender":"leejunhui"},{"heading":"WWDC23 10105 - 打造响应更快的相机体验","url":"https://xiaozhuanlan.com/topic/8534120679","recommender":"Lion"}]},{"id":"r-251-2023-07-10","type":"report","title":"老司机 iOS 周报 #251 | 2023-07-10","issue":251,"date":"2023-07-10","year":2023,"path":"Reports/2023/#251-2023.07.10.md","url":"Reports/2023/%23251-2023.07.10.md","excerpt":"Swift Package Index Supporting visionOS：Swift Package Index 宣布添加 visionOS 的支持，所有在这上面发布的库都会运行兼容性测试，并且在网站上展示：；WWDC23 10123 - 把你的游戏移植到 Mac 上（一）：苹果今年在游戏上下了大力气，不仅提供了 Game Porting Toolkit 和 Metal Shader Converter 这样的重量级工具，让开发者","sections":[{"heading":"Swift Package Index Supporting visionOS","url":"https://blog.swiftpackageindex.com/posts/supporting-visionos/"},{"heading":"WWDC23 10123 - 把你的游戏移植到 Mac 上（一）","url":"https://xiaozhuanlan.com/topic/7036984215","recommender":"JPlay"},{"heading":"WWDC23 10137 - Cinematic API 助你成为电影大师","url":"https://xiaozhuanlan.com/topic/0691783452","recommender":"bq"},{"heading":"WWDC23 10170 - Swift 结构化并发进阶","url":"https://xiaozhuanlan.com/topic/3249081765","recommender":"MiG"},{"heading":"WWDC23 10149 - Discover Observation in SwiftUI","url":"https://xiaozhuanlan.com/topic/5023861974","recommender":"万圣(Khala-wan)"},{"heading":"SwiftUI Data Flow 2023","url":"https://troz.net/post/2023/swiftui-data-flow-2023/","recommender":"AidenRao"},{"heading":"用 ChatGPT 搭建代码知识库，提升开发效率","url":"https://mp.weixin.qq.com/s/MpF9xBHYjgnCHNkFn1AsOA","recommender":"EyreFree"},{"heading":"企业微信大规模组织架构性能优化实践","url":"https://mp.weixin.qq.com/s/eK47AzCSSf8-W3wZdjrXXQ","recommender":"Barney"},{"heading":"Monorepo 解决方案 — Bazel 在头条 iOS 的实践","url":"https://mp.weixin.qq.com/s/ajkOP7yeSYCcE0MoUUmUZA","recommender":"xuyafei86"},{"heading":"An In-depth Look at C++ Keyword: static","url":"https://mp.weixin.qq.com/s/GEBi8sEjRLWeUlYu4kgDAA","recommender":"老驴"},{"heading":"Weak 变量在对象释放时到底发生了什么？","url":"https://juejin.cn/post/7252869090549628986","recommender":"老峰"},{"heading":"Embracing CloudKit: Contents","url":"https://dev.shoppingukapp.com/2023/05/01/embracing-cloudkit-for-data-sharing-contents.html","recommender":"anotheren"},{"heading":"iOS 多语言解决方案全面指南","url":"https://juejin.cn/post/7248811984748462141","recommender":"J_Knight_"},{"heading":"Little big improvements in Xcode 15","url":"https://sarunw.com/posts/little-big-improvements-xcode15/","recommender":"zoeGuo"},{"heading":"WWDC23 10159 - Beyond scroll views","url":"https://xiaozhuanlan.com/topic/5138027649","recommender":"喵星人"},{"heading":"WWDC23 10124 - 把你的游戏移植到 Mac 上（二）：编译 Shaders","url":"https://xiaozhuanlan.com/topic/0289537416"},{"heading":"WWDC23 10244 - 使用 Swift-DocC 构建丰富的文档","url":"https://xiaozhuanlan.com/topic/5976024813","recommender":"叶絮雷"},{"heading":"WWDC23 10107 - 在 App 中接入照片选择器","url":"https://xiaozhuanlan.com/topic/5964728310","recommender":"nuomi1"}]},{"id":"r-250-2023-07-03","type":"report","title":"老司机 iOS 周报 #250 | 2023-07-03","issue":250,"date":"2023-07-03","year":2023,"path":"Reports/2023/#250-2023.07.03.md","url":"Reports/2023/%23250-2023.07.03.md","excerpt":"GitHub 的 Dependency Graph, Dependabot Alerts 和 Advisory Database 现在正式提供 Swift 的支持：之前在 244 期周报里曾经提到过 GitHub 的代码扫描功能计划提供 Swift 的支持，现在这个功能已经正式上线了，感兴趣的朋友可以赶紧去尝试一下。；WWDC23 10013 - Meet StoreKit for SwiftUI：内购（IAP）的实现一直是一个复杂棘手","sections":[{"heading":"GitHub 的 Dependency Graph, Dependabot Alerts 和 Advisory Database 现在正式提供 Swift 的支持","url":"https://github.blog/changelog/2023-06-19-dependency-graph-dependabot-alerts-and-advisory-database-now-support-swift-advisories","recommender":"kemchenj"},{"heading":"WWDC23 10013 - Meet StoreKit for SwiftUI","url":"https://xiaozhuanlan.com/topic/0579631284","recommender":"Rickey"},{"heading":"WWDC23 10111 - 使用 ImmersiveSpace 让 SwiftUI 跃出屏幕","url":"https://xiaozhuanlan.com/topic/2586749130","recommender":"Layer"},{"heading":"WWDC23 10262 - 重新探索 Safari 开发者功能","url":"https://xiaozhuanlan.com/topic/0356874192"},{"heading":"WWDC23 10184 - Meet ActivityKit/相遇实时小组件","url":"https://xiaozhuanlan.com/topic/3186527094","recommender":"小杰瑞"},{"heading":"AppIntents for Widgets","url":"https://alexanderweiss.dev/blog/2023-06-10-appintents-for-widgets","recommender":"享耳先森"},{"heading":"Apple's Linker & Deterministic Builds","url":"https://milen.me/writings/apple-linker-ld64-deterministic-builds-oso-prefix/","recommender":"AidenRao"},{"heading":"Understanding mergeable libraries","url":"https://www.polpiella.dev/understanding-mergeable-libraries/","recommender":"Cooper Chen"},{"heading":"WWDC NOTES","url":"https://www.wwdcnotes.com/","recommender":"Smallfly"},{"heading":"快手主播稳定性 - Mach Port 超限问题治理","url":"https://mp.weixin.qq.com/s/hzKQZjQEp7Gpv6Uhl1xVSA","recommender":"EyreFree"},{"heading":"How to Avoid Repeating SwiftUI View Updates","url":"https://mobileappcircular.com/how-to-avoid-repeating-swiftui-view-updates-dcf0a65d3758","recommender":"极速男孩"},{"heading":"CADisplayLink 前世今生","url":"https://mp.weixin.qq.com/s/I1fDj1GBHEr4x4Jg2u_GXA","recommender":"老峰"},{"heading":"Xcode Bookmarks: Save code landmarks & organize tasks","url":"https://www.avanderlee.com/xcode/bookmarks-navigator/","recommender":"[水水](https"},{"heading":"重要升级！btrace 2.0 技术原理大揭秘","url":"https://mp.weixin.qq.com/s/WZ5JxCFv_FSOLqR-sRremA","recommender":"Crazy"},{"heading":"Swift-Macros","url":"https://github.com/krzysztofzablocki/Swift-Macros","recommender":"含笑饮砒霜"}]},{"id":"r-249-2023-06-19","type":"report","title":"老司机 iOS 周报 #249 | 2023-06-19","issue":249,"date":"2023-06-19","year":2023,"path":"Reports/2023/#249-2023.06.19.md","url":"Reports/2023/%23249-2023.06.19.md","excerpt":"WWDC23 讲座集锦 2023 年 6 月 29 日：报名参加 WWDC23 讲座集锦，了解 Apple 平台的最新技术。；What’ s new in Swift 5.9?：一年两度的 Swift 大版本更新再次到来，让我们看看 Swift 5.9 有什么全新变化：；On Endianness - 🪄 Technical Sourcery：该文章详细探讨了大端序和小端序在计算机中的应用及其各自的优点。大端序和小端序是计算机存储多字","sections":[{"heading":"WWDC23 讲座集锦 2023 年 6 月 29 日","url":"https://developer.apple.com/events/view/962Y67Q743/dashboard"},{"heading":"What’ s new in Swift 5.9?","url":"https://www.hackingwithswift.com/articles/258/whats-new-in-swift-5-9","recommender":"anotheren"},{"heading":"On Endianness - 🪄 Technical Sourcery","url":"https://www.technicalsourcery.net/posts/on-endianness/","recommender":"Barney"},{"heading":"云音乐低代码 + ChatGPT 实践方案与思考","url":"https://mp.weixin.qq.com/s/jaIiVI636uJBOOKsXuHCpw","recommender":"老驴"},{"heading":"Swift 的可选值优化","url":"https://mp.weixin.qq.com/s/aloL0oyFUYIukhaqE-YfTA","recommender":"Damien"},{"heading":"UIKit rendering - Part 1、2、3","url":"https://fabernovel.github.io/2021-01-04/uikit-rendering-part-1","recommender":"JonyFang"},{"heading":"The unofficial WWDC app for macOS","url":"https://github.com/insidegui/WWDC","recommender":"zoeGuo"},{"heading":"SummarAI Chrome Extension","url":"https://github.com/zhangferry/SummarAI","recommender":"Crazy"},{"heading":"HookZzModules","url":"https://github.com/jmpews/HookZzModules/tree/master/AntiDebugBypass","recommender":"含笑饮砒霜"}]},{"id":"r-248-2023-06-12","type":"report","title":"老司机 iOS 周报 #248 | 2023-06-12","issue":248,"date":"2023-06-12","year":2023,"path":"Reports/2023/#248-2023.06.12.md","url":"Reports/2023/%23248-2023.06.12.md","excerpt":"U4 5.0 内核正式发布：UC 是国内为数不多的在深度定制 Chromium 内核上持续投入的团队，近期发布了 U4 5.0 版本，在性能、稳定性和功能覆盖度层面相比 Chromium 100 版本都有大幅的提升。同时，文章从渲染架构、JS 引擎、通用能力和基础体验几个方面分享了新版本所做的具体工作。推荐；There are so many cool new features in Swift and Xcode：文章作者第一时间安装","sections":[{"heading":"U4 5.0 内核正式发布","url":"https://mp.weixin.qq.com/s/Yv5GO2FjXg6CPMf3tRsjDQ","recommender":"莲叔"},{"heading":"There are so many cool new features in Swift and Xcode","url":"https://www.swiftwithvincent.com/newsletter/there-are-so-many-cool-new-features-in-swift-and-xcode","recommender":"AidenRao"},{"heading":"通过 SIL 看 Swift 的方法派发","url":"https://mp.weixin.qq.com/s/m8C_ShtAtLcgjQv9GRVObQ","recommender":"JonyFang"},{"heading":"移动端 APP 组件化架构实践","url":"https://juejin.cn/post/7240333779222167608","recommender":"Cooper Chen"},{"heading":"iOS 17: Notable UIKit Additions | Swiftjective-C","url":"https://www.swiftjectivec.com/ios-17-notable-uikit-additions/","recommender":"Barney"},{"heading":"移动端浏览器性能优化探索","url":"https://mp.weixin.qq.com/s/SKO3vZXTTYE2pRCFaT5H3A","recommender":"莲叔"},{"heading":"自動將 asset 的圖片和顏色變成 ImageResource 和 ColorResource 的型別屬性 — Xcode 15 新功能","url":"https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86/%E8%87%AA%E5%8B%95%E5%B0%87-asset-%E7%9A%84%E5%9C%96%E7%89%87%E5%92%8C%E9%A1%8F%E8%89%B2%E8%AE%8A%E6%88%90-imageresource-%E5%92%8C-colorresource-%E7%9A%84%E5%9E%8B%E5%88%A5%E5%B1%AC%E6%80%A7-xcode-15-%E6%96%B0%E5%8A%9F%E8%83%BD-3e321213a453","recommender":"zoeGuo"},{"heading":"使用 #Preview macro 定义预览画面","url":"https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86/%E4%BD%BF%E7%94%A8-preview-macro-%E5%AE%9A%E7%BE%A9%E9%A0%90%E8%A6%BD%E7%95%AB%E9%9D%A2-ios-17-%E6%96%B0%E5%8A%9F%E8%83%BD-bc850b2c11fc","recommender":"水水"},{"heading":"Demystifying SwiftUI Animation: A Comprehensive Guide","url":"https://betterprogramming.pub/swiftui-animation-mechanism-a1adf2b9b417","recommender":"Damien"},{"heading":"Use Swift Macros to Initialize a Structure","url":"https://betterprogramming.pub/use-swift-macros-to-initialize-a-structure-516728c5fb49","recommender":"Smallfly"}]},{"id":"r-247-2023-06-05","type":"report","title":"老司机 iOS 周报 #247 | 2023-06-05","issue":247,"date":"2023-06-05","year":2023,"path":"Reports/2023/#247-2023.06.05.md","url":"Reports/2023/%23247-2023.06.05.md","excerpt":"Upcoming changes to the App Store receipt signing intermediate certificate：对于 本地 校验支付凭证的 APP 来说，需要适配 SHA-256 校验，对于不支持 SHA-256 的 APP 将在 2023.08.14 之后拒绝提交。这项调整对使用 AppTransaction API 与 verifyReceipt(Web Service Endpoin；百度 A","sections":[{"heading":"Upcoming changes to the App Store receipt signing intermediate certificate","url":"https://developer.apple.com/news/?id=smofnyhj"},{"heading":"百度 APP iOS 端包体积 50M 优化实践（一）总览","url":"https://mp.weixin.qq.com/s/ANbFzg7X932o-iDpa8FcxQ","recommender":"xuyafei86"},{"heading":"How the Raycast API and extensions work","url":"https://www.raycast.com/blog/how-raycast-api-extensions-work","recommender":"kemchenj"},{"heading":"Pushing the limits of NSStatusItem beyond what Apple wants you to do","url":"https://remotion.com/blog/pushing-the-limits-nsstatusitem","recommender":"Cooper Chen"},{"heading":"Apple-Silicon-Guide","url":"https://github.com/mikeroyal/Apple-Silicon-Guide","recommender":"Leo"},{"heading":"Skip code during debugging in Xcode","url":"https://blog.eidinger.info/skip-code-during-debugging-in-xcode","recommender":"zoeGuo"},{"heading":"Text Filters in Kaleidoscope 4","url":"https://blog.kaleidoscope.app/2023/05/31/text-filters-in-kaleidoscope-4/","recommender":"含笑饮砒霜"},{"heading":"Using Upcoming Feature Flags","url":"https://www.swift.org/blog/using-upcoming-feature-flags","recommender":"AidenRao"},{"heading":"使用 SwiftUI 开发 RSS 阅读器","url":"https://mp.weixin.qq.com/s/8DFqljikD7FKvHTdZj2weA","recommender":"享耳先森"},{"heading":"RegexHub","url":"https://github.com/lukehaas/RegexHub","recommender":"Smallfly"}]},{"id":"r-246-2023-05-29","type":"report","title":"老司机 iOS 周报 #246 | 2023-05-29","issue":246,"date":"2023-05-29","year":2023,"path":"Reports/2023/#246-2023.05.29.md","url":"Reports/2023/%23246-2023.05.29.md","excerpt":"来 WWDC23 之夜深圳场，看直播！领 Apple 周边！：今年的 WWDC 有线下观影活动哟！6 月 5 日晚，由 T 沙龙主办的「WWDC 之夜（深圳场）」将在货拉拉深圳研发中心举行，在深圳（或附近）的朋友可以线下参加一起熬夜！点击周报下方外链可以直接报名。活动现场还邀请到了两位货拉拉的嘉宾进行精彩分享，分别是：；Handling WebP Images When Using PHPickerViewController：在 iO","sections":[{"heading":"来 WWDC23 之夜深圳场，看直播！领 Apple 周边！","url":"https://www.huodongxing.com/go/wwdc23sz"},{"heading":"Handling WebP Images When Using PHPickerViewController","url":"https://swiftsenpai.com/development/webp-phpickerviewcontroller/","recommender":"极速男孩"},{"heading":"SwiftUI under the Hood: Variadic Views","url":"https://movingparts.io/variadic-views-in-swiftui","recommender":"Smallfly"},{"heading":"云音乐中 In-App Purchase 实践总结篇 - 掘金","url":"https://juejin.cn/post/7233948883045941303","recommender":"Barney"},{"heading":"This Window Is Leaking","url":"https://byla.lt/posts/this-window-is-leaking/","recommender":"Cooper Chen"},{"heading":"构建稳定的预览视图 —— SwiftUI 预览的工作原理","url":"https://juejin.cn/post/7236009910147596343","recommender":"J_Knight_"},{"heading":"饿了么开源自研多端框架 MorJS","url":"https://mp.weixin.qq.com/s/XE6l7pMuj_0Vt9BWQG1XrQ","recommender":"老峰"},{"heading":"Using Layout protocol to align explicitly positioned views in SwiftUI","url":"https://nilcoalescing.com/blog/AnchoredPositionInSwiftUI/","recommender":"JonyFang"},{"heading":"在 iOS 中使用 IdentifyLookup 进行短信过滤","url":"https://juejin.cn/post/7237697495109845052#heading-5","recommender":"AidenRao"},{"heading":"Sparkle - Mac 应用更新框架","url":"https://github.com/sparkle-project/Sparkle","recommender":"水水"}]},{"id":"r-245-2023-05-22","type":"report","title":"老司机 iOS 周报 #245 | 2023-05-22","issue":245,"date":"2023-05-22","year":2023,"path":"Reports/2023/#245-2023.05.22.md","url":"Reports/2023/%23245-2023.05.22.md","excerpt":"2022 App Store Transparency Report(PDF)：苹果发布了 2022 年的 App Store 透明度报告，这也是首次发布类似报告，App Store 的透明对所有开发者与用户都是非常有益的事，我们在近几年看到越来越开放的苹果，这无疑是值得肯定的。；Ranges in Swift explained with code examples：文章介绍了 Swift 中 Range 的不同类型： ClosedR","sections":[{"heading":"2022 App Store Transparency Report(PDF)","url":"https://www.apple.com/legal/more-resources/docs/2022-App-Store-Transparency-Report.pdf"},{"heading":"Ranges in Swift explained with code examples","url":"https://www.avanderlee.com/swift/ranges-explained/","recommender":"zoeGuo"},{"heading":"file behavior change in Swift 5.8","url":"https://sarunw.com/posts/file-behavior-change/","recommender":"AidenRao"},{"heading":"Parallax header effect in SwiftUI using CoordinateSpace","url":"https://arturgruchala.com/parallax-header-effect-in-swiftui-using-coordinatespace/","recommender":"Barney"},{"heading":"How to Open using Rosetta in Xcode 14.3","url":"https://sarunw.com/posts/open-using-rosetta-in-xcode-14-3/","recommender":"Smallfly"},{"heading":"Accessing Security Scoped Files","url":"https://useyourloaf.com/blog/accessing-security-scoped-files/","recommender":"Damien"},{"heading":"Skip typing your login credentials manually with Xcode breakpoints","url":"https://www.danijelavrzan.com/posts/2023/04/login-xcode-breakpoint/","recommender":"anotheren"},{"heading":"swift-power-assert","url":"https://github.com/kishikawakatsumi/swift-power-assert","recommender":"含笑饮砒霜"},{"heading":"Canopy","url":"https://github.com/Tact/Canopy","recommender":"JonyFang"},{"heading":"The Book of Modern C++","url":"https://github.com/lkimuk/the-book-of-modern-cpp","recommender":"kemchenj"},{"heading":"App Marketing by App Masters","url":"https://podcasters.spotify.com/pod/show/app-marketing-podcast","recommender":"享耳先森"}]},{"id":"r-244-2023-05-15","type":"report","title":"老司机 iOS 周报 #244 | 2023-05-15","issue":244,"date":"2023-05-15","year":2023,"path":"Reports/2023/#244-2023.05.15.md","url":"Reports/2023/%23244-2023.05.15.md","excerpt":"GitHub 的 Code Scanning 正式提供 Swift 的支持：GitHub 的 Code Scanning 会扫描和索引项目的 Dependency 信息，并且提供：；**增强全球定价机制** 基准调整引发涨价：苹果在 3 月时就公告会进行 增强全球定价机制 的调整，老司机技术也提醒过大家，希望大家都可以提前根据需要选择合适的基准。5 月 9 日凌晨已准时上线，但开发者们发现虽然已经提前将基准设置为了中国大陆，但却依旧有概","sections":[{"heading":"GitHub 的 Code Scanning 正式提供 Swift 的支持","url":"https://forums.swift.org/t/beta-testers-wanted-get-a-sneak-peek-at-github-s-code-scanning-support-for-swift/64632"},{"heading":"**增强全球定价机制** 基准调整引发涨价","url":null},{"heading":"用 VSCode 基于 Bazel 打造 Apple 生态开发环境","url":"https://mp.weixin.qq.com/s/7UJdgJIYWkhzSjtKsHqC2g","recommender":"Cooper Chen"},{"heading":"A Swift Spelling Corrector","url":"https://airspeedvelocity.net/2015/05/02/spelling/","recommender":"含笑饮砒霜"},{"heading":"Behind-the-Design: Meet Copilot. When the system is the product; on … | by Microsoft Design | Microsoft Design | Apr, 2023 | Medium","url":"https://medium.com/microsoft-design/behind-the-design-meet-copilot-2c68182a0e70","recommender":"Barney"},{"heading":"Double Protocol Conformance","url":"https://alexanderweiss.dev/blog/2023-04-23-double-protocol-conformance","recommender":"zvving"},{"heading":"iOS 客户端动图优化实践","url":"https://mp.weixin.qq.com/s/MW14R1JfXRmQvgN2NNi3iA","recommender":"Smallfly"},{"heading":"文件名还是顶级域，傻傻分不清","url":"https://mp.weixin.qq.com/s/Swzt7_O3vmgG_zukfCAkVg","recommender":"Damien"},{"heading":"京喜 APP - 图片库优化 | 京东云技术团队","url":"https://juejin.cn/post/7231735955794427960","recommender":"J_Knight_"},{"heading":"淘宝 APP 网络架构演进与弱网破障实践","url":"https://mp.weixin.qq.com/s/NVhtEoWUJK87ADwjXC5K0w","recommender":"AidenRao"},{"heading":"AppleParty（苹果派）v3 支持 App Store 新定价机制 - 批量配置自定价格和销售范围","url":"https://juejin.cn/post/7226327556198744122","recommender":"ChengzhiHuang"},{"heading":"微软开发者拆解 SwiftUI 优化秘籍，教你轻松提升百倍性能","url":"https://www.bilibili.com/video/BV1uM41137An","recommender":"EyreFree"}]},{"id":"r-243-2023-05-08","type":"report","title":"老司机 iOS 周报 #243 | 2023-05-08","issue":243,"date":"2023-05-08","year":2023,"path":"Reports/2023/#243-2023.05.08.md","url":"Reports/2023/%23243-2023.05.08.md","excerpt":"Foundation Package 预览版发布：去年周报曾经提到 Foundation 将使用 Swift 重新实现，近日 Swift 开发团队发布了预览版，日期相关的功能性能对比当前版本的 Foundation 提升 20%-150%，而 JSONDecoder/JSONEncoder 的性能提升甚至达到 200%-500%；心遇 iOS 端会话页性能优化 — ReactiveObjC 实践篇：是 下的响应式编程框架，可以将各种通知","sections":[{"heading":"Foundation Package 预览版发布","url":"https://www.swift.org/blog/foundation-preview-now-available/","recommender":"kemchenj"},{"heading":"心遇 iOS 端会话页性能优化 — ReactiveObjC 实践篇","url":"https://mp.weixin.qq.com/s/_nYM42vgSEqlJuoMlPdCUw","recommender":"享耳先森"},{"heading":"Notifications: why less is more — how Facebook has been increasing both user satisfaction and app usage by sending only a few notifications","url":"https://medium.com/@AnalyticsAtMeta/notifications-why-less-is-more-how-facebook-has-been-increasing-both-user-satisfaction-and-app-9463f7325e7d","recommender":"含笑饮砒霜"},{"heading":"十年“屎山”终重构，但 QQ 选用了微软 Teams 放弃的 Electron","url":"https://mp.weixin.qq.com/s/f6M1w2kX0jhYgasIWwsawg","recommender":"Damien"},{"heading":"MainActor usage in Swift explained to dispatch to the main thread","url":"https://www.avanderlee.com/swift/mainactor-dispatch-main-thread/","recommender":"J_Knight_"},{"heading":"开源图像模型 Stable Diffusion 入门手册","url":"https://mp.weixin.qq.com/s/8czNX-pXyOeFDFhs2fo7HA","recommender":"老驴"},{"heading":"veImageX 演进之路：iOS 高性能图片加载 SDK","url":"https://mp.weixin.qq.com/s/JClQbL9D3PftGuw2H_KXXw","recommender":"Smallfly"},{"heading":"快手 Swift 历险记之 Clang Module 带来的“坑”","url":"https://mp.weixin.qq.com/s/RarmJgRWiINE87feMAMaaA","recommender":"老峰"},{"heading":"Debug iOS app in Visual Studio Code","url":"https://yrom.net/blog/2023/04/22/debug-ios-app-in-vscode/","recommender":"JonyFang"},{"heading":"Yielding accessors in Swift","url":"https://trycombine.com/posts/swift-read-modify-coroutines/","recommender":"zoeGuo"},{"heading":"链接器优化 : 相同代码折叠 ICF","url":"https://zhuanlan.zhihu.com/p/484176002","recommender":"AidenRao"},{"heading":"ETTrace","url":"https://github.com/emergeTools/ettrace","recommender":"Leo"},{"heading":"Compose Multiplatform","url":"https://github.com/JetBrains/compose-multiplatform/#readme","recommender":"极速男孩"}]},{"id":"r-242-2023-04-24","type":"report","title":"老司机 iOS 周报 #242 | 2023-04-24","issue":242,"date":"2023-04-24","year":2023,"path":"Reports/2023/#242-2023.04.24.md","url":"Reports/2023/%23242-2023.04.24.md","excerpt":"Enabling the Inspection of Web Content in Apps：WKWebView 与 JSContext 在 iOS 16.4 SDK 中新增了属性 isInspectable ，只有开启了这个属性才会允许检查 Web 的元素，并且这个属性可以在任意时间修改（不需要重启 APP 或者重新创建 Webview 实例）。对于需要调试 Webvi；挑战：让你的 App 更加无障碍 2023 年 5 月 10 日","sections":[{"heading":"Enabling the Inspection of Web Content in Apps","url":"https://webkit.org/blog/13936/enabling-the-inspection-of-web-content-in-apps/"},{"heading":"挑战：让你的 App 更加无障碍 2023 年 5 月 10 日","url":"https://developer.apple.com/events/view/7F793DZPF3/dashboard"},{"heading":"线上讲座：探索 Vision 框架","url":"https://developer.apple.com/events/view/93396BVQ5Y/dashboard"},{"heading":"抖音 Swift 编译优化 - 基于自定义 Toolchain 编译提速 60%","url":"https://mp.weixin.qq.com/s/MT5MHhZIlyrhuVNM3Ckteg","recommender":"kemchenj"},{"heading":"PC GWP-ASan 方案原理 | 堆破坏问题排查实践","url":"https://mp.weixin.qq.com/s/xipHtjHPVlyFQ6W-1HfUQQ","recommender":"xuyafei86"},{"heading":"What I Learned Writing My Own CloudKit Syncing Library","url":"https://ryanashcraft.com/what-i-learned-writing-my-own-cloudkit-sync-library/","recommender":"Smallfly"},{"heading":"Mastering Canvas in SwiftUI","url":"https://swiftwithmajid.com/2023/04/11/mastering-canvas-in-swiftui/","recommender":"享耳先森"},{"heading":"3 mistakes to avoid with async / await","url":"https://www.swiftwithvincent.com/blog/three-mistakes-to-avoid-with-async-await-in-swift","recommender":"Cooper Chen"},{"heading":"淘宝 iOS 拍立淘微距能力探索与实现","url":"https://mp.weixin.qq.com/s/4tG4BTx54rXIdHbXKqI_cQ","recommender":"EyreFree"},{"heading":"Using DWARF to find call sites of inline functions","url":"https://margiolis.net/w/dwarf_inline/","recommender":"Damien"},{"heading":"Reducing iOS app size using linker and why_load","url":"https://asifmohd.github.io/ios/2023/03/30/reducing-ios-app-size-using-linker.html","recommender":"Leo"}]},{"id":"r-241-2023-04-17","type":"report","title":"老司机 iOS 周报 #241 | 2023-04-17","issue":241,"date":"2023-04-17","year":2023,"path":"Reports/2023/#241-2023.04.17.md","url":"Reports/2023/%23241-2023.04.17.md","excerpt":"Xcode 14.3: App built is not able to open on iOS 13.6：苹果论坛有开发者反馈 Xcode 14.3 打出的包无法在 iOS 13 的部分系统上启动，报错在 dyld3/Loading.cpp 中： Termination Description: DYLD, Assertion failed: (gotLocation), funct；一些关于开发的杂谈话题 - 测试：介绍了开发人员如","sections":[{"heading":"Xcode 14.3: App built is not able to open on iOS 13.6","url":"https://developer.apple.com/forums/thread/727680?login=true"},{"heading":"一些关于开发的杂谈话题 - 测试","url":"https://onevcat.com/2023/04/dev-talk-testing/","recommender":"JonyFang"},{"heading":"当我们说插件系统的时候，我们在说什么","url":"https://mp.weixin.qq.com/s/mp4WL6Z2ESQTbK_B7ba8Fg","recommender":"kyo"},{"heading":"macOS Network Metrics Using sysctl","url":"https://milen.me/writings/macos-network-metrics-sysctl-net-rt-iflist2/","recommender":"含笑饮砒霜"},{"heading":"iOS ReplayKit 与 屏幕录制","url":"https://mp.weixin.qq.com/s/NbT1BE0CmYkyMXeVIekCpQ","recommender":"Smallfly"},{"heading":"【开源推荐】 macOS 上的 ProcMon：Red Canary Mac Monitor","url":"https://mp.weixin.qq.com/s/16SQfbl7YuHjumkKXDXtyA","recommender":"Cooper Chen"},{"heading":"The Power Of Plist","url":"https://redsweater.com/blog/2083/the-power-of-plist","recommender":"J_Knight_"},{"heading":"When Matched Geometry Effect Doesn't Work","url":"https://chris.eidhof.nl/post/matched-geometry-effect/","recommender":"AidenRao"},{"heading":"OrbStack","url":"https://orbstack.dev/","recommender":"邦 Ben"},{"heading":"lexical-ios","url":"https://github.com/facebook/lexical-ios","recommender":"kyo"}]},{"id":"r-240-2023-04-10","type":"report","title":"老司机 iOS 周报 #240 | 2023-04-10","issue":240,"date":"2023-04-10","year":2023,"path":"Reports/2023/#240-2023.04.10.md","url":"Reports/2023/%23240-2023.04.10.md","excerpt":"SwiftUI 技术沙龙（上海站）：本次活动将在上海线下举办，在活动中你可以学习 SwiftUI 并与 SwiftUI 开发者社区建立联系。SwiftUI 借助 Swift 的强大功能，能帮助你用极少的代码在所有的 Apple 平台上构建外观精美的 App。我们将分享 SwiftUI 理念的核心原则，还会邀请多位社；线上讲座：在你的 iPad App 中支持外接键盘：通过熟悉和更具触感的体验，外接键盘可以使你的 iPad App 更易于","sections":[{"heading":"SwiftUI 技术沙龙（上海站）","url":"https://developer.apple.com/events/view/6DF4375B6R/dashboard"},{"heading":"线上讲座：在你的 iPad App 中支持外接键盘","url":"https://developer.apple.com/events/view/AS7D4BR8Y6/dashboard"},{"heading":"Overview of C++23 Features","url":"https://mp.weixin.qq.com/s/4PKnoEDmYppYeJoh7oUVWg","recommender":"xiaofei86"},{"heading":"Using Critical Alerts in iOS applications - Igor Kulman","url":"https://blog.kulman.sk/using-critical-alerts-on-ios/","recommender":"Barney"},{"heading":"Sharing content in SwiftUI","url":"https://swiftwithmajid.com/2023/03/28/sharing-content-in-swiftui/","recommender":"Cooper Chen"},{"heading":"Block 内调用 super 引发的循环引用","url":"https://juejin.cn/post/7219189831775420472","recommender":"JonyFang"},{"heading":"Network Extension Debugging on macOS","url":"https://www.avanderlee.com/debugging/network-extension-debugging-macos/","recommender":"nianran"},{"heading":"App Store 新定价机制 - 2023 年最全版","url":"https://zhuanlan.zhihu.com/p/615969005","recommender":"J_Knight_"},{"heading":"Group and sort Swift collections like a pro","url":"https://danielsaidi.com/blog/2023/04/01/group-and-sort-swift-collections-like-a-pro","recommender":"水水"}]},{"id":"r-239-2023-04-03","type":"report","title":"老司机 iOS 周报 #239 | 2023-04-03","issue":239,"date":"2023-04-03","year":2023,"path":"Reports/2023/#239-2023.04.03.md","url":"Reports/2023/%23239-2023.04.03.md","excerpt":"Xcode 14.3 正式版发布：Xcode 14.3 的正式版来了，除了大家关心的 iOS 16.4 与 Swift 5.8，部分开发者可能在使用 new 创建对象时遇到 new is unavailable 的报错。遇到的话需要检查下对应对象的默认 init 方法是否被标注为了 NS_UNAVAILABLE ；Xcode Tip: filter to show modified files only：在大型 Xcode 工程中，定位","sections":[{"heading":"Xcode 14.3 正式版发布","url":"https://developer.apple.com/documentation/xcode-release-notes/xcode-14_3-release-notes"},{"heading":"Xcode Tip: filter to show modified files only","url":"https://www.jessesquires.com/blog/2023/03/22/xcode-tip-filter-modified-files/","recommender":"Smallfly"},{"heading":"Custom Actor Executors","url":"https://github.com/apple/swift-evolution/blob/main/proposals/0392-custom-actor-executors.md","recommender":"JonyFang"},{"heading":"Working with percentages in SwiftUI layout","url":"https://oleb.net/2023/swiftui-relative-size/","recommender":"极速男孩"},{"heading":"写给小白的 Midjourney 教程","url":"https://mp.weixin.qq.com/s/nqnuqji0tK-4seuACtSjcw","recommender":"Cooper Chen"},{"heading":"How the relative size modifier interacts with stack views","url":"https://oleb.net/2023/swiftui-relative-size-in-stacks/","recommender":"zoeGuo"},{"heading":"一个用在 Swift 中的模块管理框架","url":"https://mp.weixin.qq.com/s/aFM_4OqDYcXPRIdF7x_41w","recommender":"kemchenj"},{"heading":"Flutter 小技巧之霓虹灯文本的「故障」效果的实现","url":"https://mp.weixin.qq.com/s/VAF5IFsVvZMNikilckUcZg","recommender":"Crazy"},{"heading":"降低网络延迟：让你的 App 变得更快","url":"https://mp.weixin.qq.com/s/XoAm9OaXtzT3jE4LSBSpqw","recommender":"dustturtle"}]},{"id":"r-238-2023-03-27","type":"report","title":"老司机 iOS 周报 #238 | 2023-03-27","issue":238,"date":"2023-03-27","year":2023,"path":"Reports/2023/#238-2023.03.27.md","url":"Reports/2023/%23238-2023.03.27.md","excerpt":"使用 Xcode 14.1 提交的截止日期即将到来：在 2023 年 4 月之后，所有新提交的 App 都将必须使用 Xcode 14.1 及之后的版本进行提交，还未迁移的同学需要加快进度啦。近期如果还在用老版本 Xcode 提交构建版本的同学应该也已经收到了 ITMS-90725: SDK Verison Issue 的警告。；bilibili-AVIF 图片格式落地：在如今越来越看重体验的大环境下，对图片库的要求也日益攀升。从成本的","sections":[{"heading":"使用 Xcode 14.1 提交的截止日期即将到来","url":"https://developer.apple.com/ios/submit/"},{"heading":"bilibili-AVIF 图片格式落地","url":"https://mp.weixin.qq.com/s/4HaVDdSCPgsRpT8HhWRsZA","recommender":"JonyFang"},{"heading":"Flutter Dart：泛型的协变与逆变","url":"https://mp.weixin.qq.com/s/Vyl51PtpBQ_lCZR_uUMgZg","recommender":"CrazyCoderShi"},{"heading":"Keyboard shortcuts for Export Unmodified Original in Photos for Mac","url":"https://oleb.net/blog/2023/photos-keyboard-shortcuts/","recommender":"Cooper Chen"},{"heading":"Wrapping functions in structs","url":"https://paul-samuels.com/blog/2023/03/18/wrapping-functions-in-structs/","recommender":"zvving"},{"heading":"苹果内购录：关于新定价规则的理解与思考","url":"https://mp.weixin.qq.com/s/ZQlBFHuRoDYmYpMfgnsp2Q","recommender":"含笑饮砒霜"},{"heading":"Handling status bar color scheme and visibility in SwiftUI","url":"https://danielsaidi.com/blog/2023/03/14/handling-status-bar-color-scheme-and-visibility-in-swiftui","recommender":"AidenRao"},{"heading":"Removing Search Web from a context menu","url":"https://vicegax.substack.com/p/removing-search-web-from-a-context","recommender":"zoeGuo"},{"heading":"为啥我的代码库那么大？聊聊 Git 使用坏习惯","url":"https://mp.weixin.qq.com/s/6sC8evIQ7AZBWwJFRi6mww","recommender":"Barney"},{"heading":"JVMTI 在手淘 Profiler 中的应用","url":"https://mp.weixin.qq.com/s/_J8KaXmMy0yJ8vv5fiVLSQ","recommender":"Crazy"},{"heading":"gptcommit","url":"https://github.com/zurawiki/gptcommit","recommender":"老驴"}]},{"id":"r-237-2023-03-20","type":"report","title":"老司机 iOS 周报 #237 | 2023-03-20","issue":237,"date":"2023-03-20","year":2023,"path":"Reports/2023/#237-2023.03.20.md","url":"Reports/2023/%23237-2023.03.20.md","excerpt":"How to make an interactive picker for a Swift command-line tool：Swift 相较于 Javascript 等语言，处理用户输入的库总是不足，本文主要介绍了作者受 Javascript 工具 Nate Moore 的 clack 启发，如何为 Swift 命令行工具制作交互式选择器工具的思路和过程，另外作者将继续记录迁移该工具的过程，为有意向向；淘宝 widget 链路方案总","sections":[{"heading":"How to make an interactive picker for a Swift command-line tool","url":"https://www.polpiella.dev/how-to-make-an-interactive-picker-for-a-swift-command-line-tool/","recommender":"Cooper Chen"},{"heading":"淘宝 widget 链路方案总结","url":"https://mp.weixin.qq.com/s/ZSt--YspkI4GHqbGCasvLQ","recommender":"Damien"},{"heading":"手工打造 HTML 解析器的那些事","url":"https://medium.com/zrealm-ios-dev/%E6%89%8B%E5%B7%A5%E6%89%93%E9%80%A0-html-%E8%A7%A3%E6%9E%90%E5%99%A8%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B-2724f02f6e7","recommender":"红纸"},{"heading":"What's new in Swift 5.8","url":"https://www.hackingwithswift.com/articles/256/whats-new-in-swift-5-8","recommender":"zoeGuo"},{"heading":"All about LeakSanitizer","url":"https://maskray.me/blog/2023-02-12-all-about-leak-sanitizer","recommender":"老峰"},{"heading":"网易云音乐开源全链路埋点方案-曙光埋点（dawn）","url":"https://mp.weixin.qq.com/s/XRy4ajwAHGjOai7qERYjyw","recommender":"JonyFang"},{"heading":"iOS 云音乐 APM 性能监控实践","url":"https://mp.weixin.qq.com/s/nGLgQfq8k3pzxUaTZa8uNQ","recommender":"Barney"},{"heading":"关于 App Store 苹果商店价格的那些事（历上最全版）","url":"https://juejin.cn/post/7205562168358895671","recommender":"[ChengzhiHuang](https"}]},{"id":"r-236-2023-03-13","type":"report","title":"老司机 iOS 周报 #236 | 2023-03-13","issue":236,"date":"2023-03-13","year":2023,"path":"Reports/2023/#236-2023.03.13.md","url":"Reports/2023/%23236-2023.03.13.md","excerpt":"App Store 的定价机制升级现已扩展至所有购买类型：1. 增强全球定价机制 的推出：在 5 月 9 日还未选择定价机制的 App ，默认会按照“全球定价”并以美元进行结算。开发者也可以即日起主动进行调整。 2. 更新后的价格将根据金融数据机构提供的公开汇率信息做调整。；在 iPad App 中支持多窗口：多任务处理是让你的 iPad App 更加强大的方式。本次课程你可以学习如何轻松支持多窗口功能，了解如何创建、刷新和关闭窗口。你","sections":[{"heading":"App Store 的定价机制升级现已扩展至所有购买类型","url":"https://developer.apple.com/cn/news/?id=dbrszv62"},{"heading":"在 iPad App 中支持多窗口","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"SwiftUI + Core Data App 的内存占用优化之旅","url":"https://juejin.cn/post/7207787191623335992#heading-0","recommender":"Cooper Chen"},{"heading":"Swift 5.7 / Xcode 14 incremental build time 10x slower than Swift 5.6 / Xcode 13","url":"https://forums.swift.org/t/swift-5-7-xcode-14-incremental-build-time-10x-slower-than-swift-5-6-xcode-13/60568/2","recommender":"zvving"},{"heading":"Xcode 编译加速之 Compile Asset Catalog","url":"https://juejin.cn/post/7207848485856231482","recommender":"anotheren"},{"heading":"苹果：为了安全让 M2 吃灰","url":"https://catcoding.me/p/apple-perf/","recommender":"kemchenj"},{"heading":"iOS 底层之类的 cache 分析","url":"https://juejin.cn/post/7206143969121943589","recommender":"J_Knight_"},{"heading":"通过 Bazel 构建 iOS 应用","url":"https://bazel.build/start/ios-app?hl=zh-cn","recommender":"JonyFang"},{"heading":"迈向卓越 - 闲鱼终端场景 CI 能力体系化建设","url":"https://mp.weixin.qq.com/s/1WaRRQXxsFZlWA1oT1jldA","recommender":"xuyafei86"},{"heading":"这代码居然有差别？CPU 友好的代码该这样写","url":"https://mp.weixin.qq.com/s/VXB4WqdN5ryc2TU7haxh_A","recommender":"Crazy"},{"heading":"ZMarkupParser","url":"https://github.com/ZhgChgLi/ZMarkupParser","recommender":"红纸"},{"heading":"Swift Evolution proposals in Alfred","url":"https://oleb.net/blog/2023/alfred-swift-evolution/","recommender":"zoeGuo"},{"heading":"buildbuddy-io / rules_xcodeproj","url":"https://github.com/buildbuddy-io/rules_xcodeproj","recommender":"含笑饮砒霜"}]},{"id":"r-235-2023-03-06","type":"report","title":"老司机 iOS 周报 #235 | 2023-03-06","issue":235,"date":"2023-03-06","year":2023,"path":"Reports/2023/#235-2023.03.06.md","url":"Reports/2023/%23235-2023.03.06.md","excerpt":"T 沙龙新官网（www.tsalon.tech）上线啦，欢迎大家关注！：T沙龙，全称为 T 技术沙龙，是一个以促进开发者之间技术交流为目的的技术沙龙组织，成立后一直在定期举办各种面向开发者的线上 & 线下沙龙活动。从 2016 年 3 月份开始，在北京、上海、成都、杭州和深圳等地相继举办了 30 多场线下沙龙活动，同时也举办了多场线上活动。本次 T ；淘宝 APP 网络架构演进与弱网破障实践：本文主要介绍手淘终端统一网络库 AWCN (","sections":[{"heading":"T 沙龙新官网（www.tsalon.tech）上线啦，欢迎大家关注！","url":"https://www.tsalon.tech/","recommender":"EyreFree"},{"heading":"淘宝 APP 网络架构演进与弱网破障实践","url":"https://mp.weixin.qq.com/s/YomDksoRv_Chuw7oHBzzFA","recommender":"JonyFang"},{"heading":"QQ音乐高可用架构体系","url":"https://mp.weixin.qq.com/s/G00cwGYAr6l2Px6-DiwXLA","recommender":"莲叔"},{"heading":"SwiftUI views versus modifiers","url":"https://www.swiftbysundell.com/articles/swiftui-views-versus-modifiers/","recommender":"Damien"},{"heading":"正则表达式是如何运作的？","url":"https://mp.weixin.qq.com/s/i_C4ATnajxRDGlTA8dJDHg","recommender":"zoeGuo"},{"heading":"网易云音乐基于 C2D2C 的「无损」设计协同","url":"https://mp.weixin.qq.com/s/ngQXWLhwV7wDyTMlr3QxmQ","recommender":"J_Knight_"},{"heading":"Pattern matching on error codes – Ole Begemann","url":"https://oleb.net/blog/2023/catch-error-code/","recommender":"Barney"},{"heading":"What is the default target queue for a serial queue?","url":"https://forums.swift.org/t/what-is-the-default-target-queue-for-a-serial-queue/18094","recommender":"xuyafei86"},{"heading":"Xcode Header Template for Swift Packages","url":"https://samwize.com/2023/02/28/xcode-header-template-for-swift-packages/","recommender":"水水"},{"heading":"ChatGPT App","url":"https://github.com/chenxi92/ChatGPT","recommender":"Cooper Chen"}]},{"id":"r-234-2023-02-27","type":"report","title":"老司机 iOS 周报 #234 | 2023-02-27","issue":234,"date":"2023-02-27","year":2023,"path":"Reports/2023/#234-2023.02.27.md","url":"Reports/2023/%23234-2023.02.27.md","excerpt":"设计挑战（亚太） 演讲：探索卓越的导航流程设计：与 Apple 设计布道师一起学习重要设计原理的实践方式，并在两项设计挑战当中展示您的设计技能。探索如何运用优秀的导航设计模式来创建更符合直觉的 App，并注册一对一咨询来和 Apple 设计布道师讨论您的设计概念与想法。；云音乐 iOS 跨端缓存库 - NEMichelinCache：跨端缓存方案类似操作系统缓存模式中的回写模式，在缓存库方案设计过程中需要着重解决回写的缺点，如保证内存缓","sections":[{"heading":"设计挑战（亚太） 演讲：探索卓越的导航流程设计","url":"https://developer.apple.com/events/view/R67PUKP9H9/dashboard"},{"heading":"云音乐 iOS 跨端缓存库 - NEMichelinCache","url":"https://mp.weixin.qq.com/s/jZ6QEuc0qoAn27lYzN1Yfw","recommender":"JonyFang"},{"heading":"Safely pinning SPM dependencies to exact versions","url":"https://www.polpiella.dev/safely-pinning-spm-depedencies-to-exact-versions/","recommender":"kemchenj"},{"heading":"Electron 的 GUI 和 Ruby 的 CLI 的一种交互实践","url":"https://mp.weixin.qq.com/s/UmzeZip3KtHH44dkiijujg","recommender":"红纸"},{"heading":"FlutterEngine 桌面端架构浅析","url":"https://mp.weixin.qq.com/s/iKAHo8chgE85zix3ktHfUQ","recommender":"CrazyCoderShi"},{"heading":"云音乐 Android 内存监控探索篇","url":"https://mp.weixin.qq.com/s/tHndnmpxeDihYTIZmsafbg","recommender":"Crazy"},{"heading":"How to use macOS Assistive Technologies to test in the Simulator","url":"https://www.basbroek.nl/cheating-the-system-for-fun-and-profit","recommender":"EyreFree"},{"heading":"使用 RoomPlan 扫描创建参数化三维室内场景","url":"https://mp.weixin.qq.com/s/HCvy7MJJcBUANXt5y47mkA","recommender":"ZibYang"},{"heading":"利用 Xcode 和设备上的检测工具排查卡顿","url":"https://mp.weixin.qq.com/s/5sIJKDozsD1LSOh38hHYTg","recommender":"WessonWu"}]},{"id":"r-233-2023-02-20","type":"report","title":"老司机 iOS 周报 #233 | 2023-02-20","issue":233,"date":"2023-02-20","year":2023,"path":"Reports/2023/#233-2023.02.20.md","url":"Reports/2023/%23233-2023.02.20.md","excerpt":"Xcode 14.3 Beta Release Notes：包含 Swift 5.8 以及 iOS/iPad OS 16.4 的 SDK。其中 Swift 5.8 的改动中包含了 SE-0370 等新特性。；探索增强现实：现在就是开始在 Apple 平台上使用增强现实的最佳时机，加入我们了解如何为数亿台支持 AR 的活跃设备构建 App。通过本次活动，您可以全方位的了解 Apple 提供的 AR 技术栈，包括 ARKit 和 Reali","sections":[{"heading":"Xcode 14.3 Beta Release Notes","url":"https://developer.apple.com/documentation/xcode-release-notes/xcode-14_3-release-notes"},{"heading":"探索增强现实","url":"https://developer.apple.com/events/view/9HU22DPP7P/dashboard"},{"heading":"每天都在用，也没整明白的 React Hook","url":"https://mp.weixin.qq.com/s/wpJvXYf4Q3jFQEEpICtoSg","recommender":"CrazyCoderShi"},{"heading":"我们是如何追逐元宇宙、XR 等“概念股”浪潮的？","url":"https://mp.weixin.qq.com/s/Q9VNdOXGlsA4OXRUc5_-xw"},{"heading":"企业微信 Flutter 与大型 Native 工程跨四端融合实践","url":"https://mp.weixin.qq.com/s/Fc6bdgKshZ8WFX1Pcr4LHg","recommender":"极速男孩"},{"heading":"Debouncing with Swift concurrency","url":"https://sideeffect.io/posts/2023-01-11-regulate/","recommender":"Cooper Chen"},{"heading":"iOS 内存优化之工具介绍","url":"https://juejin.cn/post/7190296873373007931","recommender":"老峰"},{"heading":"Swift Cookbook","url":"https://www.kodeco.com/books/swift-cookbook","recommender":"Damien"},{"heading":"跨端通信终结者｜看我是如何保证多端消息一致性的 🔥 - 掘金","url":"https://juejin.cn/post/7196970992576708663","recommender":"Barney"},{"heading":"理解 Clang Module 和 Module Map 语法","url":"https://juejin.cn/post/7195394554760003644","recommender":"J_Knight_"},{"heading":"Text Buffer Reimplementation - VSCode","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/3843","recommender":"红纸"},{"heading":"从大前端“穿越”到终端，开发者应该必备什么技能？ | 解读终端的 2022","url":"https://mp.weixin.qq.com/s/t0xLKrMF4al4cgAXeCwyow","recommender":"享耳先森"},{"heading":"ChatGPT Jailbreak","url":"https://github.com/gayolGate/gayolGate/blob/index/ChatGPTJailbreak","recommender":"老驴"}]},{"id":"r-232-2023-02-13","type":"report","title":"老司机 iOS 周报 #232 | 2023-02-13","issue":232,"date":"2023-02-13","year":2023,"path":"Reports/2023/#232-2023.02.13.md","url":"Reports/2023/%23232-2023.02.13.md","excerpt":"Swift 5.7 在 iOS 16 以下的系统创建 Task 时可能会发生 Bad access：Swift 团队在迭代的过程中删去了 Concurrency 相关代码的一个字段，内存布局产生变化，导致 iOS 16 以下的系统在创建 Task 时，部分情况下内存访问会出错，导致崩溃。；在 App 或游戏内创造无障碍体验：通过 Apple 操作系统内置的辅助功能、辅助功能 API 和开发者工具，开发者们可以为每个用户创建绝佳的无障碍体","sections":[{"heading":"Swift 5.7 在 iOS 16 以下的系统创建 Task 时可能会发生 Bad access","url":"https://github.com/apple/swift/issues/63420"},{"heading":"在 App 或游戏内创造无障碍体验","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"如何实现 iOS 16 带来的 Depth Effect 图片效果","url":"https://mp.weixin.qq.com/s/9ITEbW1_EGu_2vrVfrZ9lA","recommender":"zoeGuo"},{"heading":"夸克 iOS Top1 JSC 崩溃攻克之旅","url":"https://mp.weixin.qq.com/s/0DidXWLDeqXpsjGBv69ITQ","recommender":"Leo"},{"heading":"The evolution of Facebook’s iOS app architecture","url":"https://engineering.fb.com/2023/02/06/ios/facebook-ios-app-architecture/","recommender":"含笑饮砒霜"},{"heading":"iOS APP 虚拟内存用量初探","url":"https://juejin.cn/post/7196931784328626234","recommender":"ChengzhiHuang"},{"heading":"Prevent copy & paste into other iOS apps","url":"https://blog.eidinger.info/prevent-copy-paste-into-other-ios-apps","recommender":"Smallfly"},{"heading":"Flutter 3.7 之快速理解 toImageSync 是什么？能做什么？","url":"https://mp.weixin.qq.com/s/ziOCR-sudMGbE0iW3MKewQ","recommender":"Crazy"}]},{"id":"r-231-2023-02-06","type":"report","title":"老司机 iOS 周报 #231 | 2023-02-06","issue":231,"date":"2023-02-06","year":2023,"path":"Reports/2023/#231-2023.02.06.md","url":"Reports/2023/%23231-2023.02.06.md","excerpt":"Flutter 3.7 稳定版发布：Flutter 3.7 稳定版本发布，为开发者带来了不少新功能的同时也对原有功能做了不少优化和改进.；AFNetworking 官方宣布正式弃用：AFNetworking 终于也到了寿终正寝的一天，虽然十分不舍，但拥抱 Swift 是大势所趋，推荐大家可以切换到 Alamofire 继续进行 iOS 开发。；通向 AGI 之路：大型语言模型（LLM）技术精要：“ChatGPT 出现后惊喜或惊醒了很多人","sections":[{"heading":"Flutter 3.7 稳定版发布","url":"https://mp.weixin.qq.com/s/DOUELDqCD5MlgGfW7bMpEw","recommender":"CrazyCoderShi"},{"heading":"AFNetworking 官方宣布正式弃用","url":"https://github.com/AFNetworking/AFNetworking"},{"heading":"通向 AGI 之路：大型语言模型（LLM）技术精要","url":"https://zhuanlan.zhihu.com/p/597586623","recommender":"xiaofei86"},{"heading":"序列化和反序列化","url":"https://tech.meituan.com/2015/02/26/serialization-vs-deserialization.html","recommender":"Cooper Chen"},{"heading":"OC 局部变量未初始化的危险性","url":"https://juejin.cn/post/7187664196492853308","recommender":"莲叔"},{"heading":"BSBackTracelogger 学习笔记","url":"https://juejin.cn/post/6910791727670362125","recommender":"AidenRao"},{"heading":"How To Speed Up Swift By Ordering Conformances","url":"https://www.emergetools.com/blog/posts/how-order-files-speed-up-protocols","recommender":"zvving"},{"heading":"Swift 之 struct 二进制大小分析","url":"https://juejin.cn/post/7191406877819797561","recommender":"J_Knight_"},{"heading":"百度APP iOS端内存优化-原理篇","url":"https://mp.weixin.qq.com/s/6_FGFU7-X7URMms6-ucyZQ","recommender":"老峰"},{"heading":"69 篇文章带你系统性的学习音视频开发","url":"https://mp.weixin.qq.com/s/oFXvXb0Lr_wETmHn7GqJxA","recommender":"JonyFang"},{"heading":"dotdrop","url":"https://github.com/deadc0de6/dotdrop","recommender":"Smallfly"},{"heading":"Docker-OSX","url":"https://github.com/sickcodes/Docker-OSX","recommender":"红纸"},{"heading":"AttributedString Builder","url":"https://github.com/objcio/attributed-string-builder","recommender":"zoeGuo"}]},{"id":"r-230-2023-01-16","type":"report","title":"老司机 iOS 周报 #230 | 2023-01-16","issue":230,"date":"2023-01-16","year":2023,"path":"Reports/2023/#230-2023.01.16.md","url":"Reports/2023/%23230-2023.01.16.md","excerpt":"Design Priorities for the Swift 6 Language Mode：Swift 5 发布到现在已经快要五年了，Swift 6 预计最快明年就会发布，此前关于 Swift 6 的开发计划也曾在周报里收录过，这次 Swift 团队又发布了另一份关于功能开发优先级的声明，包括：；iPad大屏&Flutter多引擎适配之路：本文介绍了在大屏中如何适配分屏的几种方式，并简单介绍了在 Flutter 中如何通过修改 c+","sections":[{"heading":"Design Priorities for the Swift 6 Language Mode","url":"https://forums.swift.org/t/design-priorities-for-the-swift-6-language-mode/62408","recommender":"kemchenj"},{"heading":"iPad大屏&Flutter多引擎适配之路","url":"https://mp.weixin.qq.com/s/lgW6nOzz3dyA_smxRD-9Pw","recommender":"极速男孩"},{"heading":"Swift Native method swizzling","url":"https://www.guardsquare.com/blog/swift-native-method-swizzling","recommender":"Cooper Chen"},{"heading":"iOS APP添加桌面快捷方式","url":"https://mp.weixin.qq.com/s/z_CfthCni7m1mKtM0KzH6g","recommender":"JonyFang"},{"heading":"Rive · GitHub","url":"https://github.com/rive-app","recommender":"Barney"},{"heading":"Limit Swift Concurrency's cooperative pool","url":"https://alejandromp.com/blog/limit-swift-concurrency-cooperative-pool/","recommender":"EyreFree"},{"heading":"Swift Concurrency – Things They Don’t Tell You","url":"https://wojciechkulik.pl/ios/swift-concurrency-things-they-dont-tell-you","recommender":"zvving"},{"heading":"How to build a Chrome extension with Flutter Web","url":"https://medium.com/flutter-community/how-to-build-a-chrome-extension-with-flutter-web-6518f9845171","recommender":"Crazy"},{"heading":"Managing multiple versions of Swift locally","url":"https://www.polpiella.dev/managing-multiple-swift-versions-locally","recommender":"zoeGuo"},{"heading":"swift-dependencies","url":"https://github.com/pointfreeco/swift-dependencies","recommender":"含笑饮砒霜"}]},{"id":"r-229-2023-01-09","type":"report","title":"老司机 iOS 周报 #229 | 2023-01-09","issue":229,"date":"2023-01-09","year":2023,"path":"Reports/2023/#229-2023.01.09.md","url":"Reports/2023/%23229-2023.01.09.md","excerpt":"AppCode 2022.3 发布以及停止销售和支持：AppCode 是一款由 JetBrains 推出了 iOS 和 macOS 应用开发 IDE。由于没有达到官方希望的市场份额，官方近日宣布，在 AppCode v2022.3 发布后，将停用该产品。在 2023 年 12 月 31 日之前，官方将继续提供专门解决 Xcode 1；Flutter 深度用户，字节跳动如何落地实践？：2023 年 1 月 14 日下午 2 点，字节跳动技","sections":[{"heading":"AppCode 2022.3 发布以及停止销售和支持","url":"https://blog.jetbrains.com/zh-hans/appcode/2022/12/appcode-2022-3-release-and-end-of-sales-and-support/","recommender":"红纸"},{"heading":"Flutter 深度用户，字节跳动如何落地实践？","url":"https://mp.weixin.qq.com/s/s_91C-nSe3grUxOfKCvOJg"},{"heading":"合集：SwiftUI 与 Core Data","url":"https://www.fatbobman.com/tags/swiftui/","recommender":"JonyFang"},{"heading":"Using C++ from Swift","url":"https://github.com/zoecarver/swift/blob/docs/interop-roadmap/docs/CppInteroperability/ForwardVision.md","recommender":"AidenRao"},{"heading":"Prototyping SwiftUI interfaces with OpenAI's ChatGPT","url":"https://www.createwithswift.com/prototyping-swiftui-interfaces-with-openais-chatgpt/","recommender":"Cooper Chen"},{"heading":"一种大幅提升iOS In-App Purchases 内购测试效率的方法","url":"https://juejin.cn/post/7173942907890565151","recommender":"Smallfly"},{"heading":"一文读懂 Xcode 代码索引原理","url":"https://cloud.tencent.com/developer/article/2204613","recommender":"J_Knight_"},{"heading":"Announcing Lottie 4.0 for iOS. A new rendering engine with significant… | by Cal Stephens | The Airbnb Tech Blog | Dec, 2022 | Medium","url":"https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54","recommender":"Barney"},{"heading":"How to manage your Flutter monorepos","url":"https://medium.com/flutter-community/how-to-manage-your-flutter-monorepos-b307cdc9399a","recommender":"CrazyCoderShi"},{"heading":"Faster Apple Builds with the lld Linker","url":"https://eisel.me/lld#integrating-lld","recommender":"含笑饮砒霜"},{"heading":"头条稳定性治理：ARC 环境中对 Objective-C 对象赋值的 Crash 隐患","url":"https://mp.weixin.qq.com/s/chR42Vq4kACIEJBDYlbddg","recommender":"xuyafei86"},{"heading":"Static vs Dynamic Frameworks on iOS — a discussion with ChatGPT","url":"https://www.emergetools.com/blog/posts/static-vs-dynamic-frameworks-ios-discussion-chat-gpt","recommender":"老驴"},{"heading":"Swift 正则速查手册","url":"https://onevcat.com/2022/11/swift-regex/","recommender":"zoeGuo"},{"heading":"2022 LLVM Dev Mtg: Implementing Language Support for ABI-Stable Software Evolution in Swift and LLVM","url":"https://www.youtube.com/watch?v=MgPBetJWkmc","recommender":"kemchenj"}]},{"id":"r-228-2022-12-19","type":"report","title":"老司机 iOS 周报 #228 | 2022-12-19","issue":228,"date":"2022-12-19","year":2022,"path":"Reports/2022/#228-2022.12.19.md","url":"Reports/2022/%23228-2022.12.19.md","excerpt":"D2 脑图 | 第十七届 D2 终端技术大会：上周末 D2 完成了所有的分享，内容干货满满，这是对所有 22 场分享的笔记，错过直播的同学可以快速查看浏览脑图整理。；How to manage build settings using Xcode configuration files：相信大家的 App 都会遇到多环境构建的问题，比如 QA 、预发、Production 环境，一不小心在提审时候还容易搞错版本。本文介绍了利用 文件做环","sections":[{"heading":"D2 脑图 | 第十七届 D2 终端技术大会","url":"https://www.yuque.com/d2conference/17thd2map"},{"heading":"How to manage build settings using Xcode configuration files","url":"https://www.danijelavrzan.com/posts/2022/11/xcode-configuration/","recommender":"享耳先森"},{"heading":"从 Linux 零拷贝深入了解 Linux-I/O","url":"https://mp.weixin.qq.com/s/j1KjR5bRQV6oGrU5tsyHgg","recommender":"老驴"},{"heading":"Security Application Static Analysis applied to iOS and Gitlab CI","url":"https://benoitpasquier.com/2022/07/security-application-static-analysis-applied-to-ios-and-gitlab-ci/","recommender":"红纸"},{"heading":"any Idea How to Use some Generics?","url":"https://async.techconnection.io/talks/frenchkit-2022/antoine-van-der-lee-any-idea-how-to-use-some-generics/","recommender":"AidenRao"},{"heading":"哔哩哔哩 Android 打包优化与云编译","url":"https://mp.weixin.qq.com/s/xls_AL9IyR3580zz8CfCOA","recommender":"Crazy"},{"heading":"Understanding SwiftUI view lifecycles","url":"https://oleb.net/2022/swiftui-view-lifecycle/","recommender":"EyreFree"},{"heading":"Testing Apps with an iPhone and the CarPlay Simulator","url":"https://www.createwithswift.com/testing-apps-with-an-iphone-and-the-carplay-simulator/","recommender":"Barney"},{"heading":"利用 Virtualization 构建虚拟机，从未如此简单","url":"https://mp.weixin.qq.com/s/t7WNfN4snPM70Q91rc-ScQ","recommender":"mellow"},{"heading":"iOS 代码规范工具 SwiftLint SwiftFormat","url":"https://juejin.cn/post/7171725810544738317","recommender":"zoeGuo"}]},{"id":"r-227-2022-12-12","type":"report","title":"老司机 iOS 周报 #227 | 2022-12-12","issue":227,"date":"2022-12-12","year":2022,"path":"Reports/2022/#227-2022.12.12.md","url":"Reports/2022/%23227-2022.12.12.md","excerpt":"Foundation 将使用 Swift 重新实现：Swift 团队宣布计划 Foundation 将使用 Swift 重新实现：；Apple 宣布 App Store 定价机制最重大升级，新增 700 个价格点：Apple 宣布对 App Store 进行问世至今最全面的定价机制升级，为开发者提供新增的 700 个价格点和全新定价工具，让开发者更轻松地针对不同国家和地区的 App Store 设定价格、管理外币汇率变化等。；Ask A","sections":[{"heading":"Foundation 将使用 Swift 重新实现","url":"https://www.swift.org/blog/future-of-foundation/","recommender":"kemchenj"},{"heading":"Apple 宣布 App Store 定价机制最重大升级，新增 700 个价格点","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/3771"},{"heading":"Ask Apple starts December 12","url":"https://developer.apple.com/events/ask-apple/"},{"heading":"性能提升 2.5 倍！字节开源高性能 C++ JSON 库 sonic-cpp","url":"https://mp.weixin.qq.com/s/ExKL8G-Tgx4sXW6a4NwY4w","recommender":"anotheren"},{"heading":"Flutter 的下一步， Dart 3 重大变更即将在 2023 到来","url":"https://mp.weixin.qq.com/s/L4yMoTlAcVcBV58OdBIo8w","recommender":"CrazyCoderShi"},{"heading":"Metal 每日分享 - 系列专栏","url":"https://juejin.cn/column/7168399660153831460","recommender":"Damien"},{"heading":"Flutter for Web 首次首屏优化 - JS 分片优化","url":"https://mp.weixin.qq.com/s/aeI_64dT9nHMrHajeQctAw","recommender":"CrazyCoderShi"},{"heading":"聚焦探索 In-App Purchase 新特性","url":"https://mp.weixin.qq.com/s/zzeFoUKA7jXcCaKtcgaiiQ","recommender":"iHTCboy"},{"heading":"App Store Connect 中的新特性及最佳实践","url":"https://mp.weixin.qq.com/s/ljMZXAhVZhxzoeMU7VAssw","recommender":"chenjiamin1130"},{"heading":"实现无入侵式 C++ 代码 mock 工具","url":"https://mp.weixin.qq.com/s/Kc16Q9Fh30sK9eFB8SfADQ","recommender":"J_Knight_"}]},{"id":"r-226-2022-12-05","type":"report","title":"老司机 iOS 周报 #226 | 2022-12-05","issue":226,"date":"2022-12-05","year":2022,"path":"Reports/2022/#226-2022.12.05.md","url":"Reports/2022/%23226-2022.12.05.md","excerpt":"How to fix \"The compiler is unable to type-check this expression in reasonable time\" error：\"The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expres","sections":[{"heading":"How to fix \"The compiler is unable to type-check this expression in reasonable time\" error","url":"https://sarunw.com/posts/how-to-fix-the-compiler-is-unable-to-type-check-this-expression-in-reasonable-time/","recommender":"zoeGuo"},{"heading":"C++ exception handling ABI","url":"https://maskray.me/blog/2020-12-12-c++-exception-handling-abi#%E4%B8%AD%E6%96%87%E7%89%88","recommender":"ChengzhiHuang"},{"heading":"领域驱动设计四论","url":"https://mp.weixin.qq.com/s/SMAycMJPWr018sU04kbfbQ","recommender":"莲叔"},{"heading":"Testing async/await exceptions","url":"https://arturgruchala.com/testing-async-await-exceptions/","recommender":"Smallfly"},{"heading":"支付宝客户端体验度量与诊断","url":"https://mp.weixin.qq.com/s/SC2DI2kWveSE1L3aBrP7og","recommender":"Crazy"},{"heading":"Stable Diffusion with Core ML on Apple Silicon","url":"https://machinelearning.apple.com/research/stable-diffusion-coreml-apple-silicon","recommender":"含笑饮砒霜"},{"heading":"一个 WebKit Bug 导致小程序页面跳转失败的问题的排查经历","url":"https://mp.weixin.qq.com/s/Qif83v-b9MSae-a3D3IQAQ","recommender":"水水"},{"heading":"How to contribute a new feature to Swift?","url":"https://www.youtube.com/watch?v=E1iMyjRpGHk","recommender":"Cooper Chen"}]},{"id":"r-225-2022-11-28","type":"report","title":"老司机 iOS 周报 #225 | 2022-11-28","issue":225,"date":"2022-11-28","year":2022,"path":"Reports/2022/#225-2022.11.28.md","url":"Reports/2022/%23225-2022.11.28.md","excerpt":"当谈论协程时，我们在谈论什么：一篇关于协程的优秀文章，内容由浅到深，通过一些实际例子回答了以下四个问题：；双十一｜探索 KUN 的加载性能与增强体验：Kun 是闲鱼自研的终端渲染容器，从页面表现的结果来看已达到接近原生展开的性能。本文同时对如何处理 Kun 与 Web 兼容的问题进行了简单的阐述，并且在优化首屏模块渲染效率的问题上提出了一个完整的设计思路。本文中提到，在解决渲染速度慢的问题上，除去简单的资源预加载与接口预请求的；淘宝拍立","sections":[{"heading":"当谈论协程时，我们在谈论什么","url":"https://mp.weixin.qq.com/s/IO4ynnKEfy2Rt-Me7EIeqg","recommender":"Leo"},{"heading":"双十一｜探索 KUN 的加载性能与增强体验","url":"https://mp.weixin.qq.com/s/NWRCembLGrqPzelf7Evw-A","recommender":"Crazy"},{"heading":"淘宝拍立淘 iOS 相册架构设计小结","url":"https://mp.weixin.qq.com/s/ldbwl9nLxWyyBmk3bgX82A","recommender":"zoeGuo"},{"heading":"优先级反转那些事儿","url":"https://mp.weixin.qq.com/s/kp6cdDrdQ4rhfdXH-_Q8IA","recommender":"Damien"},{"heading":"@dynamicCallable in Swift explained with code examples - SwiftLee","url":"https://www.avanderlee.com/swift/dynamiccallable/","recommender":"Barney"},{"heading":"clipped() doesn’t affect hit testing","url":"https://oleb.net/2022/clipped-hit-testing/","recommender":"Smallfly"},{"heading":"Using complex gestures in a SwiftUI ScrollView","url":"https://danielsaidi.com/blog/2022/11/16/using-complex-gestures-in-a-scroll-view","recommender":"享耳先森"},{"heading":"LaunchAtLogin: Add “ Launch at Login ” functionality to your macOS app in seconds","url":"https://github.com/sindresorhus/LaunchAtLogin","recommender":"Cooper Chen"},{"heading":"[Xcode 14 打包，iOS 16 ，`-[AVPlayer replaceCurrentItemWithPlayerItem:]` 崩溃](https://github.com/Baseflow/XamarinMediaManager/issues/814)","url":null,"recommender":"JonyFang"}]},{"id":"r-224-2022-11-21","type":"report","title":"老司机 iOS 周报 #224 | 2022-11-21","issue":224,"date":"2022-11-21","year":2022,"path":"Reports/2022/#224-2022.11.21.md","url":"Reports/2022/%23224-2022.11.21.md","excerpt":"Swift project in 2023：Swift 团队发布明年的开发路线图，今年新增了工作组机制：；云音乐 iOS 端代码静态检测实践：随着项目的扩大，依靠纯人工 Code Review 来保障代码质量、防止代码劣化变得”力不从心“。此时有必要借助代码静态分析能力，提升项目可持续发展所需要的自动化水平。针对 C、Objective-C 主流的静态分析开源项目包括：Clang Static Analyzer、Inf；三代终端容器 K","sections":[{"heading":"Swift project in 2023","url":"https://www.swift.org/blog/focus-areas-2023/"},{"heading":"云音乐 iOS 端代码静态检测实践","url":"https://mp.weixin.qq.com/s/5ZcGBCnrUYwUA0RXyPJt9w","recommender":"水水"},{"heading":"三代终端容器 KUN 的首次大考【架构演进】","url":"https://mp.weixin.qq.com/s/26SCEM6QPhAazydRUq9h3Q"},{"heading":"HOME ARTICLES BOOK ABOUT When .animation animates more (or less) than it’ s supposed to","url":"https://oleb.net/2022/animation-modifier-position/","recommender":"含笑饮砒霜"},{"heading":"React 中的重新渲染","url":"https://mp.weixin.qq.com/s/ADx8PuNvg4xVVLBeh265kw","recommender":"Damien"},{"heading":"Binary Targets in Swift Package Manager","url":"https://www.avanderlee.com/optimization/binary-targets-swift-package-manager/#the-upsides-of-binary-targets","recommender":"Smallfly"},{"heading":"Combining opaque return types with primary associated types","url":"https://www.swiftbysundell.com/articles/opaque-return-types-primary-associated-types/","recommender":"zoeGuo"},{"heading":"Flutter 多引擎渲染，在稿定 App 的实践","url":"https://mp.weixin.qq.com/s/fpbVBg-Usuu7I6lCbPhlsQ","recommender":"老峰"},{"heading":"Stack unwinding","url":"https://maskray.me/blog/2020-11-08-stack-unwinding#中文版","recommender":"xuyafei86"},{"heading":"GitHub - ole/swiftui-layout-inspector: A tool for learning how the SwiftUI layout system works, and for debugging your own layout code.","url":"https://github.com/ole/swiftui-layout-inspector","recommender":"Barney"},{"heading":"Standardizing build system using modern Swift Packages in LINE","url":"https://attendees.bizzabo.com/417034/agenda/activity/1022649","recommender":"kemchenj"}]},{"id":"r-223-2022-11-14","type":"report","title":"老司机 iOS 周报 #223 | 2022-11-14","issue":223,"date":"2022-11-14","year":2022,"path":"Reports/2022/#223-2022.11.14.md","url":"Reports/2022/%23223-2022.11.14.md","excerpt":"波报 | Pofat 的 Swift 中文电子报：波报是聚焦于 Swift 语言与其相关领域的技术周报，宗旨是为中文开发圈注入一些不同面向的资讯。；iOS 16.2 Beta 投屏崩溃：iOS 16.2 Beta 系统投屏会出现 Invalid parameter not satisfying: outputDevice 崩溃，对投屏有强诉求的同学可以暂时别升级。；Ask Apple November 14 to 18：继上次 10 月","sections":[{"heading":"波报 | Pofat 的 Swift 中文电子报","url":"https://pofat.substack.com","recommender":"kemchenj"},{"heading":"iOS 16.2 Beta 投屏崩溃","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/3673","recommender":"Leo"},{"heading":"Ask Apple November 14 to 18","url":"https://developer.apple.com/events/ask-apple/"},{"heading":"Refactoring Swift: Best Practices to succeed","url":"https://www.avanderlee.com/optimization/refactoring-swift-best-practices/","recommender":"极速男孩"},{"heading":"探秘越来越复杂的 ImageIO 框架","url":"https://mp.weixin.qq.com/s/nbPIScJEZ3ReMSFuvNLkzQ","recommender":"JonyFang"},{"heading":"手把手教你写 Dart ffi","url":"https://mp.weixin.qq.com/s/zmOH4p2932oaXzsF-MA5fA","recommender":"CrazyCoderShi"},{"heading":"Result builders in Swift explained with code examples","url":"https://www.avanderlee.com/swift/result-builders/","recommender":"Smallfly"},{"heading":"When does a SwiftUI Environment get retained?","url":"https://tiagolopes.blog/2022/11/01/when-does-a-swiftui-environment-get-retained/","recommender":"Cooper Chen"},{"heading":"百度 APP iOS 端内存优化实践 - 内存管控方案","url":"https://mp.weixin.qq.com/s/dETOGD3NYU2SdZhxGu0SZg","recommender":"AidenRao"},{"heading":"How Xcode 14 unintentionally increases app size","url":"https://www.emergetools.com/blog/posts/how-xcode14-unintentionally-increases-app-size","recommender":"莲叔"},{"heading":"Should we manually call @StateObject initializer","url":"https://sarunw.com/posts/manually-initialize-stateobject/","recommender":"Damien"},{"heading":"CSProgress","url":"https://github.com/CharlesJS/CSProgress","recommender":"享耳先森"}]},{"id":"r-222-2022-11-07","type":"report","title":"老司机 iOS 周报 #222 | 2022-11-07","issue":222,"date":"2022-11-07","year":2022,"path":"Reports/2022/#222-2022.11.07.md","url":"Reports/2022/%23222-2022.11.07.md","excerpt":"挑战上岛：适配实时活动和灵动岛：实时活动用于在 iPhone 锁屏以及灵动岛上显示来自 App 的最新信息，帮助用户及时查看当前任务和事件的进展。参与此次活动，开发者将了解如何设计和开发的实时活动，以及如何利用灵动岛带来更出色的用户体验。；第二期字节跳动技术 iOS 技术沙龙正式开放报名：第二期字节跳动技术 iOS 技术沙龙正式开放报名了！ 本期沙龙将围绕静态分析、视频播放品质优化、首页 Feed 重构、自动化服务及端智能技术探索等 5","sections":[{"heading":"挑战上岛：适配实时活动和灵动岛","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"第二期字节跳动技术 iOS 技术沙龙正式开放报名","url":"https://mp.weixin.qq.com/s/KTobjj9B8vuEYPIKggfeKA","recommender":"Barney"},{"heading":"自动化测试在美团外卖的实践与落地","url":"https://mp.weixin.qq.com/s/vLR1FqGi6TiICEcWzOnHfQ","recommender":"EyreFree"},{"heading":"Towards the next generation of XNU memory safety: kalloc_type","url":"https://security.apple.com/blog/towards-the-next-generation-of-xnu-memory-safety/","recommender":"Damien"},{"heading":"深入理解 virtual 关键字","url":"https://mp.weixin.qq.com/s/fvgU5iBP9_0yZOsX0no_Cg","recommender":"莲叔"},{"heading":"聊聊 iOS 中的像素对齐","url":"https://juejin.cn/post/7124658703088910350","recommender":"Smallfly"},{"heading":"Resolver for iOS Dependency Injection","url":"https://www.kodeco.com/22203552-resolver-for-ios-dependency-injection-getting-started","recommender":"JonyFang"},{"heading":"美团高性能终端实时日志系统建设实践","url":"https://mp.weixin.qq.com/s/BAcB_LQ1Nr00Y7RxjRDK1g","recommender":"Cooper Chen"},{"heading":"智能测试实践之路 - UI 遍历技术","url":"https://mp.weixin.qq.com/s/wetQa8iiOnKySehtFpbPtQ","recommender":"老峰"},{"heading":"iOS 灵动岛开发实践","url":"https://juejin.cn/post/7153236337074634788","recommender":"水水"},{"heading":"盒马 iOS Live Activity & “灵动岛”配送场景实践","url":"https://mp.weixin.qq.com/s/6M3jaVwgTAaQ0A0Fsjcs1Q","recommender":"J_Knight_"},{"heading":"基于优酷业务特色的跨平台技术 | GaiaX 开源解读","url":"https://mp.weixin.qq.com/s/2LW4qS2Sk4SV23pAE2xhuw","recommender":"xuyafei86"},{"heading":"Swift Package Manager 工程实践","url":"https://mp.weixin.qq.com/s/q7jolU99K7FI9JvAxjwRwg","recommender":"AidenRao"}]},{"id":"r-221-2022-10-31","type":"report","title":"老司机 iOS 周报 #221 | 2022-10-31","issue":221,"date":"2022-10-31","year":2022,"path":"Reports/2022/#221-2022.10.31.md","url":"Reports/2022/%23221-2022.10.31.md","excerpt":"全新升级 | 第十七届 D2 终端技术大会终于来了~：D2 的前身是「前端技术论坛」，应该有不少前端朋友对它非常了解，去年大概有 2000 多个人报名。今年也升级成了「终端技术大会」，加入了不少客户端的内容，D2 不仅会重视内容的深度，同时也会拓宽内容的广度，希望和大家一起了解一线互联网在前端 / 客户端领域的技术探索与未来。此外，；Apple 的安全研究平台正式公开上线：苹果的安全平台 Apple Security Research ","sections":[{"heading":"全新升级 | 第十七届 D2 终端技术大会终于来了~","url":"https://mp.weixin.qq.com/s/e1ilPhCaJDT9takQE9vpBA"},{"heading":"Apple 的安全研究平台正式公开上线","url":"https://mp.weixin.qq.com/s/M_NZF8F9r9PNkKTQbOycNg"},{"heading":"iOS 高级之美（六）—— malloc 分析","url":"https://juejin.cn/post/6844904033908424717","recommender":"xuyafei86"},{"heading":"iOS ADRP 汇编指令与虚拟内存","url":"https://juejin.cn/post/7159152535062888479","recommender":"Damien"},{"heading":"iOS SIGKILL 信号量崩溃抓取以及优化实践","url":"https://mp.weixin.qq.com/s/2S3XIpKXMnYNFayeBE_d2Q","recommender":"JonyFang"},{"heading":"Compiling Swift generics, Part I","url":"https://forums.swift.org/t/compiling-swift-generics-part-i/60898","recommender":"含笑饮砒霜"},{"heading":"推荐一个 Swift Concurrency 拓展库","url":"https://github.com/ChimeHQ/ConcurrencyPlus","recommender":"Cooper Chen"}]},{"id":"r-220-2022-10-24","type":"report","title":"老司机 iOS 周报 #220 | 2022-10-24","issue":220,"date":"2022-10-24","year":2022,"path":"Reports/2022/#220-2022.10.24.md","url":"Reports/2022/%23220-2022.10.24.md","excerpt":"A Possible Vision for Macros in Swift：前一段时间 Swift 团队决定将编译器的 Parser 改为使用 Swift 实现，并且将这一部分功能内置到 SwiftSyntax 里。；Which Collection?：集合（Collection）是编程语言常用的类型，Swift 集合是值类型的，对于复杂的集合数据，频繁拷贝可能会带来性能问题。本文通过一个数独算法，介绍如何对数组做优化，主要利用了 关键","sections":[{"heading":"A Possible Vision for Macros in Swift","url":"https://forums.swift.org/t/a-possible-vision-for-macros-in-swift/60900","recommender":"kemchenj"},{"heading":"Which Collection?","url":"https://khanlou.com/2022/10/some-collections/","recommender":"Smallfly"},{"heading":"Xcode 中使用 SPM 和 Build Configuration 的一些坑","url":"https://onevcat.com/2022/10/spm-in-xcode/","recommender":"红纸"},{"heading":"iOS 灵动岛开发实践","url":"https://juejin.cn/post/7153236337074634788","recommender":"anotheren"},{"heading":"Swift Concurrency – Things They Don’t Tell You","url":"https://wojciechkulik.pl/ios/swift-concurrency-things-they-dont-tell-you","recommender":"Cooper Chen"},{"heading":"灵动岛开发示例代码","url":"https://github.com/jordibruin/Dynamic-Islands","recommender":"anotheren"},{"heading":"Swift 视频教程 ChaoCode","url":"https://space.bilibili.com/1911023449/video","recommender":"EyreFree"}]},{"id":"r-219-2022-10-17","type":"report","title":"老司机 iOS 周报 #219 | 2022-10-17","issue":219,"date":"2022-10-17","year":2022,"path":"Reports/2022/#219-2022.10.17.md","url":"Reports/2022/%23219-2022.10.17.md","excerpt":"Apple 面向开发者推出 Ask Apple；Dynamic Island (and Live Activities): Quick start tutorial：苹果在 Xcode 14.1 Beta 中带来了灵动岛的相关 API ，本文主要介绍了如何简单的利用新的 Live Activities 的 API 来创建一个自己的灵动岛。；CPU 是如何与内存交互的：今年上半年 M1 Pro/Max/Ultra 在 GPU 上实际表现没","sections":[{"heading":"Apple 面向开发者推出 Ask Apple","url":"https://www.apple.com.cn/newsroom/2022/10/apple-introduces-ask-apple-for-developers/"},{"heading":"Dynamic Island (and Live Activities): Quick start tutorial","url":"https://nemecek.be/blog/171/dynamic-island-and-live-activities-quick-start-tutorial","recommender":"极速男孩"},{"heading":"CPU 是如何与内存交互的","url":"https://mp.weixin.qq.com/s/SaaHKPnNUSvDkmwKtip3HA","recommender":"老驴"},{"heading":"Apple’s use of Swift and SwiftUI in iOS 16","url":"https://blog.timac.org/2022/1005-state-of-swift-and-swiftui-ios16/","recommender":"含笑饮砒霜"},{"heading":"一文让你理清 PrimaryScrollController","url":"https://mp.weixin.qq.com/s/1kLtGleY6BiC3bkV6YK83Q","recommender":"CrazyCoderShi"},{"heading":"Where View.task gets its main-actor isolation from","url":"https://oleb.net/2022/swiftui-task-mainactor/","recommender":"Damien"},{"heading":"Xcode 14.0 generates wrong concurrency code for macOS targets","url":"https://oleb.net/2022/xcode-14-mac-concurrency-bugs/","recommender":"Cooper"},{"heading":"基于自建 VTree 的全链路埋点方案","url":"https://mp.weixin.qq.com/s/FuL2zynvf1xGjg_RCZcc4Q","recommender":"Barney"},{"heading":"虚拟内存 & I/O & 零拷贝","url":"https://mp.weixin.qq.com/s/DMWfSxrbu4kgCh4JCQ4XIQ","recommender":"老峰"},{"heading":"妙言 - 更适合工程师用的 markdown 笔记应用","url":"http://miaoyan.app/","recommender":"水水"},{"heading":"Semaphore","url":"https://github.com/groue/Semaphore","recommender":"Smallfly"},{"heading":"响应式编程 Demo - RxStudy、GetXStudy","url":"https://github.com/seasonZhu/RxStudy","recommender":"JonyFang"},{"heading":"package-benchmark","url":"https://github.com/ordo-one/package-benchmark","recommender":"xuyafei"}]},{"id":"r-218-2022-09-26","type":"report","title":"老司机 iOS 周报 #218 | 2022-09-26","issue":218,"date":"2022-09-26","year":2022,"path":"Reports/2022/#218-2022.09.26.md","url":"Reports/2022/%23218-2022.09.26.md","excerpt":"中心化决议管理——云端分析：本文主要分享了目前字节跳动内部的一种 CocoaPods 云端化的优化方案，针对大量重复的 iOS 工程流水线构建任务进行了收敛和复用，在保证依赖决议正确性的前提下加速了依赖管理速率，提升了研发效能。目前云端分析服务已经完成第一阶段的开发并落地使用，已被内部几个核心的生产线使用。；How to use UIViewController in SwiftUI：在 iOS 开发中，SwiftUI 和 UIKit ","sections":[{"heading":"中心化决议管理——云端分析","url":"https://mp.weixin.qq.com/s/BcX73VpSBxAgjOwoKaEoEw","recommender":"JonyFang"},{"heading":"How to use UIViewController in SwiftUI","url":"https://sarunw.com/posts/uiviewcontroller-in-swiftui/","recommender":"Damien"},{"heading":"viewDidLoad() in SwiftUI","url":"https://sarunw.com/posts/swiftui-viewdidload/","recommender":"zvving"},{"heading":"云音乐 iOS 启动性能优化「开荒篇」","url":"https://mp.weixin.qq.com/s/XVd9QNvXgJx_9K3XHAcaSA","recommender":"Smallfly"},{"heading":"大终端领域的新物种-KUN","url":"https://mp.weixin.qq.com/s/tDDI9Wn5eUTOJKHxYL27xg","recommender":"CrazyCoderShi"},{"heading":"Dynamic Island Animation explained","url":"https://twitter.com/BradEllis/status/1570892167807377409?s=20&t=T38Q6Acu_TAqOGhWbmQE0A","recommender":"ChengzhiHuang"}]},{"id":"r-217-2022-09-19","type":"report","title":"老司机 iOS 周报 #217 | 2022-09-19","issue":217,"date":"2022-09-19","year":2022,"path":"Reports/2022/#217-2022.09.19.md","url":"Reports/2022/%23217-2022.09.19.md","excerpt":"字节跳动 DanceCC 工具链系列之 Xcode LLDB 耗时监控统计方案：在 字节跳动 DanceCC 工具链系列之 Swift 调试性能的优化方案 一文中，介绍了如何使用自定义的工具链，来针对性优化调试器的性能，解决大型 Swift 项目的调试痛点。为了精确测量经过优化后的 LLDB 调试 Xcode 项目效率提升效果，衡量项目收益，需要开发一套能够；这一年，我对终端组织与技术架构的思考【专家讲技术】：闲鱼是国内较早进行 Flu","sections":[{"heading":"字节跳动 DanceCC 工具链系列之 Xcode LLDB 耗时监控统计方案","url":"https://mp.weixin.qq.com/s/4DgbZosBit-kTVhYMwRlHw","recommender":"含笑饮砒霜"},{"heading":"这一年，我对终端组织与技术架构的思考【专家讲技术】","url":"https://mp.weixin.qq.com/s/BGGsuYrlojMfTqfTo71VZg","recommender":"莲叔"},{"heading":"基于 React Native 的动态列表方案探索","url":"https://mp.weixin.qq.com/s/5Oa45FN3SECveu6_N89k2A","recommender":"Damien"},{"heading":"终极 C++ 避坑指南","url":"https://mp.weixin.qq.com/s/Isr5-FojMTRK36g-Gh2_yQ","recommender":"xuyafei"},{"heading":"如何判断 ScrollView、List 是否正在滚动中","url":"https://juejin.cn/post/7143002835192381471#heading-0","recommender":"老峰"},{"heading":"你真的懂 iOS 的异常捕获吗？","url":"https://juejin.cn/post/7142656591139962888#heading-16","recommender":"邦Ben"},{"heading":"Clip control on the Apple GPU","url":"https://rosenzweig.io/blog/asahi-gpu-part-6.html","recommender":"AidenRao"},{"heading":"特效侧用户体验优化实战 -- 包体积篇","url":"https://mp.weixin.qq.com/s/3ZrRW0iRSBjqs0ix4FWzZA","recommender":"JonyFang"},{"heading":"What's the \"any\" keyword? Understanding Type Erasure in Swift","url":"https://swiftrocks.com/whats-any-understanding-type-erasure-in-swift","recommender":"享耳先森"},{"heading":"iPhone 14 Screen Sizes","url":"https://useyourloaf.com/blog/iphone-14-screen-sizes/","recommender":"Barney"},{"heading":"Regex101, 正则调试在线工具","url":"https://regex101.com","recommender":"anotheren"}]},{"id":"r-216-2022-09-05","type":"report","title":"老司机 iOS 周报 #216 | 2022-09-05","issue":216,"date":"2022-09-05","year":2022,"path":"Reports/2022/#216-2022.09.05.md","url":"Reports/2022/%23216-2022.09.05.md","excerpt":"Flutter 3.3 正式发布：Flutter 3.3 发布了 🎉🎉🎉，这是一个比较常规的版本，主要是新功能和优化：；How to improve iOS build times with modularization：随着业务的迭代，项目代码的复杂度越来越高，如果不能很好地架构我们的应用，将严重拖慢编译速度，从而影响开发体验。本文介绍「模块化」的方式（很多大厂也是这么做的），利用模块间的横向依赖（而不是垂直依赖）来解决这一问题","sections":[{"heading":"Flutter 3.3 正式发布","url":"https://mp.weixin.qq.com/s/-AYFnatRYNARGTxhzSY9Lg","recommender":"CrazyCoderShi"},{"heading":"How to improve iOS build times with modularization","url":"https://www.runway.team/blog/how-to-improve-ios-build-times-with-modularization","recommender":"享耳先森"},{"heading":"Moving “ The Swift Programming Language ” book to open source","url":"https://forums.swift.org/t/moving-the-swift-programming-language-book-to-open-source/59989","recommender":"Smallfly"},{"heading":"云音乐 iOS 端网络图片下载优化实践","url":"https://mp.weixin.qq.com/s/R1XLp9hjHDBdYcOI6w8psw","recommender":"J_Knight_"},{"heading":"Clang Module 内部实现原理及源码分析","url":"https://mp.weixin.qq.com/s/fm_Wxrs9o6V53jtGdp3v9w","recommender":"Damien"},{"heading":"How do we use SwiftUI in the Medium iOS application","url":"https://medium.engineering/how-do-we-use-swiftui-in-the-medium-ios-application-8f7bd95416ce","recommender":"JimQ"},{"heading":"Stop Xcode 14 beta from draining your battery","url":"https://blog.nihongo-app.com/stop-xcode-14-beta-from-pegging-cpu/","recommender":"水水"}]},{"id":"r-215-2022-08-29","type":"report","title":"老司机 iOS 周报 #215 | 2022-08-29","issue":215,"date":"2022-08-29","year":2022,"path":"Reports/2022/#215-2022.08.29.md","url":"Reports/2022/%23215-2022.08.29.md","excerpt":"以小窥大：IO 卡顿探寻苹果文件系统：从一个用户反馈的不寻常的 I/O 卡顿入手，发现苹果 APFS 的一个严重 bug。结合问题场景分析问题，结合数据分析结果，发现苹果的文件操作存在的坑，并给出了相应建议。在日常缓存设计中，也需要留意相应的这些点。；不改一行业务代码，飞书 iOS 低端机启动优化实践：在性能优化中，并发是一个常见的手段。但 CPU 核数是有限的，意味着同时能执行的线程数量也是固定的，不合理的并发一方面会带来线程频繁切换","sections":[{"heading":"以小窥大：IO 卡顿探寻苹果文件系统","url":"https://mp.weixin.qq.com/s/_bdY3hvd8VBEAfgxmMVf_A","recommender":"JonyFang"},{"heading":"不改一行业务代码，飞书 iOS 低端机启动优化实践","url":"https://mp.weixin.qq.com/s/KQJ5QXHdhwHRN65KdD45qA","recommender":"Leo"},{"heading":"在 SwiftUI 中用 Text 实现图文混排","url":"https://www.fatbobman.com/posts/mixing_text_and_graphics_with_Text_in_SwiftUI/","recommender":"含笑饮砒霜"},{"heading":"响应式编程的复杂度和简化","url":"https://mp.weixin.qq.com/s/7jUGbSmR87FkTRqsm20NFQ","recommender":"Smallfly"},{"heading":"基于汇编实现 objc_msgSend hook 方法耗时的方案","url":"https://juejin.cn/post/7134877291716280328","recommender":"kemchenj"},{"heading":"【译】本地优先软件 Local-first software","url":"https://www.zxch3n.com/local-first/"},{"heading":"Implementing Parts of the Swift Compiler in Swift","url":"https://forums.swift.org/t/implementing-parts-of-the-swift-compiler-in-swift/59524","recommender":"张嘉夫"},{"heading":"抖音平台多产物代码隔离技术的实践与探索","url":"https://mp.weixin.qq.com/s/fjeF3LLoGsPIQN4D3el67g","recommender":"Barney"},{"heading":"深入解析 Flutter 下一代渲染引擎 Impeller","url":"https://mp.weixin.qq.com/s/GptJbPXPediNRc4KvZzr6g","recommender":"xuyafei"},{"heading":"flutter_impression - Flutter 曝光事件检测工具","url":"https://github.com/623637646/flutter_impression","recommender":"水水"},{"heading":"ZReviewTender","url":"https://github.com/ZhgChgLi/ZReviewTender","recommender":"老峰"}]},{"id":"r-214-2022-08-22","type":"report","title":"老司机 iOS 周报 #214 | 2022-08-22","issue":214,"date":"2022-08-22","year":2022,"path":"Reports/2022/#214-2022.08.22.md","url":"Reports/2022/%23214-2022.08.22.md","excerpt":"iOS 中的字节对齐：字节对齐是 C 语言中的概念，Objective-C 作为 C 语言的超集，iOS 开发者也需要对字节对齐有所了解。本文给出了一些字节对齐的建议，以及字节对齐的相关介绍：；iOS 底层原理 39：Instruments 系列（三）Animation Hitches：由于高刷屏和动态帧率的设备出现，用 FPS 来衡量界面的流畅性已经不那么准确了，所以 Apple 提出了 Animation Hitche 这个概念来衡","sections":[{"heading":"iOS 中的字节对齐","url":"https://juejin.cn/post/7132403137725333518","recommender":"Smallfly"},{"heading":"iOS 底层原理 39：Instruments 系列（三）Animation Hitches","url":"https://mp.weixin.qq.com/s/fTmgN5phGQtbQOUHZ7Pe3Q","recommender":"Leo"},{"heading":"网络通信 | HTTP(S) 那些事儿","url":"https://mp.weixin.qq.com/s/YtyrIl8UWK43iYfjN4HUyQ","recommender":"AidenRao"},{"heading":"[iOS 16 NSURLComponents 行为变更]","url":null,"recommender":"极速男孩"},{"heading":"Flutter 状态管理新的实践","url":"https://mp.weixin.qq.com/s/oNjRt2qGHetEXLtkDPU63A","recommender":"CrazyCoderShi"},{"heading":"Xcode console 替代方案 - ConsoleRedirect","url":"https://github.com/luoqisheng/ConsoleRedirect","recommender":"水水"},{"heading":"Pulse 2.0 released","url":"https://kean.blog/post/pulse-2","recommender":"kemchenj"}]},{"id":"r-213-2022-08-15","type":"report","title":"老司机 iOS 周报 #213 | 2022-08-15","issue":213,"date":"2022-08-15","year":2022,"path":"Reports/2022/#213-2022.08.15.md","url":"Reports/2022/%23213-2022.08.15.md","excerpt":"Reduce Searching In Array：这两篇文章介绍了一些提高编码性能的小技巧。在遍历数组时，要警惕多层循环，多思考是否可以利用 Set/Dictionary 降低复杂度。在循环体内尽量避免创建集合类型，特别需要关注值类型的 Copy-on-write。；货拉拉 iOS 司机端线程治理总结：文章主要介绍了货拉拉 iOS 司机端，在线程治理方面的实践。如：队列的管理和分配，高并发业务的梳理和重构，线程使用的合理性评估与改造，","sections":[{"heading":"Reduce Searching In Array","url":"https://betterprogramming.pub/how-to-boost-your-ios-code-performance-reduce-searching-an-array-55fbdfee2050","recommender":"Smallfly"},{"heading":"货拉拉 iOS 司机端线程治理总结","url":"https://juejin.cn/post/7129391597967376415","recommender":"AidenRao"},{"heading":"Content transition in SwiftUI","url":"https://swiftwithmajid.com/2022/08/02/content-transition-in-swiftui/","recommender":"Damien"},{"heading":"Shared with You implementation and testing explained","url":"https://www.avanderlee.com/swift/shared-with-you/","recommender":"享耳先森"},{"heading":"Advances in Swift Package Manager's dependency access control","url":"https://www.polpiella.dev/advances-in-swift-package-access-control/","recommender":"张嘉夫"},{"heading":"MachO 代码签名剖析","url":"https://juejin.cn/post/7017842746937311246","recommender":"kemchenj"},{"heading":"RTC 场景下的屏幕共享优化实践","url":"https://mp.weixin.qq.com/s/tyD_y0xhCMEJg0tfTelHfA","recommender":"邦Ben"},{"heading":"Device List | AppleDB","url":"https://appledb.dev/device-list.html","recommender":"Barney"}]},{"id":"r-212-2022-08-08","type":"report","title":"老司机 iOS 周报 #212 | 2022-08-08","issue":212,"date":"2022-08-08","year":2022,"path":"Reports/2022/#212-2022.08.08.md","url":"Reports/2022/%23212-2022.08.08.md","excerpt":"【WWDC22 110352/110353】拥抱 Swift 泛型：本文主要介绍 Swift 5.7 中关于泛型新增的语言特性。通过一个示例程序与你探讨泛型的使用场景与协议的接口设计，帮助你理解 some 与 any 修饰符在泛型中的使用。；【WWDC22 10068】UIKit 新特性：UIKit 作为 iOS 开发过程中非常核心的一个 framework，每年的更新换代都会对其做出一些升级和调整。只不过以往更多是针对单独的改动出独立","sections":[{"heading":"【WWDC22 110352/110353】拥抱 Swift 泛型","url":"https://xiaozhuanlan.com/topic/7651204893"},{"heading":"【WWDC22 10068】UIKit 新特性","url":"https://xiaozhuanlan.com/topic/3805624917"},{"heading":"【WWDC22 10136/10137/110340/110342】Swift Charts 高效图表的实现与优质图表设计要素","url":"https://xiaozhuanlan.com/topic/2164358790"},{"heading":"Switching between SwiftUI’s HStack and VStack","url":"https://www.swiftbysundell.com/articles/switching-between-swiftui-hstack-vstack/","recommender":"zvving"},{"heading":"使用 deno_core 开发一个 JavaScript 运行时","url":"https://mp.weixin.qq.com/s/CLYFgEKnjPufoE07wKnzdQ","recommender":"Smallfly"},{"heading":"tcmalloc 源码解析","url":"https://dirtysalt.github.io/html/tcmalloc.html","recommender":"xuyafei"},{"heading":"可支持动态插入业务元素的混合 MP4 方案 - YYEVA","url":"https://juejin.cn/post/7126797460189478920","recommender":"JonyFang"},{"heading":"一文了解字节跳动“埋点验证平台”","url":"https://mp.weixin.qq.com/s/4SnwKSswo0LJDUg6NoaAQw","recommender":"Barney"},{"heading":"解决 Flutter 引起的 iOS 内存崩溃问题","url":"https://juejin.cn/post/7123765829929762847","recommender":"CrazyCoderShi"},{"heading":"iOS 16 UIView/UIViewController 新变化","url":null,"recommender":"ChengzhiHuang"},{"heading":"阿里跨端技术演进","url":null,"recommender":"kemchenj"},{"heading":"iOS 16 Live Activity","url":"https://mp.weixin.qq.com/s/aKD-WBYHsepg96zOC378cg","recommender":"享耳先森"},{"heading":"【WWDC22 10058 & 110343】SwiftUI on iPad","url":"https://xiaozhuanlan.com/topic/3145670289"},{"heading":"【WWDC22 10142】 通过并发编程更优雅的管理后台任务","url":"https://xiaozhuanlan.com/topic/4708519362"},{"heading":"【WWDC22 10066/10101/10104】 探索 Metal3","url":"https://xiaozhuanlan.com/topic/9276153048"},{"heading":"【WWDC22 10079】提高应用程序和服务器的 DNS 安全性","url":"https://xiaozhuanlan.com/topic/4802516793"},{"heading":"【WWDC22 10032】使用新框架实现 Shortcuts","url":"https://xiaozhuanlan.com/topic/7083456912"},{"heading":"【WWDC22 110367】使用 Concept 简化 C++ 模版","url":"https://xiaozhuanlan.com/topic/6302984517"},{"heading":"【WWDC22 10016】使用 CarPlay 扩展你的 App","url":"https://xiaozhuanlan.com/topic/5913846702"},{"heading":"【WWDC22 10128】利用现实物体搭建 AR 场景","url":"https://xiaozhuanlan.com/topic/5789132064"}]},{"id":"r-211-2022-08-01","type":"report","title":"老司机 iOS 周报 #211 | 2022-08-01","issue":211,"date":"2022-08-01","year":2022,"path":"Reports/2022/#211-2022.08.01.md","url":"Reports/2022/%23211-2022.08.01.md","excerpt":"TestFlight 更新：支持上传使用 Xcode 14 beta 4 打包的 App：2022 年 7 月 29 日，TestFlight 可以上传 Xcode 14 beta 4 打包的 APP 以供开发者进行分发测试，已支持的新特性有 WeatherKit、CloudKit、PushToTalk 等，但目前 Background Assets 还未获得支持。；Live Activities 文档放出：今年 WWDC22 上苹果有","sections":[{"heading":"TestFlight 更新：支持上传使用 Xcode 14 beta 4 打包的 App","url":"https://developer.apple.com/news/releases/?id=07282022b"},{"heading":"Live Activities 文档放出","url":"https://developer.apple.com/documentation/activitykit/displaying-live-data-on-the-lock-screen-with-live-activities"},{"heading":"深入浅出依赖注入及其在抖音直播中的应用","url":"https://mp.weixin.qq.com/s/Zp-OqCVVr9CbDv1Y1zWN-w","recommender":"AidenRao"},{"heading":"Swift 中的 JSON 反序列化","url":"https://mp.weixin.qq.com/s/lvX4uY1dGo7k3OGmEayJpg","recommender":"Smallfly"},{"heading":"从零开始理解 JSC 中的 GC","url":"https://webkit.org/blog/12967/understanding-gc-in-jsc-from-scratch/","recommender":"Damien"},{"heading":"LLVM New Pass Manager","url":null,"recommender":"kemchenj"},{"heading":"AssociatedObject 源码分析：如何实现线程安全？","url":"https://juejin.cn/post/7124943924308738061","recommender":"JonyFang"},{"heading":"幸福里 C 端 iOS 编译优化实践 - 优化 40% 耗时","url":"https://mp.weixin.qq.com/s/EQ9FXuDbtMa3RtxIAaXtig","recommender":"红纸"},{"heading":"iOS 不必现崩溃的点对点解析以及治理","url":"https://mp.weixin.qq.com/s/tGvE-2flzhm4skkrfbUIBA","recommender":"J_Knight_"},{"heading":"开源一款苹果 macOS 工具 - AppleParty（苹果派）","url":"https://juejin.cn/post/7081069026515877919","recommender":"红纸"},{"heading":"腾讯柠檬清理","url":"https://github.com/Tencent/lemon-cleaner","recommender":"EyreFree"}]},{"id":"r-210-2022-07-25","type":"report","title":"老司机 iOS 周报 #210 | 2022-07-25","issue":210,"date":"2022-07-25","year":2022,"path":"Reports/2022/#210-2022.07.25.md","url":"Reports/2022/%23210-2022.07.25.md","excerpt":"【WWDC22 110363】App 包大小优化和 Runtime 上的性能提升：今年 Apple 在 Objective-C 运行时和链接器底层做了重大优化，包括 Swift 协议检查、Objective-C 消息发送、Retain 和 Release 底层优化以及 Autorelease 自动省略优化。以往开发者往往需要使用各种奇淫技巧来优化包大小，而在 ；【WWDC22 10026】沟通影像世界的新桥梁——实况文本 API 介绍：","sections":[{"heading":"【WWDC22 110363】App 包大小优化和 Runtime 上的性能提升","url":"https://xiaozhuanlan.com/topic/4675012938"},{"heading":"【WWDC22 10026】沟通影像世界的新桥梁——实况文本 API 介绍","url":"https://xiaozhuanlan.com/topic/2861437095"},{"heading":"【WWDC22 10110】如何搭建一个国际化的应用","url":"https://xiaozhuanlan.com/topic/6498107253"},{"heading":"【WWDC22 110368/110369】Swift-DocC 新特性","url":"https://xiaozhuanlan.com/topic/3658492071"},{"heading":"【WWDC22 110364】揭开 Xcode 构建并行化的神秘面纱","url":"https://xiaozhuanlan.com/topic/0389142657"},{"heading":"Upcoming transition from the XML feed to the App Store Connect API","url":"https://developer.apple.com/news/?id=yqf4kgwb"},{"heading":"StoreKit2 实际接入时候的踩坑与解决实录","url":"https://juejin.cn/post/7122458652945956878","recommender":"ChengzhiHuang"},{"heading":"UIPasteBoard's privacy change in iOS 16","url":"https://sarunw.com/posts/uipasteboard-privacy-change-ios16/","recommender":"张嘉夫"},{"heading":"MemoryThrashing：抖音直播解决内存抖动实践","url":"https://mp.weixin.qq.com/s/KSSWuk6y3A6qL7WPL9irvA","recommender":"Leo"},{"heading":"一键释放iOS 64位App潜力","url":"https://www.toutiao.com/article/7116717500678570507","recommender":"红纸"},{"heading":"04 - 探究 iOS 底层原理 | ARM64 汇编","url":"https://juejin.cn/post/7115302848270696485","recommender":"AidenRao"},{"heading":"抢先体验! 在浏览器里写 Flutter 是一种什么体验？","url":"https://mp.weixin.qq.com/s/BZgc2VWWqOvUjZyo1FS3nw","recommender":"极速男孩"},{"heading":"iOS 為多語系字串買份保險吧！. 確保 Localizable.strings 文字檔不被意外改壞 | by ZhgChgLi | ZRealm Dev. | Jul, 2022 | Medium","url":"https://medium.com/p/48a8526c1300","recommender":"Barney"},{"heading":"妈妈再也不用担心我找不到 iOS 学习资料啦","url":"https://mp.weixin.qq.com/s?__biz=Mzg3MjcxNzUxOQ==&mid=2247485043&idx=1&sn=d19ea1c32495eb40c78d6356819aa5e3&chksm=ceea4bd3f99dc2c55c8d8f8abf3071dd9aeca1a59cd4e764ac2b886ed785e81a661e441ad414&token=2062691669&lang=zh_CN#rd","recommender":"J_Knight_"},{"heading":"【WWDC22 10116】初见 CKTool JS","url":"https://xiaozhuanlan.com/topic/8235470691"},{"heading":"【WWDC22 10097】What's new in App Clips","url":"https://xiaozhuanlan.com/topic/6739528410"},{"heading":"【WWDC22 10038】SKAdNetwork 4.0 新特性","url":"https://xiaozhuanlan.com/topic/3468519720"},{"heading":"【WWDC22 10113/10114/110565】在 iOS 上探索 EDR","url":"https://xiaozhuanlan.com/topic/1874509623"},{"heading":"【WWDC22 10148】Meet Apple Music API & MusicKit","url":"https://xiaozhuanlan.com/topic/1625743890"},{"heading":"【WWDC22 10162】使用网格着色器处理几何变换","url":"https://xiaozhuanlan.com/topic/0723561894"},{"heading":"【WWDC22 10157/10158】SF Symbols 4 使用指南","url":"https://xiaozhuanlan.com/topic/8712590364"},{"heading":"【WWDC22 10039】Xcode StoreKit 测试的新功能","url":"https://xiaozhuanlan.com/topic/5842093617"},{"heading":"【WWDC22 10096】What’s new in Privacy","url":"https://xiaozhuanlan.com/topic/9482017536"},{"heading":"【WWDC22 10117】“对讲机”的体验提升","url":"https://xiaozhuanlan.com/topic/2863915470"},{"heading":"【WWDC22 10126】Discover ARKit 6","url":"https://xiaozhuanlan.com/topic/2439056187"}]},{"id":"r-209-2022-07-18","type":"report","title":"老司机 iOS 周报 #209 | 2022-07-18","issue":209,"date":"2022-07-18","year":2022,"path":"Reports/2022/#209-2022.07.18.md","url":"Reports/2022/%23209-2022.07.18.md","excerpt":"【WWDC22 10090】TextKit 2 新特性解读及适配方案：本文基于 WWDC22 10090 - What's new in TextKit and text views 进行介绍，首先是对于 iOS 上文本系统发展的回顾，接着介绍了 TextKit 的核心设计原则，TextKit 2 相对于 TextKit 1 的优化点，及 Text；【WWDC22 10082】利用 Xcode 和设备上的检测工具排查卡顿：今年 Appl","sections":[{"heading":"【WWDC22 10090】TextKit 2 新特性解读及适配方案","url":"https://xiaozhuanlan.com/topic/5941762038"},{"heading":"【WWDC22 10082】利用 Xcode 和设备上的检测工具排查卡顿","url":"https://xiaozhuanlan.com/topic/9126308457"},{"heading":"【WWDC22 10083】减少手机电池消耗","url":"https://xiaozhuanlan.com/topic/9602743158"},{"heading":"How necessary are the programming fundamentals?","url":"https://swiftrocks.com/how-necessary-are-the-programming-fundamentals","recommender":"ChengzhiHuang"},{"heading":"SF Symbol Changes in iOS 16.0","url":"https://hacknicity.medium.com/sf-symbol-changes-in-ios-16-0-70a80660ba79","recommender":"Smallfly"},{"heading":"文本布局性能提升 60%，Inline Text 技术原理与实现 | Cube 技术解读","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjE5OTI4Mw==&mid=2247494888&idx=1&sn=c358b190640934bf83f42993ac4992ac&source=41#wechat_redirect","recommender":"Leo"},{"heading":"淘宝iOS扫一扫架构升级 - 设计模式的应用","url":"https://mp.weixin.qq.com/s/v3MWjZ4AcVxzVW6HfY9IiQ","recommender":"老峰"},{"heading":"Generics in Swift explained with code examples","url":"https://www.avanderlee.com/swift/generics-constraints/","recommender":"Damien"},{"heading":"SwiftUI Grid","url":"https://sarunw.com/posts/swiftui-grid/","recommender":"Jimq"},{"heading":"How iOS 16 makes your app launch faster","url":"https://www.emergetools.com/blog/posts/iOS16LaunchTime","recommender":"JonyFang"},{"heading":"Reverse Engineering SwiftUI’s NavigationPath Codability","url":"https://www.pointfree.co/blog/posts/78-reverse-engineering-swiftui-s-navigationpath-codability","recommender":"AidenRao"},{"heading":"【WWDC22 110429】探索 iOS 相机新特性","url":"https://xiaozhuanlan.com/topic/0591234867"},{"heading":"【WWDC22 110359】Swift Package plugins 初探","url":"https://xiaozhuanlan.com/topic/7316598402"},{"heading":"【WWDC22 110338】在 Now Playing 中展示播放信息与控制播放","url":"https://xiaozhuanlan.com/topic/2819035467"},{"heading":"【WWDC22 110403】初见新框架 \"Background Assets\"","url":"https://xiaozhuanlan.com/topic/3198024567"},{"heading":"【WWDC22 10062】初见 Transferable","url":"https://xiaozhuanlan.com/topic/7965203418"},{"heading":"【WWDC22 10035】探索苹果地图新功能","url":"https://xiaozhuanlan.com/topic/0698342715"},{"heading":"【WWDC22 10052】What's New In SwiftUI","url":"https://xiaozhuanlan.com/topic/3615907284"}]},{"id":"r-208-2022-07-11","type":"report","title":"老司机 iOS 周报 #208 | 2022-07-11","issue":208,"date":"2022-07-11","year":2022,"path":"Reports/2022/#208-2022.07.11.md","url":"Reports/2022/%23208-2022.07.11.md","excerpt":"【WWDC22 10056】在 SwiftUI 中组合各种自定义布局：在本 Session 中介绍了 SwiftUI 用于编写应用程序视图布局的一些新工具。；【WWDC22 10106】游戏内存调试与优化：本文展示了 Apple 平台游戏 App 内存的计算、分配、和调优技巧。全文分四个部分： - 第一部分讲解了内存的基本概念； - 第二部分展示如何使用 Instruments 工具和 Game Memory Template 来分析游","sections":[{"heading":"【WWDC22 10056】在 SwiftUI 中组合各种自定义布局","url":"https://xiaozhuanlan.com/topic/1507368249"},{"heading":"【WWDC22 10106】游戏内存调试与优化","url":"https://xiaozhuanlan.com/topic/4258936701"},{"heading":"【WWDC22 110370】使用 LLDB 调试 Swift","url":"https://xiaozhuanlan.com/topic/4809126537"},{"heading":"【WWDC22 10122】提升 “通过 Apple 登录” 的体验","url":"https://xiaozhuanlan.com/topic/8752349016"},{"heading":"【WWDC22 10147】 创造优秀的视频播放体验","url":"https://xiaozhuanlan.com/topic/8504173629"},{"heading":"HTTP3 RFC标准正式发布，QUIC 会成为传输技术的新一代颠覆者吗？","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjE5OTI4Mw==&mid=2247494885&idx=1&sn=bb61db8b0f5f5cf3c540c6dad8070532&source=41#wechat_redirect","recommender":"莲叔"},{"heading":"Automatically update if let and guard let for Swift 5.7","url":"https://digitalbunker.dev/updating-if-guard-let-for-swift-5-7/","recommender":"张嘉夫"},{"heading":"8K HDR!｜为 Chromium 实现 HEVC 硬解 - 原理/实测指南","url":"https://mp.weixin.qq.com/s/O6lU8qTKAKBMH3Oi5H4yxg","recommender":"JonyFang"},{"heading":"Alibaba.com App瘦身实践——iOS包大小技术与ROI总结 - 掘金","url":"https://juejin.cn/post/7117074938577551368","recommender":"Barney"},{"heading":"Flutter 小技巧之 Dart 里的 List 和 Iterable 你真的搞懂了吗？","url":"https://mp.weixin.qq.com/s/GwAoMN77EVbZdo9Jya9hRA","recommender":"ChengzhiHuang"},{"heading":"干货 | 携程酒店 Flutter 性能优化实践","url":"https://mp.weixin.qq.com/s/sFF0R_wVBO6e3OSo27V1kg","recommender":"CrazyCoderShi"},{"heading":"通过汇编分析方法参数，其实很简单～","url":"https://mp.weixin.qq.com/s/7w6h3GONKXl23D4eoIAd3w","recommender":"AidenRao"},{"heading":"Flutter 小技巧之有趣的动画技巧","url":"https://mp.weixin.qq.com/s/bIuTsqg7p8F979owSpEO2Q","recommender":"EyreFree"},{"heading":"Sliver多节点和单节点分帧原理","url":"https://mp.weixin.qq.com/s/otV8FOZyH6AbPeI1EtU5CA","recommender":"极速男孩"},{"heading":"百度 APP 基于 Pipeline as Code 的持续集成实践","url":"https://mp.weixin.qq.com/s/oVkFmwFN68b6W_SkcJHKRA","recommender":"红纸"},{"heading":"React Native 中实现动态导入","url":"https://mp.weixin.qq.com/s/oKeY6DsBDarBxRzySDMzDQ","recommender":"xuyafei"},{"heading":"Reduce in Swift","url":"https://swdevnotes.com/swift/2022/reduce-in-swift/"},{"heading":"SwifRegex.com","url":"https://swiftregex.com/","recommender":"kemchenj"},{"heading":"【WWDC22 110355】了解 Swift 异步算法","url":"https://xiaozhuanlan.com/topic/8217965043"},{"heading":"【WWDC22 10043/10044/110404】App Store Connect 中的新特性及最佳实践","url":"https://xiaozhuanlan.com/topic/1502478369"},{"heading":"【WWDC22 110380】 SharePlay 中显示广告和插播内容","url":"https://xiaozhuanlan.com/topic/3149265870"},{"heading":"【WWDC22 110349/110348】Swift Playground 指北","url":"https://xiaozhuanlan.com/topic/9107542836"},{"heading":"【WWDC22 10166/10167】探索应用追踪透明化 App Tracking Transparency 与隐私标签","url":"https://xiaozhuanlan.com/topic/0934681275"},{"heading":"【WWDC22 10098】在 Safari 里使用 Web Push","url":"https://xiaozhuanlan.com/topic/0819724365"},{"heading":"【WWDC22 10133】实践项目：使用 SwiftUI 的新功能为 Apple Watch 构建出色的效率 App","url":"https://xiaozhuanlan.com/topic/2487691035"},{"heading":"【WWDC22 10018】为 macOS 应用支持「连续互通相机」","url":"https://xiaozhuanlan.com/topic/5641729830"},{"heading":"【WWDC22 10048】Safari 和 WebKit 新特性介绍","url":"https://xiaozhuanlan.com/topic/1560743928"}]},{"id":"r-207-2022-07-04","type":"report","title":"老司机 iOS 周报 #207 | 2022-07-04","issue":207,"date":"2022-07-04","year":2022,"path":"Reports/2022/#207-2022.07.04.md","url":"Reports/2022/%23207-2022.07.04.md","excerpt":"【WWDC22 10078】降低网络延迟：让你的 App 变得更快：如何让 App 变得更快，对于开发者来说是一个永恒的课题。2021 年，苹果给大家分享了许多网络延迟优化相关的理论知识，而今年，苹果在去年的基础上，又为我们带来了这一篇颇具实战指导意义的分享，从客户端侧、服务端侧、网络协议侧三个方面入手提供了一系列行之有效的建议，帮助开发者们更好；【WWDC22 110427】What's new in Xcode：本文主要从 Xcod","sections":[{"heading":"【WWDC22 10078】降低网络延迟：让你的 App 变得更快","url":"https://xiaozhuanlan.com/topic/3108247569"},{"heading":"【WWDC22 110427】What's new in Xcode","url":"https://xiaozhuanlan.com/topic/9706284531"},{"heading":"【WWDC22 110362】快速链接：提高构建和启动耗时","url":"https://xiaozhuanlan.com/topic/1509638472"},{"heading":"【WWDC22 110355】Meet Swift Async Algorithms","url":"https://xiaozhuanlan.com/topic/8217965043"},{"heading":"【WWDC22 110351】使用 Swift 并发消除数据竞争","url":"https://xiaozhuanlan.com/topic/8297064135"},{"heading":"iOS内存分析之Memory Graph","url":"https://mp.weixin.qq.com/s/siwMWiSGcCyk-CVPcNjHMw","recommender":"老驴"},{"heading":"What Apple might do with distributed computing","url":"https://rhonabwy.com/2022/06/01/what-apple-might-do-with-distributed-computing/","recommender":"Smallfly"},{"heading":"Existential any in Swift explained with code examples","url":"https://www.avanderlee.com/swift/existential-any/","recommender":"享耳先森"},{"heading":"如何持续突破性能表现？DX 性能优化策略详解","url":"https://mp.weixin.qq.com/s/E-ep8vIQpIIMCUhGGxdS0Q","recommender":"[@Barney](https"},{"heading":"使用 LLVM","url":"https://ming1016.github.io/2022/06/10/use-llvm/","recommender":"anotheren"},{"heading":"Some keyword in Swift: Opaque types explained with code examples","url":"https://www.avanderlee.com/swift/some-opaque-types/","recommender":"Damien"},{"heading":"Dutter | 前车之鉴：聊聊钉钉 Flutter 落地桌面端踩过的“坑”","url":"https://mp.weixin.qq.com/s/53pZQgDI642dWQPY2CdkiA","recommender":"老峰"},{"heading":"Flutter 渲染性能问题分析","url":"https://mp.weixin.qq.com/s/PaJs948QvupKZ0umjT2vjA","recommender":"EyreFree"},{"heading":"信息安全 | 互联网时代，如何建立信任？","url":"https://mp.weixin.qq.com/s?__biz=Mzg3MjcxNzUxOQ==&mid=2247484972&idx=1&sn=4f0d819e8ab9456bd2ee81942abb3f22&chksm=ceea4b8cf99dc29ad27798c860c9db89621d81497fb6a5d206ed0602d75cffbb1bfdbec5809a&token=2062691669&lang=zh_CN#rd"},{"heading":"Git 相关","url":null},{"heading":"【WWDC22 10074】AppKit 框架的新特性","url":"https://xiaozhuanlan.com/topic/5137426980"},{"heading":"【WWDC22 110344/10109】 Developer Mode 与 Notarization","url":"https://xiaozhuanlan.com/topic/5760498231"},{"heading":"【WWDC22 10041】Wallet 和 Apple Pay 的新功能","url":"https://xiaozhuanlan.com/topic/6245091837"},{"heading":"【WWDC22 10003】初见 WeatherKit","url":"https://xiaozhuanlan.com/topic/7104928536"},{"heading":"【WWDC22 10075】结合使用 SwiftUI 和 AppKit","url":"https://xiaozhuanlan.com/topic/4072968531"},{"heading":"【WWDC 110371】 使用 Xcode 进行多平台开发的那些事","url":"https://xiaozhuanlan.com/topic/8549720316"},{"heading":"【WWDC22 110345】 使用 Endpoint Security 保护 Mac 安全","url":"https://xiaozhuanlan.com/topic/6541789230"},{"heading":"【WWDC22 10076】 将你的 iOS 应用搬到 Mac 上","url":"https://xiaozhuanlan.com/topic/5912378064"},{"heading":"【WWDC22 10007】 IAP 新特性","url":"https://xiaozhuanlan.com/topic/3872506491"},{"heading":"【WWDC22 10155】ScreenCaptureKit：MacOS 上的高性能屏幕录制框架","url":"https://xiaozhuanlan.com/topic/0458326917","recommender":"屏幕录制一直以来都是一个桌面系统需要提供的基本能力，可以应用到很多场景，例如"},{"heading":"【WWDC22 10089】 What's new in PDFKit","url":"https://xiaozhuanlan.com/topic/9204781563"},{"heading":"【WWDC22 10120】进化你的 Core Data Schema","url":"https://xiaozhuanlan.com/topic/6074813952"},{"heading":"【WWDC22 10077】验证码的替代者—私有访问凭证","url":"https://xiaozhuanlan.com/topic/6437105829"},{"heading":"【WWDC22 10061】将多窗口引入 SwiftUI 应用","url":"https://xiaozhuanlan.com/topic/3529016874"}]},{"id":"r-206-2022-06-27","type":"report","title":"老司机 iOS 周报 #206 | 2022-06-27","issue":206,"date":"2022-06-27","year":2022,"path":"Reports/2022/#206-2022.06.27.md","url":"Reports/2022/%23206-2022.06.27.md","excerpt":"【WWDC22 10092】遇见 Passkey：苹果一向以对用户隐私的严格重视和出色的隐私保护能力而广受赞誉。passkey 是苹果在用户隐私保护与信息安全方面提出的一个完整的解决方案。本文将带你一起来了解这一方案是什么、为什么和怎么用。；【WWDC22 110357/110358】Swift Regex: 蓄谋已久的正则优化：Chris 画了有五年的大饼 Swift Regex 终于要落地啦！一种号称要超越 Perl 的字符串处理方","sections":[{"heading":"【WWDC22 10092】遇见 Passkey","url":"https://xiaozhuanlan.com/topic/8042173596"},{"heading":"【WWDC22 110357/110358】Swift Regex: 蓄谋已久的正则优化","url":"https://xiaozhuanlan.com/topic/0563284917"},{"heading":"【WWDC22 10054】SwiftUI 新导航方案","url":"https://xiaozhuanlan.com/topic/7841259603"},{"heading":"How to Start iOS Development Career","url":"https://holyswift.app/how-to-start-ios-development-career-the-5-steps-plan","recommender":"老峰"},{"heading":"逐步实现基于源码的 Swift 代码覆盖率","url":"https://mp.weixin.qq.com/s/cz5hk23XtjCWGi-rb3-cCg"},{"heading":"基于 Bazel 的 iOS Monorepo 工程实践","url":"https://mp.weixin.qq.com/s/WHmYD2X8JGfIQTMmsDG5oA","recommender":"JonyFang"},{"heading":"西瓜视频 iOS 播放器技术重构","url":"https://mp.weixin.qq.com/s/EX2WcoxxqRDSPk_xdxkIzA","recommender":"ChengzhiHuang"},{"heading":"Using the ‘some’ and ‘any’ keywords to reference generic protocols in Swift 5.7","url":"https://www.swiftbysundell.com/articles/referencing-generic-protocols-with-some-and-any-keywords/","recommender":"zvving"},{"heading":"App Store Server API 实践总结","url":"https://mp.weixin.qq.com/s/yP3jlEzN5o0EsaNoW-4mVw","recommender":"J_Knight_"},{"heading":"Announcing the Language Workgroup JUNE 15, 2022Ted KremenekTed Kremenek","url":"https://www.swift.org/blog/language-workgroup/","recommender":"含笑饮砒霜"},{"heading":"SwiftUI 状态管理系统指南","url":"https://mp.weixin.qq.com/s/gJCis1z2zY0dZTLfu7T9CQ","recommender":"EyreFree"},{"heading":"WWDC 2022 Viewing Guide","url":"https://useyourloaf.com/blog/wwdc-2022-viewing-guide/","recommender":"[@Barney](https"},{"heading":"Rendering SwiftUI views within UITableView or UICollectionView cells on iOS 16","url":"https://www.swiftbysundell.com/articles/rendering-swiftui-views-within-uitableview-or-uicollectionview/","recommender":"JimQ"},{"heading":"Google I/O Extended | Flutter 游戏和全平台正式版支持下 Flutter 的现状","url":"https://mp.weixin.qq.com/s/3fL_nYvkatqGfBMQ_sddwQ","recommender":"极速男孩"},{"heading":"wakeup in XNU","url":"http://djs66256.github.io/2021/04/03/2021-04-03-wakeup-in-XNU/","recommender":"水水"},{"heading":"What’s new in Swift 5.7","url":"https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7","recommender":"AidenRao"},{"heading":"Flutter 高延迟渲染流水线调度","url":"https://mp.weixin.qq.com/s/Iv7zogoFD38n-92Un-5Bgg","recommender":"CrazyCoderShi"},{"heading":"【WWDC22 110379】创建一个响应速度更快的媒体应用","url":"https://xiaozhuanlan.com/topic/4263197580"},{"heading":"【WWDC22 10002】利用 Virtualization 构建虚拟机，从未如此简单","url":"https://xiaozhuanlan.com/topic/4132786905"},{"heading":"【WWDC22 110341】短信过滤器原理和更新","url":"https://xiaozhuanlan.com/topic/8021693745"},{"heading":"【WWDC22 10049】探索 iOS 16 中 WKWebView 的新功能","url":"https://xiaozhuanlan.com/topic/7295803164"},{"heading":"【WWDC22 110350】Swift 并发的可视化和优化","url":"https://xiaozhuanlan.com/topic/0186237549"},{"heading":"【WWDC22 110354】Swift 新特性介绍","url":"https://xiaozhuanlan.com/topic/2498765013"},{"heading":"【WWDC22 10065】即插即用：将 Apple frameworks 添加到您的 Unity 游戏项目","url":"https://xiaozhuanlan.com/topic/2583470691"},{"heading":"【WWDC22 110336】 Screen Time API 的新特性","url":"https://xiaozhuanlan.com/topic/7169340528"},{"heading":"【WWDC22 10115/10119】优化 CoreData & CloudKit 实现","url":"https://xiaozhuanlan.com/topic/5821964073"},{"heading":"【WWDC22 10040】 探索 In-App Purchase 集成和迁移","url":"https://xiaozhuanlan.com/topic/8024563197"}]},{"id":"r-205-2022-06-20","type":"report","title":"老司机 iOS 周报 #205 | 2022-06-20","issue":205,"date":"2022-06-20","year":2022,"path":"Reports/2022/#205-2022.06.20.md","url":"Reports/2022/%23205-2022.06.20.md","excerpt":"【WWDC22 10127/10131】使用 RoomPlan 扫描创建参数化三维室内场景：本文将主要聚焦于 Apple 的 AR/MR 新 API：RoomPlan 。全文共分为 3 个部分：；【WWDC22 10025】VisionKit 的机器视觉方案，更智能的捕获文本与条码：本文将与大家一同认识 VisionKit 中的 。通过简单的 Swift API 来实时的捕获视频源中的文本、条码。将展示如何控制程序捕获的内容，以及如何启","sections":[{"heading":"【WWDC22 10127/10131】使用 RoomPlan 扫描创建参数化三维室内场景","url":"https://xiaozhuanlan.com/topic/8127504396"},{"heading":"【WWDC22 10025】VisionKit 的机器视觉方案，更智能的捕获文本与条码","url":"https://xiaozhuanlan.com/topic/8205316479"},{"heading":"WWDC22 讲座集锦","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"聊聊 libffi 的调用流程","url":"https://www.jianshu.com/p/4644b1584a1f","recommender":"[@xuyafei](https"},{"heading":"从响应式编程到 Combine 实践","url":"https://mp.weixin.qq.com/s/b_q6R64xkq8Rl9EiIde4MA","recommender":"zvving"},{"heading":"Swift 中的幻象类型(phantom types)","url":"https://mp.weixin.qq.com/s/HLWu24LrfqSfbhd9x6Q_ag","recommender":"享耳先森"},{"heading":"探秘 AutoreleasePool 实现原理","url":"https://mp.weixin.qq.com/s/fcS6aiddSjeQSfjMY-8Oow","recommender":"含笑饮砒霜"},{"heading":"节日献礼：Flutter图片库重磅开源","url":"https://mp.weixin.qq.com/s/WnpDbDvEVNMj_96ulnuWkQ","recommender":"CrazyCoderShi"},{"heading":"Auto-generating, Auto-hosting, and Auto-updating DocC Documentation","url":"https://blog.swiftpackageindex.com/posts/auto-generating-auto-hosting-and-auto-updating-docc-documentation/","recommender":"四娘"},{"heading":"ViewBuilder 研究","url":"https://mp.weixin.qq.com/s/4TwfyhWHVjm3Dv-Vz7MYvg","recommender":"AidenRao"}]},{"id":"r-204-2022-05-30","type":"report","title":"老司机 iOS 周报 #204 | 2022-05-30","issue":204,"date":"2022-05-30","year":2022,"path":"Reports/2022/#204-2022.05.30.md","url":"Reports/2022/%23204-2022.05.30.md","excerpt":"帐户删除审核条例将在 6 月 30 日开始生效：从 2022 年 6 月 30 日开始，支持创建账户的 App 必须同时支持账户删除功能，这项要求已经加入到了审核条例（《App Store 审核指南》第 5.1.1(v)）当中，具体详见原文链接，各位开发者务必提前做好准备。；码上就位 - WWDC 开发者活动：WWDC 开发者活动陆续在官网放出，今年依旧会和往年一样有 Keynote、Sessions、Labs、Digital Loun","sections":[{"heading":"帐户删除审核条例将在 6 月 30 日开始生效","url":"https://developer.apple.com/cn/news/?id=12m75xbj"},{"heading":"码上就位 - WWDC 开发者活动","url":"https://developer.apple.com/cn/news/?id=qnx0slc5"},{"heading":"“Stop” using state management libraries","url":"https://medium.com/flutter-community/stop-using-state-management-libraries-48a81ed7979d","recommender":"CrazyCoderShi"},{"heading":"【Hummer Flutter引擎】让Flutter绽放得更美 - 包体积优化之道","url":"https://mp.weixin.qq.com/s/OnAnOAX1K5TyHbuUjV3LEg","recommender":"极速男孩"},{"heading":"主流图片加载库所使用的预解码究竟干了什么","url":"https://dreampiggy.com/2019/01/18/%E4%B8%BB%E6%B5%81%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93%E6%89%80%E4%BD%BF%E7%94%A8%E7%9A%84%E9%A2%84%E8%A7%A3%E7%A0%81%E7%A9%B6%E7%AB%9F%E5%B9%B2%E4%BA%86%E4%BB%80%E4%B9%88/","recommender":"J_Knight_"},{"heading":"YYJSON 0.5.0 Released","url":"https://github.com/ibireme/yyjson/releases/tag/0.5.0","recommender":"[@享耳先森](https"},{"heading":"unxip: A fast Xcode unarchiver","url":"https://github.com/saagarjha/unxip"},{"heading":"Fig CLI","url":"https://fig.io","recommender":"Jimq"}]},{"id":"r-203-2022-05-23","type":"report","title":"老司机 iOS 周报 #203 | 2022-05-23","issue":203,"date":"2022-05-23","year":2022,"path":"Reports/2022/#203-2022.05.23.md","url":"Reports/2022/%23203-2022.05.23.md","excerpt":"《WWDC22 内参》作者招募 &《WWDC21 内参》免费领取：《WWDC22 内参》作者招募工作正式开始，请感兴趣的朋友点击上方链接参与报名，报名截止时间为 5 月 30 号。；设计高效的 UI 测试：2022 年 5 月 31 日（报名截止 5 月 16 日）；Dutter | 钉钉 Flutter 跨四端方案设计与技术实践：Dutter 即 DingTalk Flutter，是钉钉内基于 Flutter 构建的跨四端研发框架，本","sections":[{"heading":"《WWDC22 内参》作者招募 &《WWDC21 内参》免费领取","url":"https://mp.weixin.qq.com/s/W-15I-lTAPKzI6USw3nuuQ"},{"heading":"设计高效的 UI 测试","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"Dutter | 钉钉 Flutter 跨四端方案设计与技术实践","url":"https://mp.weixin.qq.com/s/JyfwrfsWplHhkColYLhBpg?from=singlemessage&isappinstalled=0&scene=1&clicktime=1652443237&enterid=1652443237","recommender":"老峰"},{"heading":"Scripting in Swift: Git Hooks","url":"https://www.polpiella.dev/scripting-in-swift-git-hooks","recommender":"享耳先森"},{"heading":"京东 App MCube 动态化实践","url":"https://mp.weixin.qq.com/s/kjYRo2OcmWCoUBTdsAKrCw","recommender":"xuyafei"},{"heading":"Euclid: a Swift library for creating and manipulating 3D geometry","url":"https://github.com/nicklockwood/Euclid#example","recommender":"莲叔"},{"heading":"Runestone","url":"https://github.com/simonbs/Runestone"}]},{"id":"r-202-2022-05-16","type":"report","title":"老司机 iOS 周报 #202 | 2022-05-16","issue":202,"date":"2022-05-16","year":2022,"path":"Reports/2022/#202-2022.05.16.md","url":"Reports/2022/%23202-2022.05.16.md","excerpt":"Flutter 3.0 发布：前两天的 Google I/O 上 Flutter 3.0 已经发布，主要包括 Flutter 对 macOS 和 Linux 正式版支持、进一步的性能改进、手机端和 Web 端相关的更新等等。此外还有关于减少对旧版本 Windows 的支持，以及一些 breaking chan；通过服务器处理 App 内购买和提供用户支持：2022 年 5 月 17 日（报名截止 5 月 16 日）；音频类 App 专场","sections":[{"heading":"Flutter 3.0 发布","url":"https://mp.weixin.qq.com/s/7glBeUReiNytWqsNLhi7sA","recommender":"CrazyCoderShi"},{"heading":"通过服务器处理 App 内购买和提供用户支持","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"音频类 App 专场：为你的音频类 App 提升体验","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"西瓜视频 iOS Voice Over 无障碍适配实践","url":"https://mp.weixin.qq.com/s/cVEPN28XOBs6XNy0PDGudg","recommender":"ChengzhiHuang"},{"heading":"MachO 文件编译链接常见的三大认知误区","url":"https://mp.weixin.qq.com/s/XpMcSzEayM-cBT4-jRr9kA","recommender":"AidenRao"},{"heading":"Swift 首次调试断点慢的问题解法","url":"https://mp.weixin.qq.com/s/n6cRVhr5Sw1CSOqAYWiBRw","recommender":"享耳先森"},{"heading":"Detecting Xcode Previews","url":"https://www.createwithswift.com/detecting-xcode-previews/","recommender":"Damien"},{"heading":"Jenga - 基于 Swift ResultBuilder 优雅的构建 UITableView","url":"https://github.com/fanglinwei/Jenga","recommender":"老峰"},{"heading":"Flutter 状态管理框架 Provider 和 Get 分析","url":"https://mp.weixin.qq.com/s/iLSjr-HE4VC1kTdjI2bFNQ","recommender":"极速男孩"},{"heading":"Flutter 深入探索混合开发的技术演进","url":"https://mp.weixin.qq.com/s/JjlCyCOC4gL7hx3UNs7ONQ","recommender":"邦Ben"},{"heading":"深入理解 OC/C++ 闭包","url":"https://mp.weixin.qq.com/s/NEvtm_yBMghyP_WTUATy8g","recommender":"xuyafei"},{"heading":"老司机技术沙龙","url":"https://github.com/SwiftOldDriver/Salon"}]},{"id":"r-201-2022-05-09","type":"report","title":"老司机 iOS 周报 #201 | 2022-05-09","issue":201,"date":"2022-05-09","year":2022,"path":"Reports/2022/#201-2022.05.09.md","url":"Reports/2022/%23201-2022.05.09.md","excerpt":"阐明 App Store 改善流程的标准和新的限期延长：过去几年，苹果为了保证贯彻在安全和隐私方面的最新改革，陆续下架了 280 万个 App。同时还强调了，在过去三年内从未更新且未达到最低下载量 (即该 App 在连续 12 个月内完全没有或只有极低的下载量) 时，其开发者将会收到电子邮件，告知该 App 已被识别并可能从 App ；SSWG 2021 Annual Update：Swift 服务端工作组发布了 2021 年的工作总结","sections":[{"heading":"阐明 App Store 改善流程的标准和新的限期延长","url":"https://developer.apple.com/cn/news/?id=gi6npkmf"},{"heading":"SSWG 2021 Annual Update","url":"https://www.swift.org/blog/sswg-update/"},{"heading":"电商购物类 App 专场：为你的电商购物 App 提升体验","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"案例学习：为 iPad 设计卓越的 App","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"iOS StoreKit 2 新特性解析","url":"https://mp.weixin.qq.com/s/RrkK5M3qYTs2cMi7sWTqrA","recommender":"ChengzhiHuang"},{"heading":"Mutex vs Semaphore: What’s the Difference?","url":"https://www.guru99.com/mutex-vs-semaphore.html","recommender":"Damien"},{"heading":"淘宝小程序体验优化：数据分析和优化实践","url":"https://mp.weixin.qq.com/s/eIeOncrNd_h8-7E8fg4bKg","recommender":"Barney"},{"heading":"Flutter PlatformView 优化","url":"https://mp.weixin.qq.com/s/gJXk56yJ5oJREHCUbsdhXg","recommender":"邦Ben"},{"heading":"AVPlayer 播放器对远端缺失 Content-Range 功能的本地支持和处理","url":"https://bbs.noahark.io/t/topic/312","recommender":"JonyFang"},{"heading":"Binary targets in modern Swift packages","url":"https://www.polpiella.dev/binary-targets-in-modern-swift-packages","recommender":"AidenRao"},{"heading":"Flutter 新一代图形渲染器 Impeller","url":"https://mp.weixin.qq.com/s/PLvlSt3tlX6AjufDm0XVMA","recommender":"CrazyCoderShi"},{"heading":"Locking in WebKit","url":"https://webkit.org/blog/6161/locking-in-webkit/","recommender":"水水"},{"heading":"macOS 进化史","url":"https://mp.weixin.qq.com/s/7ozZfNQTNK_Ibpfv1Wo7-g","recommender":"红纸"},{"heading":"Use Dependency Injection to Unit Test a ViewModel in Swift","url":"https://swdevnotes.com/swift/2022/use-dependency-injection-to-unit-test-a-viewmodel-in-swift/","recommender":"含笑饮砒霜"},{"heading":"GRDBQuery","url":"https://github.com/groue/GRDBQuery","recommender":"anotheren"}]},{"id":"r-200-2022-04-25","type":"report","title":"老司机 iOS 周报 #200 | 2022-04-25","issue":200,"date":"2022-04-25","year":2022,"path":"Reports/2022/#200-2022.04.25.md","url":"Reports/2022/%23200-2022.04.25.md","excerpt":"「T Chat ｜ 我在大厂做研发」系列直播首发：作为开发者，在我们的职业生涯中，可能会无数次问自己或者被问到这两个问题：；T 技术沙龙移动端技术实践（上海场）文字稿整理完毕：基于 C++ 的 Android 协程设计 - 张涛 - 自制渲染引擎及在客户端应用 - 王宇 - MVI 范式在 Jetpack Compose 上的应用；iOS | 图解iOS签名背后的原理：作者带领读者实操申请证书的全流程，并介绍了 iOS 开发证书的申请、","sections":[{"heading":"「T Chat ｜ 我在大厂做研发」系列直播首发","url":"https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247494102&idx=1&sn=f29dfb12cffa840ee46169409002379a&chksm=eaa176ddddd6ffcbc4050f38f7fc7fa7dc4cd4bca9a59d74c97abd4a6d15ad6ce4b3076cf568#rd"},{"heading":"T 技术沙龙移动端技术实践（上海场）文字稿整理完毕","url":"https://mp.weixin.qq.com/s/gjU6ejMRyG7Cqfr9271qsA"},{"heading":"iOS | 图解iOS签名背后的原理","url":"https://mp.weixin.qq.com/s?__biz=Mzg3MjcxNzUxOQ==&mid=2247484901&idx=1&sn=83fcf34b5b4b7a63c17742efa3ee20a8&chksm=ceea4845f99dc1537003bdebd2a93d09c9b413ad0cc8c5108cd93d5b84e63e65a30ce0f6c019&token=996185752&lang=zh_CN#rd","recommender":"ChengzhiHuang"},{"heading":"系统困境与软件复杂度，为什么我们的系统会如此复杂","url":"https://mp.weixin.qq.com/s/3PSFMt9cQ1ZCoYQrdOCM6Q","recommender":"xuyafei"},{"heading":"音视频工程示例 AVDemo 10、11、12、13","url":"https://mp.weixin.qq.com/s/4Ua9PZllWRLYF79hwsH0DQ","recommender":"JonyFang"},{"heading":"视频下载加速，2.5倍优化","url":"https://mp.weixin.qq.com/s/GDNBMmhaRuZH5BesjRdFfg","recommender":"极速男孩"},{"heading":"快手 iOS 启动优化实践","url":"https://mp.weixin.qq.com/s/ph7kFRKYWP1bqbNtTK4z3Q","recommender":"Leo"},{"heading":"货拉拉用户端体验优化--启动优化篇","url":"https://juejin.cn/post/7087773731061235743","recommender":"红纸"},{"heading":"Flutter 音视频开发新思路","url":"https://mp.weixin.qq.com/s/ZpHfkz8CQmPhKY4--WYTWw","recommender":"莲叔"},{"heading":"SwiftUI performance tips","url":"https://martinmitrevski.com/2022/04/14/swiftui-performance-tips/","recommender":"zvving"},{"heading":"iOS性能优化——离屏渲染的分析探究","url":"https://mp.weixin.qq.com/s/grfRkNI90bUUCWR0l7TjNw","recommender":"Damien"},{"heading":"iOS制作iBeacon相关SDK，在程序杀死后无法收到本地通知 - 掘金","url":"https://juejin.cn/post/7088597024781647909","recommender":"Barney"}]},{"id":"r-199-2022-04-18","type":"report","title":"老司机 iOS 周报 #199 | 2022-04-18","issue":199,"date":"2022-04-18","year":2022,"path":"Reports/2022/#199-2022.04.18.md","url":"Reports/2022/%23199-2022.04.18.md","excerpt":"“订阅优惠”的工程实践：2022 年 4 月 21 日（报名截止 4 月 20 日）；加快您的测试过程：2022 年 4 月 19 日（报名截止 4 月 18 日）；Design Patterns 的实战应用记录：2016年的时候最火的文章莫过于一些设计模式类的分享。当时各种 MVP，MVC 等等的讨论火爆整个移动开发圈。只不过这几年，很难再见到有这类的文章了。这篇文章是作者自荐，记录的是作者完成一个对其他第三方库的封装的过程。对于刚接","sections":[{"heading":"“订阅优惠”的工程实践","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"加快您的测试过程","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"Design Patterns 的实战应用记录","url":"https://medium.com/p/78507a8de6a5","recommender":"老驴"},{"heading":"Lookin 原理及 5 个开发难点","url":"https://mp.weixin.qq.com/s/DL28y2qHkuDv4W_zLUbKcg","recommender":"Damonwong"},{"heading":"Xcode Cloud: Feedback from leboncoin","url":"https://medium.com/leboncoin-engineering-blog/xcode-cloud-feedback-from-leboncoin-82991326faa0","recommender":"Damien"},{"heading":"音视频工程示例 AVDemo 7、8、9","url":"https://mp.weixin.qq.com/s/CJAhkk9BmhMOXgD2pl_rjg","recommender":"JonyFang"},{"heading":"得物 App H5 秒开优化实战","url":"https://mp.weixin.qq.com/s/23ZFPK4CaCkinwpZ3SG9Rw","recommender":"J_Knight_"},{"heading":"Introducing Swift Async Algorithms","url":"https://www.swift.org/blog/swift-async-algorithms/","recommender":"莲叔"},{"heading":"iOS SIGKILL 简单介绍","url":"https://juejin.cn/post/7081995513700024327","recommender":"xiaofei86"},{"heading":"Adding Custom Shortcuts To Xcode","url":"https://digitalbunker.dev/toggling-slow-animations-again/","recommender":"极速男孩"},{"heading":"终端新玩法：“零代码”的剧本式引导","url":"https://mp.weixin.qq.com/s/HZDcvHAtIgJfgD2mMGaHzA","recommender":"AidenRao"},{"heading":"Xcode13 “消失”的 Info.plist 文件","url":"https://mp.weixin.qq.com/s/mgGjBb9dt714c117xrYGfQ","recommender":"Barney"},{"heading":"Flutter 代码生成技术 APT 与 AOP 适用场景与对比","url":"https://mp.weixin.qq.com/s/eWG8HiaJFiHd3jxSnnZ4aQ","recommender":"Damien"},{"heading":"精确定位页面滑动帧率瓶颈及优化参考","url":"https://juejin.cn/post/7077812846217658381","recommender":"Leo"},{"heading":"PROTOCOL & GENERIC IN SWIFT","url":"http://nonomori.bitcron.com/post/protocolandgenericinswift/readme","recommender":"zvving"},{"heading":"Type placeholders in Swift","url":"https://www.swiftbysundell.com/articles/type-placeholders-in-swift/","recommender":"anotheren"},{"heading":"构建顺滑自然的 Flutter 页面","url":"https://mp.weixin.qq.com/s/6FLMcE67BCbXvnbFSRgHFg","recommender":"CrazyCoderShi"},{"heading":"XcodePatch","url":"https://github.com/unixzii/XcodePatch","recommender":"ChengzhiHuang"},{"heading":"Xcode13 Tips：构建系统","url":"https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-13_3-release-notes#Build-System","recommender":"红纸"},{"heading":"xcframework-maker","url":"https://github.com/darrarski/xcframework-maker","recommender":"红纸"},{"heading":"CodeEdit","url":"https://github.com/CodeEditApp/CodeEdit","recommender":"水水"},{"heading":"[上海/北京/杭州/深圳] 字节跳动音乐团队 - 汽水音乐 - iOS/Android 开发","url":null},{"heading":"其他","url":null}]},{"id":"r-198-2022-04-11","type":"report","title":"老司机 iOS 周报 #198 | 2022-04-11","issue":198,"date":"2022-04-11","year":2022,"path":"Reports/2022/#198-2022.04.11.md","url":"Reports/2022/%23198-2022.04.11.md","excerpt":"Call to Code：苹果将在今年 6 月 6 日举办一年一度的 WWDC 全球开发者大会，今年的大会主题是「Call to Code（召唤编码侠）」，依旧采用在线形式举行，会给大家带来各种最新技术的展示。今年，老司机依旧会牵头组织 「WWDC 内参」活动，想参与的可以添加 iTDriverr 了解细；“阅读器”app 分发的更新：去年，Apple 宣布了 2022 年初在 App Store 上将进行的更新，该更新将允许“阅读器”","sections":[{"heading":"Call to Code","url":"https://developer.apple.com/wwdc22/"},{"heading":"“阅读器”app 分发的更新","url":"https://developer.apple.com/cn/news/?id=grjqafts"},{"heading":"降低 App 的卡顿率","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"Introduction to Xcode Frame Debug - A Sherlock Holmes Adventure","url":"https://holyswift.app/introduction-to-xcode-frame-debug-a-sherlock-holmes-adventure","recommender":"Smallfly"},{"heading":"干货 | Flutter在携程复杂业务的高性能之旅","url":"https://mp.weixin.qq.com/s/QgPXNpdU2mlAb6tlcsm_eQ","recommender":"CrazyCoderShi"},{"heading":"Airbnb’s Page Performance Score on iOS | by Nicholas Miller | The Airbnb Tech Blog | Medium","url":"https://medium.com/airbnb-engineering/airbnbs-page-performance-score-on-ios-36d5f200bc73","recommender":"Barney"},{"heading":"FormatStyle AttributedString Output","url":"https://ampersandsoftworks.com/posts/formatstyle/style-deep-dives/attributed-strings/","recommender":"anotheren"},{"heading":"iOS 15.4 12小时制 时间格式转换崩溃 - 掘金","url":"https://juejin.cn/post/7077493937383948295","recommender":"Barney"},{"heading":"Flutter 代码生成 source_gen 使用与原理分析","url":"https://mp.weixin.qq.com/s/lrEzYdbafrqfDVFQl2ebRQ","recommender":"邦Ben"},{"heading":"Flutter 滑动体验对齐原生 - 滑动曲线篇","url":"https://mp.weixin.qq.com/s/aqXdYYEArhEj6ikqg2oX9g","recommender":"ChengzhiHuang"},{"heading":"Optimization in Swift","url":null},{"heading":"Swift 生成原生二维码","url":"https://digitalbunker.dev/native-barcode-qr-code-generation-in-swift/","recommender":"AidenRao"},{"heading":"Weak self, a story about memory management and closure in Swift","url":"https://benoitpasquier.com/weak-self-story-memory-management-closure-swift/","recommender":"kemchenj"},{"heading":"Swift.org Website is Now Open Source","url":"https://www.swift.org/blog/website-open-source/"},{"heading":"Consistent Swift style in Xcode with SwiftLint","url":"https://swdevnotes.com/swift/2022/consistent-swift-style-in-xcode-with-swiftlint/","recommender":"老峰"},{"heading":"理解 Swift 中的指针","url":"https://mp.weixin.qq.com/s/4O5RZCiR9-kUOHJ5SdE9jg","recommender":"AidenRao"},{"heading":"短视频编辑中的AVFoundation框架","url":"https://juejin.cn/post/7077870149239308324","recommender":"JonyFang"},{"heading":"音视频工程示例专栏","url":"https://mp.weixin.qq.com/mp/appmsgalbum?"},{"heading":"Hot Reloading in Swift","url":"https://merowing.info/2022/04/hot-reloading-in-swift/","recommender":"zvving"},{"heading":"fatbobman/SwiftUIOverlayContainer","url":"https://github.com/fatbobman/SwiftUIOverlayContainer","recommender":"JonyFang"},{"heading":"初见 TextKit 2","url":"https://mp.weixin.qq.com/s/vZ74jNgItabOB-TsaQn6Uw","recommender":"Damien"},{"heading":"IAP 用户退款与客诉处理优化","url":"https://mp.weixin.qq.com/s/MtytymgkcP3_oAH7JyI1og","recommender":"SeaHub"},{"heading":"IAP 后台通信优化与实践","url":"https://mp.weixin.qq.com/s/dWsRKRJsYMRl0GX_36T-kg","recommender":"SeaHub"}]},{"id":"r-197-2022-03-28","type":"report","title":"老司机 iOS 周报 #197 | 2022-03-28","issue":197,"date":"2022-03-28","year":2022,"path":"Reports/2022/#197-2022.03.28.md","url":"Reports/2022/%23197-2022.03.28.md","excerpt":"Swift bugs are moving to GitHub Issues and we need your help!：Swift 的 issue 管理将要从 JIRA 转移到 Github，计划全部迁移过程在今年的4月28日结束。在这之前，已经在 JIRA 上建立的 issue 会被完全复制到 Github 的 issue 列表中，作为一个新的 issue。以后 JIRA 也不再支持新的 iss；在苹果加速器活动做的 SwiftU","sections":[{"heading":"Swift bugs are moving to GitHub Issues and we need your help!","url":"https://forums.swift.org/t/swift-bugs-are-moving-to-github-issues-and-we-need-your-help/56125","recommender":"J_Knight_"},{"heading":"在苹果加速器活动做的 SwiftUI 开发分享","url":"https://mp.weixin.qq.com/s/vni4zrbIWqvX7vZ9WuX2xw"},{"heading":"Abstract types and methods in Swift","url":"https://www.swiftbysundell.com/articles/abstract-types-and-methods/","recommender":"ChengzhiHuang"},{"heading":"内存优化: 纹理压缩技术","url":"https://mp.weixin.qq.com/s/V7sK1WwQ4D3LikK2AHgrZQ","recommender":"老驴"},{"heading":"AnyObject, Any, and any: When to use which?","url":"https://www.avanderlee.com/swift/anyobject-any/","recommender":"享耳先森"},{"heading":"Hummer 引擎优化系列 - 大批干货来袭预警","url":"https://mp.weixin.qq.com/s/esYrzI1N_AsZPjJXZxnSdQ","recommender":"CrazyCoderShi"},{"heading":"Flutter 比 React Native 更好吗？","url":"https://mp.weixin.qq.com/s/DozzpgKxvXtgBG1-tYjboQ","recommender":"xiaofei86"},{"heading":"Creating Airbnb’s Page Performance Score | by Andrew Scheuermann | The Airbnb Tech Blog | Medium","url":"https://medium.com/airbnb-engineering/creating-airbnbs-page-performance-score-5f664be0936","recommender":"[@Barney](https"},{"heading":"自动拦截 50% crash，字节自研 Fastbot 如何助力今日头条稳定性测试","url":"https://mp.weixin.qq.com/s/WOFf5Pj9zEKhqbRtzR95Gw","recommender":"含笑饮砒霜"},{"heading":"为你的 App 减少网络延迟","url":"https://mp.weixin.qq.com/s/F6Yfbqio50OyAzCntNEmXg","recommender":"lmh"},{"heading":"Swift 中的 ARC 机制: 从基础到进阶","url":"https://mp.weixin.qq.com/s/ZJ3gVI-jzDcKpRKa0IMi0A","recommender":"刘夏"},{"heading":"swift-docc-plugin","url":"https://github.com/apple/swift-docc-plugin","recommender":"kemchenj"},{"heading":"[上海] 谷歌 - iOS 开发 - 智能家居","url":null},{"heading":"其他","url":null}]},{"id":"r-196-2022-03-21","type":"report","title":"老司机 iOS 周报 #196 | 2022-03-21","issue":196,"date":"2022-03-21","year":2022,"path":"Reports/2022/#196-2022.03.21.md","url":"Reports/2022/%23196-2022.03.21.md","excerpt":"4 月 25 日开始，提交到 App Store 的 app 都必须使用 Xcode 13 构建：从 2022 年 4 月 25 日开始，所有提交到 App Store 的 iOS、iPadOS 和 watchOS app 都必须使用 Xcode 13 构建。Xcode 13 已包含 iOS 15、iPadOS 15 和 watchOS 8 的 SDK。；使用 SwiftUI 打造卓越体验：2022 年 3 月 24 日- 25 日(报","sections":[{"heading":"4 月 25 日开始，提交到 App Store 的 app 都必须使用 Xcode 13 构建","url":"https://developer.apple.com/cn/news/?id=2t1chhp3"},{"heading":"使用 SwiftUI 打造卓越体验","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"Tips for getting the most out of DocC","url":"https://rhonabwy.com/2022/02/10/tips-for-getting-the-most-out-of-docc/","recommender":"四娘"},{"heading":"Swift进阶","url":"https://juejin.cn/column/7069654800002252808","recommender":"老峰"},{"heading":"All Thumbs, Why Reach Navigation Should Replace the Navbar in iOS Design","url":"https://medium.com/tall-west/lets-ditch-the-nav-bar-3692cb17cc67","recommender":"ChengzhiHuang"},{"heading":"iOS代码覆盖率-增量覆盖率自动化实践","url":"https://juejin.cn/post/7049973143007395877","recommender":"Damien"},{"heading":"iOS番外-搞点音乐玩玩","url":"https://juejin.cn/post/7075638987712364580","recommender":"zvving"},{"heading":"Better performance with canvas in SwiftUI","url":"https://swdevnotes.com/swift/2022/better-performance-with-canvas-in-swiftui/","recommender":"CrazyCoderShi"},{"heading":"音视频工程示例专栏","url":"https://mp.weixin.qq.com/mp/appmsgalbum?"},{"heading":"Writing testable code when using SwiftUI","url":"https://swiftbysundell.com/articles/writing-testable-code-when-using-swiftui/","recommender":"JimQ"},{"heading":"iOS15 动态链接 fixup chain 原理详解","url":"https://mp.weixin.qq.com/s/k_RI2in_Q5hwT33KWig34A","recommender":"Leo"},{"heading":"SafeDecoder","url":"https://github.com/GodL/SafeDecoder"},{"heading":"[北京、上海、杭州、深圳] 抖音 - iOS 开发 - 研发效能方向","url":null},{"heading":"其他","url":null}]},{"id":"r-195-2022-03-14","type":"report","title":"老司机 iOS 周报 #195 | 2022-03-14","issue":195,"date":"2022-03-14","year":2022,"path":"Reports/2022/#195-2022.03.14.md","url":"Reports/2022/%23195-2022.03.14.md","excerpt":"T 技术沙龙移动端技术实践（上海场）圆满结束：2022 年 2 月 26 日，由老司机技术周报与 T 技术沙龙联合主办的移动端技术实践（上海场）在上海圆满落幕。此次技术沙龙邀请到了来自澳洲 REA Group 的 Jake Lin、“开源实验室”博主张涛、前阿里技术专家王宇分别以《MVI 模式在 Jetpack Compos；使用 SwiftUI 打造卓越体验：2022 年 3 月 24 日- 25 日(报名截止 2022 年 3 月 ","sections":[{"heading":"T 技术沙龙移动端技术实践（上海场）圆满结束","url":"https://mp.weixin.qq.com/s/gjU6ejMRyG7Cqfr9271qsA"},{"heading":"使用 SwiftUI 打造卓越体验","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"What’s new in Swift 5.6?","url":"https://www.hackingwithswift.com/articles/247/whats-new-in-swift-5-6","recommender":"Smallfly"},{"heading":"Easier Code Review With Pre-Commit Hooks","url":"https://digitalbunker.dev/supercharging-git-with-pre-commit-hooks/","recommender":"ChengzhiHuang"},{"heading":"快影 iOS 端如何实现 OOM 率下降 80%+","url":"https://mp.weixin.qq.com/s/IvATFGU_bOph-WX5ZYLYew","recommender":"Leo"},{"heading":"iOS 高刷屏监控 + 优化：从理论到实践全面解析","url":"https://mp.weixin.qq.com/s/gMxTq0_nmE-xW7GA3pkBJg","recommender":"[@Barney](https"},{"heading":"如何让云音乐 iOS 包体积减少 87MB","url":"https://mp.weixin.qq.com/s/GTbhvzMA-W0ANlars7mKog","recommender":"水水"},{"heading":"让工程师拥有一台“超级”计算机——字节客户端编译加速方案","url":"https://mp.weixin.qq.com/s/0nU5DHX0GnEidoCtlCOaOg","recommender":"红纸"},{"heading":"本地生活端智能架构设计与技术探索","url":"https://mp.weixin.qq.com/s/vrHNhik_ijqs5KE_0YRI1A","recommender":"J_Knight_"},{"heading":"Native Network Monitoring In Swift","url":"https://digitalbunker.dev/native-network-monitoring-in-swift/","recommender":"享耳先森"},{"heading":"通过断点技巧让调试更高效","url":"https://mp.weixin.qq.com/s/kv2dfh6L06RQghwkQupi1w","recommender":"PerTerbin"},{"heading":"使用 Clang 静态分析器尽早发现 Bug","url":"https://mp.weixin.qq.com/s/oGqTGgciaFIgMIKH96Ccng","recommender":"Sean"}]},{"id":"r-194-2022-03-07","type":"report","title":"老司机 iOS 周报 #194 | 2022-03-07","issue":194,"date":"2022-03-07","year":2022,"path":"Reports/2022/#194-2022.03.07.md","url":"Reports/2022/%23194-2022.03.07.md","excerpt":"Apple Park 传送门下周开启：Apple Park 传送门定时开启，北京时间 3 月 9 日凌晨 2 点，欢迎准时来 Apple 官网看 Apple 特别活动直播，还有同步中文字幕可以开启。；探索物理空间音频引擎和游戏手柄：2022 年 3 月 10 日(报名截止 2022 年 3 月 9 日）；音视频工程示例专栏：第二篇 iOS 音频编码：采集音频数据并编码存储为 AAC 文件","sections":[{"heading":"Apple Park 传送门下周开启","url":"https://mp.weixin.qq.com/s/9gsgkR6QW5o37ov4SltPmQ"},{"heading":"探索物理空间音频引擎和游戏手柄","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"音视频工程示例专栏","url":"https://mp.weixin.qq.com/mp/appmsgalbum?"},{"heading":"探索 iOS 编码对包大小的影响","url":"https://mp.weixin.qq.com/s/3Z_IFBpjwDTrB6ynu2bKcQ","recommender":"Smallfly"},{"heading":"Publishing DocC Documentation as a Static Website on GitHub Pages","url":"https://www.createwithswift.com/publishing-docc-documention-as-a-static-website-on-github-pages/","recommender":"kemchenj"},{"heading":"注解排列组合出启动任务 | ksp - 掘金","url":"https://juejin.cn/post/7070887538444992526?share_token=7592be2d-eb07-4dd9-94ad-185665479303","recommender":"Barney"},{"heading":"iOS 自动化测试驱动工具探索","url":"https://mp.weixin.qq.com/s/8bq-Y0rrV9Pw93e8IQoUaQ","recommender":"ChengzhiHuang"},{"heading":"如何在 macOS Monterey 中成功编译 objc4-838 源码","url":"https://juejin.cn/post/7068539803318353928","recommender":"Damien"},{"heading":"Combining protocols in Swift","url":"https://www.swiftbysundell.com/articles/combining-protocols-in-swift/","recommender":"anotheren"},{"heading":"Flutter 图片库高燃新登场","url":"https://mp.weixin.qq.com/s/irsf9550JcHrsd5l-V8BbQ","recommender":"CrazyCoderShi"},{"heading":"SwiftUIFlux","url":"https://github.com/Dimillian/SwiftUIFlux","recommender":"老峰"},{"heading":"Satin - A 3D Graphics Framework built on Apple's Metal","url":"https://github.com/Hi-Rez/Satin","recommender":"老驴"},{"heading":"南京、上海、深圳 - 华泰证券 - 招聘 iOS/Android 高级、资深工程师","url":null},{"heading":"杭州 - 淘宝 - 终端平台技术部 - 招聘 iOS/Android","url":null},{"heading":"其他","url":null,"recommender":"如果你想**找工作**，点这里"}]},{"id":"r-193-2022-02-28","type":"report","title":"老司机 iOS 周报 #193 | 2022-02-28","issue":193,"date":"2022-02-28","year":2022,"path":"Reports/2022/#193-2022.02.28.md","url":"Reports/2022/%23193-2022.02.28.md","excerpt":"【StoreKit2 JWS 签名验证】Code-Level Support 下的 X.509 证书链验证之旅：本文提供了通过 PHP 实现服务端校验 JWS 票据真实性的具体实现代码，并附上了与苹果 PKI 团队的邮件交流记录，也很有意思： ~~beg you~~ 以及加上代码注释以明确问题的理解一致等。苹果根证书下载地址。；iOS 逆向工具：逆向做的好，码农下班早丨音视频工具：App 逆向工程是做竞品分析的常用方法，本文对 iOS ","sections":[{"heading":"【StoreKit2 JWS 签名验证】Code-Level Support 下的 X.509 证书链验证之旅","url":"https://juejin.cn/post/7039622474274701348#heading-14","recommender":"ChengzhiHuang"},{"heading":"iOS 逆向工具：逆向做的好，码农下班早丨音视频工具","url":"https://mp.weixin.qq.com/s/QhVyUzyZN_h1qjEZhO9jYQ","recommender":"Barney"},{"heading":"iOS 音频采集 Demo：采集音频数据并存储为 PCM 文件","url":"https://mp.weixin.qq.com/s/FDR_5cMfAJQgZhSvjgeWYA","recommender":"JonyFang"},{"heading":"iOS微信全文搜索技术优化","url":"https://mp.weixin.qq.com/s/Ph0jykLr5CMF-xFgoJw5UQ","recommender":"kemchenj"},{"heading":"cocoapods-downloader 设计概要","url":"https://mp.weixin.qq.com/s/J10EbVTAb_u_yDCThxFJYg"},{"heading":"高级 SwiftUI 动画 — Part 2：GeometryEffect","url":"https://mp.weixin.qq.com/s/rE_HILLt-uxzScS7wXh5jw","recommender":"AidenRao"},{"heading":"Mocha","url":"https://github.com/White-White/mocha","recommender":"Smallfly"},{"heading":"ScreenShield","url":"https://github.com/RyukieSama/Swifty","recommender":"Damien"},{"heading":"MetalPetal: An image processing framework based on Metal","url":"https://github.com/MetalPetal/MetalPetal","recommender":"莲叔"}]},{"id":"r-192-2022-02-21","type":"report","title":"老司机 iOS 周报 #192 | 2022-02-21","issue":192,"date":"2022-02-21","year":2022,"path":"Reports/2022/#192-2022.02.21.md","url":"Reports/2022/%23192-2022.02.21.md","excerpt":"Flutter 2.10 现已发布：Flutter 2.10 已经发布，2022 年的第一个 Stable 版本，按照惯例每个季度只会发布一个 Stable 版本，所以每一个 Stable 版本都是成吨的优化和性能改进: - Flutter 构建 Windows 桌面应用 Stable - 引擎的性能改进 - 绘制；Apple 开源 dyld4：近期 Apple 开源了 dyld4 的源码，不同于以往，这次在开源的同时还附带了相对完善的","sections":[{"heading":"Flutter 2.10 现已发布","url":"https://mp.weixin.qq.com/s/FgMu6-O_wMkwxp2yxiW2Ew","recommender":"CrazyCoderShi"},{"heading":"Apple 开源 dyld4","url":"https://github.com/apple-oss-distributions/dyld/blob/main/doc/dyld4.md","recommender":"Leo"},{"heading":"FFmpeg 工具：客户端音视频开发的必备工具","url":"https://mp.weixin.qq.com/s/Rl7fxOP-YH37mQEvGxhfUA","recommender":"JonyFang"},{"heading":"可视化音视频分析工具：音视频原始数据、编码、封装分析好用工具集锦","url":"https://mp.weixin.qq.com/s/jCYih3qgEIUctuWxn0aTGQ","recommender":"JonyFang"},{"heading":"阿里卖家 Flutter for Web 工程实践","url":"https://mp.weixin.qq.com/s/pai_9kJuAdD0RoZOdemL9w","recommender":"ChengzhiHuang"},{"heading":"hacker-laws: 软件开发人员常用定律","url":"https://github.com/nusr/hacker-laws-zh","recommender":"莲叔"},{"heading":"Xcode 常见 CLI 工具","url":"https://mp.weixin.qq.com/s/jF6mTsxC2xtn8Xp1Mn72Zw","recommender":"Smallfly"},{"heading":"Unobtrusive runtime warnings for libraries","url":"https://www.pointfree.co/blog/posts/70-unobtrusive-runtime-warnings-for-libraries","recommender":"老峰"},{"heading":"iOS自动化测试框架Kiwi的使用介绍及原理分析 - 掘金","url":"https://juejin.cn/post/7060780751700099080","recommender":"Barney"},{"heading":"高级 SwiftUI 动画 — Part 1：Paths","url":"https://mp.weixin.qq.com/s/5KinQfNtcovf_451UGwLQQ","recommender":"水水"},{"heading":"“一把梭：REST API 全用 POST”","url":"https://coolshell.cn/articles/22173.html","recommender":"四娘"},{"heading":"LLVM中文网","url":"https://llvm.liuxfe.com/docs/","recommender":"红纸"},{"heading":"百度网盘开源依赖注入框架 CarbonGraph","url":"https://github.com/baidu/CarbonGraph","recommender":"xiaofei86"}]},{"id":"r-191-2022-02-14","type":"report","title":"老司机 iOS 周报 #191 | 2022-02-14","issue":191,"date":"2022-02-14","year":2022,"path":"Reports/2022/#191-2022.02.14.md","url":"Reports/2022/%23191-2022.02.14.md","excerpt":"非公开 app 分发：AppStore 现在已经支持将不适合公开分发的 app 以非公开方式在 App Store 上发布，使其仅可通过直接链接发现。非公开 app 不会出现在任何 App Store 类别、推荐、排行榜、搜索结果或其他列表中。但可以通过 Apple 商务管理和 Apple 校园教务管；Apple Ads 现已支持自定产品页：//user-images.githubusercontent.com/11873526/153","sections":[{"heading":"非公开 app 分发","url":"https://developer.apple.com/cn/support/unlisted-app-distribution/"},{"heading":"Apple Ads 现已支持自定产品页","url":"https://developer.apple.com/cn/news/?id=ay7673lx","recommender":"![image](https"},{"heading":"探索 A15 芯片的 Metal 高级功能","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"在您的 App 中构建隐私保护","url":"https://developer.apple.com/cn/accelerator/"},{"heading":"Combining protocols in Swift","url":"https://www.swiftbysundell.com/articles/combining-protocols-in-swift/","recommender":"享耳先森"},{"heading":"Swift 演进之路","url":"https://ming1016.github.io/2022/02/10/swift-evolutionary-path/","recommender":"老峰"},{"heading":"Swift 子数组提取性能优化分析","url":"https://mp.weixin.qq.com/s/5oZkKX03C4DBUcN16f9u3w","recommender":"xiaofei86"},{"heading":"如何监控 iOS 的启动耗时","url":"https://ai-chan.top/code/launch-monitor/#hook-%E5%8D%87%E7%BA%A7%E6%96%B9%E6%A1%88","recommender":"ChengzhiHuang"},{"heading":"超全回顾 | 5位抖音工程师揭秘抖音iOS基础技术（附PPT和回放视频）","url":"https://mp.weixin.qq.com/s/dFkGjCgZeXbYxsu3F40L-Q","recommender":"J_Knight_"},{"heading":"音视频基础概念合集：148 个问题带你快速上车音视频","url":"https://mp.weixin.qq.com/s/X1idBFp7T5zhnqPmYSbQDw","recommender":"JonyFang"},{"heading":"WWDC NOTES","url":"https://www.wwdcnotes.com/","recommender":"Smallfly"},{"heading":"WebAssembly 2021 年回顾与 2022 年展望","url":"https://mp.weixin.qq.com/s/aKNfdQIMC_uJ6Fx7SytdBA","recommender":"邦Ben"},{"heading":"深入剖析 iOS 编译 Clang / LLVM","url":"https://xiaozhuanlan.com/topic/4916328705","recommender":"Damien"},{"heading":"Swift 汇编（一）Protocol Witness Table 初探","url":"https://mp.weixin.qq.com/s/dvWVnU7ZWiSIvQZBhWXnSw","recommender":"kemchenj"},{"heading":"为 Swift 和 SwiftUI 带来 Core Data 并发","url":"https://mp.weixin.qq.com/s/ELsrzsUtMv-rdXyPAN3ERA","recommender":"SZ"},{"heading":"App Clip 新特性","url":"https://mp.weixin.qq.com/s/q8eptavjMvp48oppJ8F3cA","recommender":"昊泽"},{"heading":"再谈 watchOS 的数据传输","url":"https://mp.weixin.qq.com/s/2DyDCknWzbLoFrVhyqaCdw","recommender":"Chars"},{"heading":"watchOS 8 中的新特性","url":"https://mp.weixin.qq.com/s/VppEWHOZO4nsOJU5oanIAg","recommender":"kk"},{"heading":"Cokile/TweaKit","url":"https://github.com/Cokile/TweaKit","recommender":"JonyFang"}]},{"id":"r-190-2022-01-24","type":"report","title":"老司机 iOS 周报 #190 | 2022-01-24","issue":190,"date":"2022-01-24","year":2022,"path":"Reports/2022/#190-2022.01.24.md","url":"Reports/2022/%23190-2022.01.24.md","excerpt":"Bazel：Bazel 是最近比较热点的话题之一。作为新的构建系统，它具有远端缓存、远端执行、跨平台、高度扩展、高性能等诸多特性。不仅仅局限于 iOS 的构建领域，在其 Rules 的帮助下，可以扩展很多可能性。 这边为大家稍作整理，给大家作为参考： - 几篇入门： - Bazel 官网 -；[GCDAsyncSocket 在 iOS15 出现 -[_NSThreadPerformInfo dealloc] 崩溃排查笔记](https:","sections":[{"heading":"Bazel","url":"https://bazel.build/","recommender":"红纸"},{"heading":"[GCDAsyncSocket 在 iOS15 出现 -[_NSThreadPerformInfo dealloc] 崩溃排查笔记](https://mp.weixin.qq.com/s/Tn8SN1eNaGkR1ddEKTkzPQ)","url":null,"recommender":"邦Ben"},{"heading":"浅谈软件开发架构模式","url":"https://mp.weixin.qq.com/s/cWp4J-XmvaoWHRMeuVDzPQ","recommender":"Smallfly"},{"heading":"字节跳动 iOS Heimdallr 卡死卡顿监控方案与优化之路","url":"https://mp.weixin.qq.com/s/qzA1g4mAH_Kgzc4fwVK2Rw","recommender":"Leo"},{"heading":"移动域全链路可观测架构和关键技术","url":"https://mp.weixin.qq.com/s/grW6r_cpmrxEJ-pMacKtGg","recommender":"xiaofei86"},{"heading":"iOS 如何记录堆栈信息？","url":"https://juejin.cn/post/7049267131036205086","recommender":"AidenRao"},{"heading":"从 0 到 1：美团端侧 CDN 容灾解决方案","url":"https://mp.weixin.qq.com/s/BA55Op8A29sXq-_SHv1igg","recommender":"JonyFang"},{"heading":"静态库冲突问题思路全解","url":"https://mp.weixin.qq.com/s/LAFS-6Oycnzu5kOhS9d7pA","recommender":"AidenRao"},{"heading":"淘宝小部件 Canvas 渲染流程与原理全解析","url":"https://mp.weixin.qq.com/s/o772Ziaxj64IOXXnckPFNQ","recommender":"Barney"},{"heading":"從前端視角看 SwiftUI","url":"https://blog.kalan.dev/2022-01-09-learn-swiftui-from-frontend-view/","recommender":"Smallfly"},{"heading":"Apple’s use of Swift and SwiftUI in iOS 15","url":"https://blog.timac.org/2021/1219-state-of-swift-and-swiftui-ios15/","recommender":"anotheren"},{"heading":"iOS 之深入理解 Image 与 MachO","url":"https://juejin.cn/post/7053289480131706911","recommender":"J_Knight_"},{"heading":"iOS 线上野指针探测实践与展望","url":"https://mp.weixin.qq.com/s/BNIWBwemmz4isbjBb9-pnQ","recommender":"ChengzhiHuang"},{"heading":"用 SwiftUI 实现一个开源的 App Store","url":"https://juejin.cn/post/7051512478630412301","recommender":"JonyFang"},{"heading":"干货 | Dart 并发机制详解","url":"https://mp.weixin.qq.com/s/WCvv7DXzWXNRaMtM-0u7pA","recommender":"CrazyCoderShi"},{"heading":"在 SwiftUI 下定制手势","url":"https://mp.weixin.qq.com/s/V_8jP3OPJa58eRz442LlQA","recommender":"老峰"},{"heading":"iOS瘦身！一个让50%本地图片消失的方案","url":"https://juejin.cn/post/7053978539523047437","recommender":"水水"},{"heading":"手机 APP 是不是在偷听我说话？","url":"https://mp.weixin.qq.com/s/FCOrMXeV53YcoKgQ869aYw"},{"heading":"XMachOViewer","url":"https://github.com/horsicq/XMachOViewer","recommender":"Damien"},{"heading":"PAG","url":"https://mp.weixin.qq.com/s/FncvW2ObIJGafk4X7EAZ-A","recommender":"莲叔"}]},{"id":"r-189-2022-01-17","type":"report","title":"老司机 iOS 周报 #189 | 2022-01-17","issue":189,"date":"2022-01-17","year":2022,"path":"Reports/2022/#189-2022.01.17.md","url":"Reports/2022/%23189-2022.01.17.md","excerpt":"手机 QQ 体积暴增，接近 900M：上周手机 QQ 迎来今年的第一次升级，给大家带来了一个巨大的 “惊喜”，iOS 版本的安装包已经达到了 879M，有眼尖的网友发现内置了一个 UE4 虚幻引擎，但是用在了哪个功能至今还未发现。手机 QQ 和元宇宙会擦出怎么样的火花，让我们拭目以待 ~；“App 分析”现已可用于 app 内活动：App Store Connect 中的“App 分析”能有效帮助您了解用户如何发现您的 app 并与之互","sections":[{"heading":"手机 QQ 体积暴增，接近 900M","url":null,"recommender":"Damonwong"},{"heading":"“App 分析”现已可用于 app 内活动","url":"https://developer.apple.com/cn/news/?id=pa0x2dzk"},{"heading":"字节跳动技术 iOS 技术沙龙正式报名开启","url":"https://mp.weixin.qq.com/s/yPTIOxJtl4BsjkDN0rXDdw","recommender":"Leo"},{"heading":"iOS 浮点类型精度问题小记","url":"https://juejin.cn/post/7047767024931438605","recommender":"极速男孩"},{"heading":"Loop","url":"https://www.swiftbysundell.com/basics/loops/","recommender":"享耳先森"},{"heading":"【译】SE-0302 Sendable 和 @Sendable 闭包","url":"https://kemchenj.github.io/2022-01-07/","recommender":"四娘"},{"heading":"基于 dylib 注入原理实现 iOS 热重载框架 CocoaHotReload","url":"https://mp.weixin.qq.com/s/XsfYUBD2YK9Tq4cfoGW4JA","recommender":"ChengzhiHuang"},{"heading":"基于 Web 内核的微信小程序框架实践","url":"https://mp.weixin.qq.com/s/vEu2Ft4c6LHPeUBHChjfFA","recommender":"CrazyCoderShi"},{"heading":"A short-term roadmap for C++ interop","url":"https://forums.swift.org/t/a-short-term-roadmap-for-c-interop/44768","recommender":"Damien"},{"heading":"Swift 在手淘商品评价的技术重构与实践","url":"https://mp.weixin.qq.com/s/J4wxvr5JvibG7vUtRz3ing","recommender":"含笑饮砒霜"},{"heading":"Xcode 配置多套 App 图标的方法 --- AppStore 图标 A/B Test 实践","url":"https://mp.weixin.qq.com/s/BApDWf9acuFBSONzV2OnEQ","recommender":"老峰"},{"heading":"让 UIKit 更优雅易用：Block 回调改造","url":"https://juejin.cn/post/7045133536495403015","recommender":"JonyFang"},{"heading":"Cube 技术解读 | Cube 小程序技术详解","url":"https://mp.weixin.qq.com/s/Sm2xtyxPMGucUHtaUy_aOQ","recommender":"Leo"},{"heading":"Swift Playgrounds 4 娱乐还是生产力","url":"https://mp.weixin.qq.com/s/Uyd9Nf12HpmslYR0zOQaEQ","recommender":"anotheren"},{"heading":"一场开源 RSA 库引发的“血案”","url":"https://mp.weixin.qq.com/s/UM_Nrfd2I0oVosD6iQDn5w","recommender":"老驴"},{"heading":"SwiftUI 技术内幕","url":"https://mp.weixin.qq.com/s/Q8EuaXei9Q0q-3OyD6n9Bw"},{"heading":"初探 Swift 算法和集合","url":"https://mp.weixin.qq.com/s/WpvuuUXQPwBHZpk8OmuPDg"},{"heading":"Flipper","url":"https://github.com/facebook/flipper","recommender":"Barney"}]},{"id":"r-188-2022-01-10","type":"report","title":"老司机 iOS 周报 #188 | 2022-01-10","issue":188,"date":"2022-01-10","year":2022,"path":"Reports/2022/#188-2022.01.10.md","url":"Reports/2022/%23188-2022.01.10.md","excerpt":"在您的 app 中训练自定义 Core ML 模型：了解如何通过在您的 app 中动态训练 Core ML 模型来构建自适应和个性化体验。首先，我们将回顾您可以在本地创建哪些类型的模型，包括基于图像的任务 (比如风格迁移和图像分类)、音频相关的任务 (如自定义声音分类) 以及使用表列回归器。我们还将向您展示您的 app 如何学习人；使用 StoreKit 2 和 App Store Server API 为客户提供支持：了解如何使用 S","sections":[{"heading":"在您的 app 中训练自定义 Core ML 模型","url":null},{"heading":"使用 StoreKit 2 和 App Store Server API 为客户提供支持","url":null},{"heading":"阿里自研标准化协议库 XQUIC 正式开源","url":"https://mp.weixin.qq.com/s/OrvjikvYyqlHAzGamLmpsw","recommender":"[XQUIC](https"},{"heading":"Swift implemented in Swift","url":"https://github.com/apple/swift/tree/main/SwiftCompilerSources","recommender":"kemchenj"},{"heading":"苹果“换芯”之路再起波折，M1 芯片功臣被英特尔挖走了","url":"https://www.infoq.cn/article/wLXQeEayVLEdQSJyd6Eq"},{"heading":"小程序容器首屏秒开优化实践","url":"https://mp.weixin.qq.com/s/7qeBZZ1KusME_SO3_A4L9g","recommender":"Barney"},{"heading":"Xcode13 自适应瀑布流 Layout 在 iOS15 上对 crash 的定位及修复","url":"https://mp.weixin.qq.com/s/sdj5Ym186VkpxXwExIpC0A","recommender":"ChengzhiHuang"},{"heading":"Flutter 轻量级引擎实践与优化","url":"https://mp.weixin.qq.com/s/n6rA0KyUSMGnnzG6Ij6edA","recommender":"CrazyCoderShi"},{"heading":"TCA - SwiftUI 的救星？","url":"https://onevcat.com/2021/12/tca-1/","recommender":"zvving"},{"heading":"赵海平与张宏波谈编程语言","url":"https://mp.weixin.qq.com/s/FI2WFOENBxgCbykvy9wBYQ","recommender":"莲叔"},{"heading":"Swift 在 58 安居客房产实践","url":"https://mp.weixin.qq.com/s/xMhVbw2-z2sDQbF9I8_0uA","recommender":"xiaofei86"},{"heading":"检测和诊断 App 内存问题","url":"https://mp.weixin.qq.com/s/E80VEIJma66fj7BZy1cCeQ"},{"heading":"iPhone 相机拍摄新变化","url":"https://mp.weixin.qq.com/s/swzI8C1NHeDFQNBbkQQhUQ"},{"heading":"更好用的 sheet","url":"https://mp.weixin.qq.com/s/AR3SH9ddgKAiBDOVuPPUug"},{"heading":"RegexLearn","url":"https://regexlearn.com/zh-cn","recommender":"红纸"},{"heading":"用 rust 实现苹果的 atos 工具，atosl-rs 发布啦","url":"https://mp.weixin.qq.com/s/Oy9jXMnVMYF55nqUpN2WXQ","recommender":"Smallfly"},{"heading":"Rainbow","url":"https://github.com/onevcat/Rainbow","recommender":"享耳先森"},{"heading":"CreateAPI","url":"https://github.com/kean/CreateAPI","recommender":"Damien"},{"heading":"Springboard: the secret history of the first real smartphone (Full Documentary)","url":"https://www.youtube.com/watch?v=b9_Vh9h3Ohw&ab_channel=TheVerge","recommender":"老驴"},{"heading":"卖鱼桥分桥 - 老司机技术周报四周年纪念","url":null,"recommender":"Damonwong"}]},{"id":"r-187-2021-12-27","type":"report","title":"老司机 iOS 周报 #187 | 2021-12-27","issue":187,"date":"2021-12-27","year":2021,"path":"Reports/2021/#187-2021.12.27.md","url":"Reports/2021/%23187-2021.12.27.md","excerpt":"使用 Group Activities 将共享群组体验引入您的 app：SharePlay 让您可以将您的 app 整合到 FaceTime 中，并以这种全新的方式将用户聚集起来。通过 Group Activities API，您可以比以往更加容易地将您的 app 中的电影、电视、音乐和其他共享媒体带入到人们已经在用来相互联系的空间。您可以了解如何提；Log4j Xcode vulnerability：近期 Java 日志库 Log4j","sections":[{"heading":"使用 Group Activities 将共享群组体验引入您的 app","url":null},{"heading":"Log4j Xcode vulnerability","url":"https://developer.apple.com/forums/thread/696785","recommender":"Smallfly"},{"heading":"Flutter疑难杂症系列：实现支持复杂需求的列表","url":"https://mp.weixin.qq.com/s/CtcxDtTgcEh0L77Z2g9HFg","recommender":"CrazyCoderShi"},{"heading":"Swift代码优化指南 | 如何最大化实现性能提升？","url":"https://mp.weixin.qq.com/s/xGeLeqcXBeBw1zMPqBZKYA","recommender":"JonyFang"},{"heading":"错误处理原则及其在Swift中的应用","url":"https://mp.weixin.qq.com/s/DJKuCXzqxBg7LPmtPMgglw","recommender":"Barney"},{"heading":"A roadmap for improving Swift performance predictability: ARC improvements and ownership control","url":"https://forums.swift.org/t/a-roadmap-for-improving-swift-performance-predictability-arc-improvements-and-ownership-control/54206","recommender":"ChengzhiHuang"},{"heading":"Introducing Swift for Visual Studio Code","url":"https://forums.swift.org/t/introducing-swift-for-visual-studio-code/54246","recommender":"老峰"},{"heading":"ipatool","url":"https://github.com/majd/ipatool","recommender":"Parsifal"},{"heading":"阅读亚马逊逆向工作法的几点收益","url":"https://mp.weixin.qq.com/s/-FHtH2C8f7oKLh3QJ9DFWw","recommender":"叶孤城"},{"heading":"编码人声：新人该怎样入坑开源项目","url":"https://dao.fm/2021/12/09/vol-333-编码人声：新人该怎样入坑开源项目？/","recommender":"含笑饮砒霜"}]},{"id":"r-186-2021-12-20","type":"report","title":"老司机 iOS 周报 #186 | 2021-12-20","issue":186,"date":"2021-12-20","year":2021,"path":"Reports/2021/#186-2021.12.20.md","url":"Reports/2021/%23186-2021.12.20.md","excerpt":"iOS 15.2 新增相册卡死：12 月 15 日，苹果发布了 iOS 15.2 的正式版。不幸的是这次升级带来了卡死。在还未向用户申请相册权限时，即 [PHPhotoLibrary authorizationStatus] != PHAuthorizationStatusAuthorized 时，如果调用 [；浅谈 Swift Dictionary：作者分析字典下标访问方法，并将源码与汇编结合，便于读者加深理解，推荐一读。阅读需要对汇","sections":[{"heading":"iOS 15.2 新增相册卡死","url":null,"recommender":"ChengzhiHuang"},{"heading":"浅谈 Swift Dictionary","url":"https://mp.weixin.qq.com/s/yIHaAaGRX7Ru_OetdX0_Vg","recommender":"ChengzhiHuang"},{"heading":"FlutterWeb 性能优化探索与实践","url":"https://mp.weixin.qq.com/s/fE11vs2qnRIHAWYv1af-gA","recommender":"Damien"},{"heading":"不甘当学渣，努力作学霸，最终是学民","url":"https://mp.weixin.qq.com/s/lZzX_1pLeied7e4jkvcVJQ","recommender":"Smallfly"},{"heading":"从 350ms 到 80ms，打造新零售场景下 iOS 短视频的极致丝滑体验","url":"https://mp.weixin.qq.com/s/qYsfyw2K77hKMfHd_uTp-Q","recommender":"anotheren"},{"heading":"Zealot","url":"https://github.com/tryzealot/zealot/","recommender":"JonyFang"},{"heading":"AppFlowy","url":"https://github.com/AppFlowy-IO/appflowy","recommender":"AidenRao"},{"heading":"佛系技术翻译组 SwiftGG 的过去与现在","url":"https://www.xiaoyuzhoufm.com/episode/61b451ff0506e510b35d71d0?s=eyJ1IjogIjVlN2M4NjIxYjNjNWJjYTVmNjQxMzlmMiJ9","recommender":"Parsifal"},{"heading":"Explore and manipulate data in Swift with TabularData","url":"https://developer.apple.com/videos/play/tech-talks/10100/","recommender":"xiaofei86"}]},{"id":"r-185-2021-12-13","type":"report","title":"老司机 iOS 周报 #185 | 2021-12-13","issue":185,"date":"2021-12-13","year":2021,"path":"Reports/2021/#185-2021.12.13.md","url":"Reports/2021/%23185-2021.12.13.md","excerpt":"千钧一发之际赢得暂缓令，苹果 App Store 要反败为胜了？：Epic Games 与苹果之间的诉讼仍然在博弈中，9 月份法院宣判苹果败诉后，苹果也已经宣布会在 12 月 9 日前发布正式政策允许使用第三方支付。而就在限期到达前，苹果又向法院申请到了暂缓执行这一命令，并已经继续提起上诉。；如何构建异步渲染聊天框架：本文前半部分侧重于“异步渲染”，概述了异步渲染的必要性，以及使用传统方案 TextKit 异步渲染的优缺点，针对其劣势引","sections":[{"heading":"千钧一发之际赢得暂缓令，苹果 App Store 要反败为胜了？","url":"https://www.36kr.com/p/1519790525222278","recommender":"Parsifal"},{"heading":"如何构建异步渲染聊天框架","url":"https://mp.weixin.qq.com/s/CAoTWjjnPBzALPBDZaU54g","recommender":"JimQ"},{"heading":"Support customers with StoreKit 2 and App Store Server API","url":"https://developer.apple.com/videos/play/tech-talks/10887/","recommender":"ChengzhiHuang"},{"heading":"淘特 Flutter 流式场景的深度优化","url":"https://mp.weixin.qq.com/s/H2VqX6qSJ1KLkXB5p4S0dw","recommender":"邦Ben"},{"heading":"iOS Pod Update 指数级变慢？看 Flutter 新一代版本仲裁算法 Pubgrub 如何解","url":"https://mp.weixin.qq.com/s/Ulz9FafWwtbefVuikTMj7Q","recommender":"红纸"},{"heading":"My worst tech interview experience · Jesse Squires","url":"https://www.jessesquires.com/blog/2021/12/01/my-worst-tech-interview-experience/","recommender":"Barney"},{"heading":"浅谈 swiftinterface 文件","url":"https://mp.weixin.qq.com/s/LVxFTp4nLHZDU_PqdsnX6Q","recommender":"anotheren"},{"heading":"Get started with in-app events","url":"https://developer.apple.com/videos/play/tech-talks/10889/","recommender":"享耳先森"},{"heading":"Flutter 2.8 release 发布，快来看看新特性吧","url":"https://mp.weixin.qq.com/s/7J_eLYO1DiPu8A2XsF99nw","recommender":"Parsifal"},{"heading":"Scale By The Bay 2021 : Konrad Malawski, Distributed Systems with Swift","url":"https://www.youtube.com/watch?v=7yu6mEq8R2Q&ab_channel=FunctionalTV","recommender":"老驴"}]},{"id":"r-184-2021-12-06","type":"report","title":"老司机 iOS 周报 #184 | 2021-12-06","issue":184,"date":"2021-12-06","year":2021,"path":"Reports/2021/#184-2021.12.06.md","url":"Reports/2021/%23184-2021.12.06.md","excerpt":"有赞移动技术沙龙火热报名中~：老司机今年联合企业举办的最后一场技术沙龙来啦~这次我们与有赞移动技术团队一起带来 「质量·极致」 为主题的线下沙龙活动。本次沙龙将涵盖中大型团队中把控线上稳定性的方方面面，共有 5 个主题，欢迎大家来现场学习！扫码即可参与报名！；戴铭的 Swift 小册子：小册子 内容主要包括 Swift 语法特性、 Swift 官方社区动态、SwiftUI 等几个板块，面向 Swift 零基础的同学，包括一些直接可用的小","sections":[{"heading":"有赞移动技术沙龙火热报名中~","url":"https://mp.weixin.qq.com/s/EdiV-CO80ONqx9-bKgciAA","recommender":"Parsifal"},{"heading":"戴铭的 Swift 小册子","url":"https://github.com/ming1016/SwiftPamphletApp","recommender":"老峰"},{"heading":"“杀死” App 上的疑难崩溃！","url":"https://mp.weixin.qq.com/s/dHAiuHeF2n34DaPIGOtJaw","recommender":"水水"},{"heading":"Solving Mysterious Logout Issues on iOS 15","url":"https://sourcediving.com/solving-mysterious-logout-issues-on-ios-15-8b818c089466","recommender":"Smallfly"},{"heading":"Web API Client in Swift","url":"https://kean.blog/post/new-api-client","recommender":"JonyFang"},{"heading":"自己搞一个 MemoryGraph 工具行不行？","url":"https://mp.weixin.qq.com/s/pggPc5gWpV6ZX0rnVpN22Q","recommender":"Barney"},{"heading":"如果 Safari 做不到对，快有何用？","url":"https://coderemixer.com/2020/10/21/safari-is-fast-but-so-what/","recommender":"JonyFang"},{"heading":"What role do Tasks play within Swift’s concurrency system?","url":"https://www.swiftbysundell.com/articles/the-role-tasks-play-in-swift-concurrency/","recommender":"zvving"},{"heading":"Editing Multiple Constraints","url":"https://useyourloaf.com/blog/editing-multiple-constraints/","recommender":"J_Knight_"},{"heading":"M1 设备的 Xcode 编译问题深究","url":"https://juejin.cn/post/7037037120158269448","recommender":"Parsifal"}]},{"id":"r-183-2021-11-29","type":"report","title":"老司机 iOS 周报 #183 | 2021-11-29","issue":183,"date":"2021-11-29","year":2021,"path":"Reports/2021/#183-2021.11.29.md","url":"Reports/2021/%23183-2021.11.29.md","excerpt":"用苹果官方 API 实现 iOS 备忘录的扫描文稿功能：iOS 系统自带的备忘录看似简单，实则功能强大。本文来自一位独立开发者，使用系统 API 尝试重现备忘录的扫描文稿功能。其主要使用了 VisionKit、Vision、NaturalLanguage、CoreSpotlight 等系统框架，推荐一读。；Flutter 实现完美的双向聊天列表效果，滑动列表的知识点：IM 列表算是 Scrollable 视图比较常见的一个需求场景，本文","sections":[{"heading":"用苹果官方 API 实现 iOS 备忘录的扫描文稿功能","url":"https://www.fatbobman.com/posts/docScaner/","recommender":"anotheren"},{"heading":"Flutter 实现完美的双向聊天列表效果，滑动列表的知识点","url":"https://mp.weixin.qq.com/s/LfsYzXv4GomyIbLysb-eNg","recommender":"CrazyCoderShi"},{"heading":"干货 | 聊聊移动端安全加固","url":"https://mp.weixin.qq.com/s/yCB2R8QPWNp2lJrQD4l_hw"},{"heading":"如何系统性治理 iOS 稳定性问题","url":"https://mp.weixin.qq.com/s/M6dekf2_jbpkZqArPx7wgA","recommender":"Barney"},{"heading":"百度 APP 移动研发平台及 DevOps 实践","url":"https://mp.weixin.qq.com/s/XHv5NiEgKwt_shRyJQodhw","recommender":"Smallfly"},{"heading":"Flutter 实现动态化更新 - 技术预研","url":"https://juejin.cn/post/7033708048321347615","recommender":"ChengzhiHuang"},{"heading":"拒绝编译等待 - 动态研发模式 ARK","url":"https://mp.weixin.qq.com/s/2tnU4sHf9XVEaJYgyTXoaw","recommender":"红纸"},{"heading":"Xcode Cloud: Automated Workflows","url":"https://blog.devgenius.io/xcode-cloud-automated-workflows-730277773c37","recommender":"Parsifal"},{"heading":"Learn X in Y minutes","url":"https://learnxinyminutes.com/","recommender":"Parsifal"}]},{"id":"r-182-2021-11-22","type":"report","title":"老司机 iOS 周报 #182 | 2021-11-22","issue":182,"date":"2021-11-22","year":2021,"path":"Reports/2021/#182-2021.11.22.md","url":"Reports/2021/%23182-2021.11.22.md","excerpt":"Tech Talks 2021 - 中文专场：新一批的 Apple Tech Talks 2021 中文专场来了，本次更新了 5 个专题，欢迎大家扫码报名~；Apple 宣布将推出自助维修计划：未来我们可以直接从官方购买零件和工具进行自己维修设备啦！苹果近期宣布将推出自助维修计划，首先将会在明年初于美国率先试运行，而后逐步推广至其他国家。这对于平常喜欢自己动手拆机而又不想从网上到处找靠谱零件的朋友无疑是一个福音，如果未来推出的零件价格合","sections":[{"heading":"Tech Talks 2021 - 中文专场","url":"https://developer.apple.com/cn/tech-talks/","recommender":"Parsifal"},{"heading":"Apple 宣布将推出自助维修计划","url":"https://www.apple.com.cn/newsroom/2021/11/apple-announces-self-service-repair/","recommender":"Parsifal"},{"heading":"新版 Flutter 中文开发者网站发布","url":"https://mp.weixin.qq.com/s/JOm2-TBh4m3nJZKWbfjoug","recommender":"Parsifal"},{"heading":"Swift Playgrounds App Projects","url":"https://skyaaron.com/posts/swiftpm-app-projects/","recommender":"老峰"},{"heading":"从野指针探测到对iOS 15 bind 的探索","url":"https://mp.weixin.qq.com/s/jNiRinGYeV3LiF5Zjt-x0w","recommender":"J_Knight_"},{"heading":"美团外卖终端容器无关化研发框架","url":"https://tech.meituan.com/2021/11/11/meituan-waimai-containerless-framework.html","recommender":"JonyFang"},{"heading":"分享我成为 GDE（Google 开发者专家）的经历","url":"https://mp.weixin.qq.com/s/14TpW7-EqZ_6XO1vYRnhiQ","recommender":"老驴"},{"heading":"Flutter 多插件本地化问题","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486934&idx=1&sn=b1f809e93ffcf0ab051b0862c1f8eb03&chksm=cf55821ef8220b085333ffc8622f17cdec599bf53c0b95cfe1a50f901b85d778316a1feb7e39&token=290590453&lang=zh_CN#rd","recommender":"ChengzhiHuang"},{"heading":"Introducing XCRemoteCache: The iOS Remote Caching Tool that Cut Our Clean Build Times by 70% : Spotify Engineering","url":"https://engineering.atspotify.com/2021/11/16/introducing-xcremotecache-the-ios-remote-caching-tool-that-cut-our-clean-build-times-by-70/","recommender":"Barney"},{"heading":"How to use Github Copilot with Swift using Visual Studio Code?","url":"https://antran.app/2021/github_copilot_swift/","recommender":"Smallfly"},{"heading":"SwagGen","url":"https://github.com/yonaskolb/SwagGen","recommender":"AidenRao"},{"heading":"SwiftTreeSitter","url":"https://github.com/ChimeHQ/SwiftTreeSitter","recommender":"四娘"}]},{"id":"r-181-2021-11-15","type":"report","title":"老司机 iOS 周报 #181 | 2021-11-15","issue":181,"date":"2021-11-15","year":2021,"path":"Reports/2021/#181-2021.11.15.md","url":"Reports/2021/%23181-2021.11.15.md","excerpt":"针对在线多人活动的 app 内购买项目规定提醒：在多次推迟在线多人活动 (一对几和一对多的实时服务体验)实行 IAP 制度后，苹果终于决定正式实施了。在 2022 年起，若你的 App 存在在线多人活动的功能而又不是使用 IAP 进行支付的话，苹果将会予以拒绝。值得注意的是，仅在两个人之间提供实时一对一服务体验 (例如，学生辅；年末假期接受 app 提交：往年这个时候，苹果总是开始提醒开发者将会在圣诞节等假日期间停止接受 App Sto","sections":[{"heading":"针对在线多人活动的 app 内购买项目规定提醒","url":"https://developer.apple.com/cn/news/?id=yeyd5xuh","recommender":"Parsifal"},{"heading":"年末假期接受 app 提交","url":"https://developer.apple.com/cn/news/?id=y4fgrhhe","recommender":"Parsifal"},{"heading":"Understanding how and when SwiftUI decides to redraw views","url":"https://www.donnywals.com/understanding-how-and-when-swiftui-decides-to-redraw-views/","recommender":"JonyFang"},{"heading":"What Is a Deprecated API on iOS?","url":"https://pspdfkit.com/blog/2021/what-is-a-deprecated-api-on-ios/","recommender":"含笑饮砒霜"},{"heading":"闲鱼唤端的背后","url":"https://mp.weixin.qq.com/s/MQ2XlroLF6vhM7qP1H-tBQ","recommender":"享耳先森"},{"heading":"Dangerous Logging in Swift","url":"https://indiestack.com/2021/10/dangerous-logging-in-swift/","recommender":"Damien"},{"heading":"聊聊__attribute__这个关键字吧～","url":"https://mp.weixin.qq.com/s/FTC-IYVCqzGU-00nj5bVfw","recommender":"Smallfly"},{"heading":"端智能助力西瓜视频业务实践","url":"https://mp.weixin.qq.com/s/qiVCG2ME8ppzia34txN9Rw","recommender":"ChengzhiHuang"},{"heading":"Core Image Tutorial for iOS: Custom Filters","url":"https://www.raywenderlich.com/25658084-core-image-tutorial-for-ios-custom-filters","recommender":"anotheren"},{"heading":"狐友iOS客户端埋点的前世今生","url":"https://mp.weixin.qq.com/s/be4knvdFsMpykNKVSBnGwA","recommender":"Barney"}]},{"id":"r-180-2021-11-08","type":"report","title":"老司机 iOS 周报 #180 | 2021-11-08","issue":180,"date":"2021-11-08","year":2021,"path":"Reports/2021/#180-2021.11.08.md","url":"Reports/2021/%23180-2021.11.08.md","excerpt":"macOS 版 TestFlight 正式发布：TestFlight 正式支持 macOS 应用 分发了，规则总体与 iOS 版 TestFlight 差不多，总共 10000 个测试名额，支持分组等功能。另外，由于 Mac Catalyst 的存在，在 macOS 的 TestFlight 上体验 iOS App 的或许也会；GitHub - twostraws/Unwrap: Learn Swift interactively on","sections":[{"heading":"macOS 版 TestFlight 正式发布","url":"https://developer.apple.com/cn/news/?id=0bemba6j","recommender":"Parsifal"},{"heading":"GitHub - twostraws/Unwrap: Learn Swift interactively on your iPhone.","url":"https://github.com/twostraws/Unwrap","recommender":"Barney"},{"heading":"Xcode 中代码注释编写小技巧","url":"https://juejin.cn/post/7020590213361565726","recommender":"老峰"},{"heading":"Flutter 图片库高燃新登场","url":"https://mp.weixin.qq.com/s/TdTGK21S-Yd3aD-yZDoYyQ","recommender":"邦Ben"},{"heading":"工程实践 | 在 Flutter 中实现一个精准的滑动埋点","url":"https://mp.weixin.qq.com/s/Q0HLJdqeRcYg6GKQQWq4CQ","recommender":"Damien"},{"heading":"Introducing Swift Distributed Actors","url":"https://www.swift.org/blog/distributed-actors/","recommender":"xiaofei86"},{"heading":"Flutter PlatformView 在闲鱼直播业务中的实践","url":"https://mp.weixin.qq.com/s/u-nYmDm6doIMBoh8cTDzlQ","recommender":"ChengzhiHuang"},{"heading":"PillowTalk - iOS/Lite","url":"https://github.com/Co2333/mobilePillowTalkLite","recommender":"极速男孩"},{"heading":"5G，华为，土耳其——我花了两个月，搞懂了5G背后的秘密","url":"https://www.bilibili.com/video/BV1fq4y1g7hq","recommender":"zvving"}]},{"id":"r-179-2021-11-01","type":"report","title":"老司机 iOS 周报 #179 | 2021-11-01","issue":179,"date":"2021-11-01","year":2021,"path":"Reports/2021/#179-2021.11.01.md","url":"Reports/2021/%23179-2021.11.01.md","excerpt":"App 内活动正式开放：WWDC 21 中提到的 App 内活动于 10 月 27 日正式开放了。需要注意的是，要开始相关操作，帐户持有人需要在 App Store Connect 里加入新版 App Store 提交体验。您将能够体验更多功能，包括在一次提交中包含多至 10 个活动、不使用新的 App；TestFlight 公开链接名额管理策略调整：TestFlight 是苹果官方提供的内测平台，苹果也一直在优化它的使用体验。最近一次","sections":[{"heading":"App 内活动正式开放","url":"https://developer.apple.com/cn/news/?id=zghdvfza","recommender":"Parsifal"},{"heading":"TestFlight 公开链接名额管理策略调整","url":"https://developer.apple.com/cn/testflight/","recommender":"Parsifal"},{"heading":"iOS 性能检测新方式 - AnimationHitches","url":"https://mp.weixin.qq.com/s/SQgxvBztLQFZ6QV43iN2Vg","recommender":"JonyFang"},{"heading":"58 同城 iOS 混编项目无用代码检测方案介绍","url":"https://mp.weixin.qq.com/s/RU8jhQJ_LSFEJcZX3bXmLg","recommender":"Barney"},{"heading":"苹果官方 “隐私洞见” 来了","url":"https://mp.weixin.qq.com/s/jo9sb2AfrnzZWpDDuqJnCw","recommender":"Smallfly"},{"heading":"iOS 隱私與便利的前世今生","url":"https://medium.com/zrealm-ios-dev/ios-隱私與便利的前世今生-9a05f632eba0"},{"heading":"干货 | 携程 APP Native/RN 内嵌 Flutter UI 混合开发实践和探索","url":"https://mp.weixin.qq.com/s/yqChBHJ_QEpjuGYdIJsVzg","recommender":"ChengzhiHuang"},{"heading":"【译】 Flutter 延迟加载组件 【包体积优化 | 动态化】","url":"https://juejin.cn/post/6970870114316976142","recommender":"CrazyCoderShi"},{"heading":"Aquarius","url":"https://github.com/CrazyFanFan/Aquarius/blob/master/README_CN.md","recommender":"红纸"}]},{"id":"r-178-2021-10-25","type":"report","title":"老司机 iOS 周报 #178 | 2021-10-25","issue":178,"date":"2021-10-25","year":2021,"path":"Reports/2021/#178-2021.10.25.md","url":"Reports/2021/%23178-2021.10.25.md","excerpt":"Tech Talks 2021：苹果上周宣布启动开发者参与的全新在线系列演讲 Tech Talks 2021，包括 100 多场直播和超过 1500 小时的会谈时间，将在接下来的 8 周内展开。Tech Talks 将使开发者们有机会直接与 Apple 专家交流，深入了解新技术、解决疑难杂症以及相关指南与工具的；Flutter 难点问题之 GPU 后台 Crash：本文介绍了后台访问 GPU 导致 App 后台被杀的修复方案。通过在主线","sections":[{"heading":"Tech Talks 2021","url":"https://developer.apple.com/cn/tech-talks/","recommender":"老峰"},{"heading":"Flutter 难点问题之 GPU 后台 Crash","url":"https://mp.weixin.qq.com/s/KVux8rYCPXcvDODUskinBQ","recommender":"ChengzhiHuang"},{"heading":"探究 iOS 编码对包大小的影响","url":"https://juejin.cn/post/7015861914370736136","recommender":"JonyFang"},{"heading":"MetalKit.org 总结：What’s new in Metal at WWDC21","url":"https://metalkit.org/2021/06/18/whats-new-in-metal-at-wwdc21/","recommender":"莲叔"},{"heading":"macOS 上 Flutter Desktop 与 Electron 的性能对比","url":"https://mp.weixin.qq.com/s/uTHi8SfCvXJfbie1A1YNVA","recommender":"Damien"},{"heading":"微信终端自研 C++ 协程框架的设计与实现","url":"https://mp.weixin.qq.com/s/c17DaD7JbKlDFT6J8haEFw","recommender":"老驴"},{"heading":"干货：探秘 WKWebView","url":"https://mp.weixin.qq.com/s/l9D4V0ON3uJ0HfsJ7bpJiQ","recommender":"享耳先森"},{"heading":"SwiftUI by Example","url":"https://jaywcjlove.gitee.io/swiftui-example/","recommender":"kemchenj"},{"heading":"Apple Store 库存监控助手","url":"https://github.com/Sunnyyoung/AppleReserver","recommender":"anotheren"},{"heading":"Dflat: Structured Data Store for Mobile","url":"https://github.com/liuliu/dflat","recommender":"zvving"}]},{"id":"r-177-2021-10-18","type":"report","title":"老司机 iOS 周报 #177 | 2021-10-18","issue":177,"date":"2021-10-18","year":2021,"path":"Reports/2021/#177-2021.10.18.md","url":"Reports/2021/%23177-2021.10.18.md","excerpt":"王炸候场中，19 号等你来。：北京时间 10 月 19 日凌晨 1 点，也就是明天凌晨，苹果将举办新一期的硬件发布会。市场预期苹果将会发布 M1X 的 MacBook Pro，考虑换代的朋友们可以准备起来了~；从《虾票票》带你入门 iOS 系列：这是 Bo2SS 在公众号连载的系列文章，适合想从零入门 iOS 的同学，建议和 Apple 的教程一起阅读，目前连载到第四篇： - 从《虾票票》带你入门 iOS（1）—— 定位与目标 - 从《","sections":[{"heading":"王炸候场中，19 号等你来。","url":"https://mp.weixin.qq.com/s/5k9_up9CdWHVF5J8zzKSHg","recommender":"Parsifal"},{"heading":"从《虾票票》带你入门 iOS 系列","url":"https://mp.weixin.qq.com/s/lj1zYvVitD6v7z0gjl13qg","recommender":"享耳先森"},{"heading":"Telegram-iOS 源码导读","url":"https://hubo.dev/2020-05-07-source-code-walkthrough-of-telegram-ios-part-1/","recommender":"AidenRao"},{"heading":"AttributedString——不仅仅让文字更漂亮","url":"https://mp.weixin.qq.com/s/4P8hX7WoBUeUtvBOS4Tx7g","recommender":"Barney"},{"heading":"Swift-DocC is Now Open Source","url":"https://swift.org/blog/swift-docc/","recommender":"Smallfly"},{"heading":"Apple documentation | canOpenURL:","url":"https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc","recommender":"J_Knight_"},{"heading":"The Mysterious CodableWithConfiguration Protocol","url":"https://www.andyibanez.com/posts/the-mysterious-codablewithconfiguration-protocol/","recommender":"xiaofei86"},{"heading":"Faster Builds with Code Signing Hacks","url":"https://eisel.me/signing","recommender":"老峰"},{"heading":"tuist","url":"https://tuist.io","recommender":"红纸"},{"heading":"swift-markdown","url":"https://github.com/apple/swift-markdown","recommender":"Parsifal"}]},{"id":"r-176-2021-09-27","type":"report","title":"老司机 iOS 周报 #176 | 2021-09-27","issue":176,"date":"2021-09-27","year":2021,"path":"Reports/2021/#176-2021.09.27.md","url":"Reports/2021/%23176-2021.09.27.md","excerpt":"得物技术 iOS 专场线下沙龙一期圆满结束：9.25 日上周六，我们在上海与得物技术一起联合主办了 iOS 专场沙龙活动。我们邀请到了 4 位嘉宾前来分享。他们分别来自于得物技术、字节跳动和阿里巴巴团队，主题涵盖 《得物 iOS 工程演进之路》、《字节跳动自研移动研发工具链 MBox》、《视频特效揭秘》和《基于 MNN 的；Back-deploy concurrency 已合并在 Swift 5.5 Release：Swift Conc","sections":[{"heading":"得物技术 iOS 专场线下沙龙一期圆满结束","url":null,"recommender":"Parsifal"},{"heading":"Back-deploy concurrency 已合并在 Swift 5.5 Release","url":"https://github.com/apple/swift/pull/39342","recommender":"Parsifal"},{"heading":"Flutter 2.5 版本发布","url":"https://medium.com/flutter/whats-new-in-flutter-2-5-6f080c3f3dc","recommender":"CrazyCoderShi"},{"heading":"App Store 现已开放 iOS 15 和 iPadOS 15 app 提交","url":"https://developer.apple.com/cn/news/?id=f87q5n2j","recommender":"Parsifal"},{"heading":"Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述","url":"https://mp.weixin.qq.com/s/UaQUkdTboYGU0_VYiAooVw","recommender":"Kyo"},{"heading":"企业微信超大型工程-跨全平台UI框架最佳实践","url":"https://mp.weixin.qq.com/s/JdQmgQ57nWQM99JW_ueFVg","recommender":"折腾范儿_唯敬"},{"heading":"Xcode 13 Release Notes","url":"https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes","recommender":"Smallfly"},{"heading":"The difference between Thread.sleep() and Task.sleep()","url":"https://trycombine.com/posts/thread-task-sleep/","recommender":"anotheren"},{"heading":"Linting vs Formatting: A Swift Guide Part 1","url":"https://jasonzurita.com/linting-and-formatting-swift-part-1/","recommender":"ChengzhiHuang"},{"heading":"关于 Swift Package Manager 的一些经验分享","url":"https://mp.weixin.qq.com/s/s2GZ13PVdVa5t-SABArtdA","recommender":"四娘"},{"heading":"迁往 Swift 5.5 Concurrency 之路：重构方式的选择","url":"https://imtx.me/blog/migrate-to-swift-5-5-concurrency-choices-of-refactor-method/","recommender":"极速男孩"},{"heading":"Alibaba iOS 工程架构腐化治理实践","url":"https://mp.weixin.qq.com/s/gS9yC4HUWxi0vkjQPdo5tw","recommender":"红纸"},{"heading":"你真的了解符号化么？","url":"https://mp.weixin.qq.com/s/6Odq8JTYXL0bA8xyWEO1Og","recommender":"Jimq"},{"heading":"ScriptWidget","url":"https://github.com/everettjf/ScriptWidget","recommender":"JonyFang"}]},{"id":"r-175-2021-09-13","type":"report","title":"老司机 iOS 周报 #175 | 2021-09-13","issue":175,"date":"2021-09-13","year":2021,"path":"Reports/2021/#175-2021.09.13.md","url":"Reports/2021/%23175-2021.09.13.md","excerpt":"有消息了，找你的。：苹果今年的秋季发布会正式官宣将在北京时间 9 月 15 日凌晨 1 点举行，iPhone 13 和 iPad 9 等主要硬件设备有望悉数登场，另外近年来一直传言的 AR & VR 领域也值得期待是否会在这次有所透露~；灵动的适配器模式 | Flutter 设计模式：本文以 Flutter 的角度来说明了 Adapter 模式的用法，如果是 Android 的同学会对这个模式更为熟悉。文中给出了具体的例子，感兴趣的同学","sections":[{"heading":"有消息了，找你的。","url":"https://mp.weixin.qq.com/s/FPml7P1RHTc0QBbFb3TKbg","recommender":"Parsifal"},{"heading":"灵动的适配器模式 | Flutter 设计模式","url":"https://mp.weixin.qq.com/s/w0msBQnDzkZ4rsL1EtPyVA","recommender":"邦Ben"},{"heading":"iOS 端容器之 WKWebView 那些事","url":"https://mp.weixin.qq.com/s/39u-48KvO-Fmkn9t0nJ-fA","recommender":"JonyFang"},{"heading":"iOS 崩溃日志在线符号化实践","url":"https://mp.weixin.qq.com/s/MIun-eV4_J1hXGDRjGoLaw","recommender":"Barney"},{"heading":"iOS 符号解析重构之路","url":"https://mp.weixin.qq.com/s/TVRYXhiOXIsMmXZo9GmEVA","recommender":"水水"},{"heading":"再探ARC，Autoreleasepool，NSString— —由一场直播 OOM 引发的故事","url":"https://mp.weixin.qq.com/s/oU9DWR4OP8DMp6smMhIxZg"},{"heading":"在 SwiftUI 中使用 UIKit 视图","url":"https://mp.weixin.qq.com/s/QEDd9cIHi3lk0O63fc-ApQ","recommender":"zvving"},{"heading":"一个 JavaScriptCore 框架中对象与 Timer 引发的死锁问题内幕","url":"https://mp.weixin.qq.com/s/ywYj886iVoU3OvcV4pAC6g","recommender":"Smallfly"},{"heading":"Preventing Data Races Using Actors in Swift","url":"https://swiftsenpai.com/swift/actor-prevent-data-race/","recommender":"享耳先森"},{"heading":"Flutter 多引擎支持 PlatformView 以及线程合并解决方案","url":"https://mp.weixin.qq.com/s/6aW9vbithMWTOJ_PGniQTA","recommender":"ChengzhiHuang"},{"heading":"ARC 下还有 __NSStackBlock__ 吗","url":"https://dengweijun.com/arc-nsstackblock-31c0c1d493974db5bd7f278dd20e223a","recommender":"J_Knight_"},{"heading":"URLServiceRouter","url":"https://github.com/lightank/URLServiceRouter","recommender":"EyreFree"},{"heading":"flomo 浮墨笔记","url":null},{"heading":"产品沉思录","url":null}]},{"id":"r-174-2021-09-06","type":"report","title":"老司机 iOS 周报 #174 | 2021-09-06","issue":174,"date":"2021-09-06","year":2021,"path":"Reports/2021/#174-2021.09.06.md","url":"Reports/2021/%23174-2021.09.06.md","excerpt":"第二期：探索 iPadOS 技术：苹果官方的一对一咨询活动第二期来啦！2021 年 9 月 14 日（下周二）举办主题为 “探索 iPadOS 技术”的在线研讨会。本次面向周报读者免费公开报名，扫码即可参与。独一无二的机会，直接向 Apple 的专家学习，报名截止日 9 月 10 日，名额有限，报满即止。；Flutter 里的语法糖解析，知其所然方能潇洒舞剑：以往大家都是从官方的介绍文档中认识 dart 的中的 关键字 / 语法糖 的，","sections":[{"heading":"第二期：探索 iPadOS 技术","url":"https://developer.apple.com/cn/accelerator/","recommender":"Parsifal"},{"heading":"Flutter 里的语法糖解析，知其所然方能潇洒舞剑","url":"https://mp.weixin.qq.com/s/Wi2jJ8KnsSnrV8Dk_eIqDg","recommender":"ChengzhiHuang"},{"heading":"一文读懂字节跳动自研移动研发工具链 MBox","url":"https://mp.weixin.qq.com/s/5_IlQPWnCug_f3SDrnImCw","recommender":"Barney"},{"heading":"APP 隐私合规","url":"https://mp.weixin.qq.com/s/_RP6EEYfYGJn877tRdXOFA","recommender":"AidenRao"},{"heading":"Reverse engineering a 5 year old Xcode issue","url":"https://swiftrocks.com/reverse-engineering-xcode-issue-crash-symbol","recommender":"Damien"},{"heading":"Swift 与 Objective-C 混编时，我们是如何将编译时间优化了 35%？","url":"https://mp.weixin.qq.com/s/9BpfKhT1tQM_gAUNb2mQLg","recommender":"Smallfly"},{"heading":"添加编译警告的另一种方式：clang 开发入门","url":"https://juejin.cn/post/7002999613984768031#heading-6","recommender":"红纸"},{"heading":"Core Data with CloudKit (一)","url":"https://www.fatbobman.com/posts/coreDataWithCloudKit-1/","recommender":"JonyFang"},{"heading":"Flutter Fish Redux 2.0 架构演进实践","url":"https://mp.weixin.qq.com/s/5LUCFZWts9Q0lUNqtocADQ","recommender":"CrazyCoderShi"},{"heading":"swift-atomics","url":"https://github.com/apple/swift-atomics","recommender":"Parsifal"},{"heading":"flomo 浮墨笔记","url":null},{"heading":"产品沉思录","url":null}]},{"id":"r-173-2021-08-30","type":"report","title":"老司机 iOS 周报 #173 | 2021-08-30","issue":173,"date":"2021-08-30","year":2021,"path":"Reports/2021/#173-2021.08.30.md","url":"Reports/2021/%23173-2021.08.30.md","excerpt":"Apple 与美国开发者就 App Store 更新达成一致，这些更新将支持开发者业务，并持续为用户带来精彩体验：本周我们推送了一则短文 - IAP 或将不再是唯一支付方式，文章的主要内容便来自于苹果官方的这则新闻。新闻内容比较多，但最值得我们注意的便是苹果对于 IAP 使用条款的改变。虽然目前并没有明确说明，我们可以直接在应用内使用第三方支付，但从描述上看，苹果已经做出了比较大的改变，从原；重磅首发｜闲鱼构建Flutter企业级应用开","sections":[{"heading":"Apple 与美国开发者就 App Store 更新达成一致，这些更新将支持开发者业务，并持续为用户带来精彩体验","url":"https://www.apple.com.cn/newsroom/2021/08/apple-us-developers-agree-to-app-store-updates/","recommender":"Parsifal"},{"heading":"重磅首发｜闲鱼构建Flutter企业级应用开发电子书新鲜出炉","url":"https://mp.weixin.qq.com/s/DTLgVwUjfORBY5NCd9C-8g","recommender":"CrazyCoderShi"},{"heading":"How iOS 15 makes your app launch faster","url":"https://www.emergetools.com/blog/posts/iOS15LaunchTime","recommender":"Leo"},{"heading":"Building a token refresh flow with async/await and Swift Concurrency","url":"https://www.donnywals.com/building-a-token-refresh-flow-with-async-await-and-swift-concurrency/","recommender":"Barney"},{"heading":"Flutter 疑难杂症系列：键盘原理及常见问题解决方案","url":"https://mp.weixin.qq.com/s/snU-mNlmEnOUHw3I-DrJ_w","recommender":"ChengzhiHuang"},{"heading":"Why Conditional View Modifiers are a Bad Idea","url":"https://www.objc.io/blog/2021/08/24/conditional-view-modifiers/","recommender":"zvving"},{"heading":"降低 APP 卸载率，测试人员可以做些什么？","url":"https://mp.weixin.qq.com/s/ogiOlV-eXkDFlGEp-pLgMQ","recommender":"Smallfly"},{"heading":"Deprecating Workarounds","url":"https://www.basbroek.nl/deprecating-workarounds","recommender":"xiaofei86"},{"heading":"swift-custom-dump","url":"https://github.com/pointfreeco/swift-custom-dump","recommender":"Damien"},{"heading":"PreviewView","url":"https://github.com/theoriginalbit/PreviewView","recommender":"JonyFang"},{"heading":"flomo 浮墨笔记","url":null},{"heading":"产品沉思录","url":null}]},{"id":"r-172-2021-08-23","type":"report","title":"老司机 iOS 周报 #172 | 2021-08-23","issue":172,"date":"2021-08-23","year":2021,"path":"Reports/2021/#172-2021.08.23.md","url":"Reports/2021/%23172-2021.08.23.md","excerpt":"【WWDC21 10012 】App Clip 新特性：App Clip 是 WWCD20 的一大亮点，它提供了一种“即时使用”的方式，基于苹果提供的各种唤醒方式，让用户在特定场景下很方便地体验 App 内的核心功能。现在一年过去了，世界各地的开发者开发出了各种优秀的 App Clip。同时 Apple 提供了一种全新的 App Cl；【WWDC21 10076】使用 Object Capture 创建 3D 模型：Apple 自 20","sections":[{"heading":"【WWDC21 10012 】App Clip 新特性","url":"https://xiaozhuanlan.com/topic/2048796351","recommender":"昊泽"},{"heading":"【WWDC21 10076】使用 Object Capture 创建 3D 模型","url":"https://xiaozhuanlan.com/topic/8026419753","recommender":"Hays"},{"heading":"【WWDC21 10109】探索 Foundation 新增功能","url":"https://xiaozhuanlan.com/topic/7093142658","recommender":"leejunhui"},{"heading":"【WWDC21 10153】基于苹果芯片的图像处理","url":"https://xiaozhuanlan.com/topic/5796308412","recommender":"潘名扬"},{"heading":"\"同播共享\"发布计划的更新","url":"https://developer.apple.com/cn/news/?id=mxaeu6er","recommender":"zvving"},{"heading":"Making efficient use of the libdispatch (GCD) · GitHub","url":"https://gist.github.com/tclementdev/6af616354912b0347cdf6db159c37057","recommender":"Barney"},{"heading":"微信跨平台硬件直播组件","url":"https://mp.weixin.qq.com/s/qK73om3ueP_S6i8qp8hgHQ","recommender":"anotheren"},{"heading":"Creating Custom Parseable Format Styles in iOS 15","url":"https://emptytheory.com/2021/08/14/creating-custom-parseable-format-styles-in-ios-15/","recommender":"AidenRao"},{"heading":"onefetch","url":"https://github.com/o2sh/onefetch","recommender":"EyreFree"},{"heading":"网页 ipa 一键砸壳","url":"https://www.dumpapp.com","recommender":"含笑饮砒霜"},{"heading":"AnyCodable","url":"https://github.com/Flight-School/AnyCodable","recommender":"Smallfly"},{"heading":"Epoxy - Airbnb 声明式 iOS UI 框架开源啦！","url":"https://mp.weixin.qq.com/s/DQ8avDt3pgMxQcb7p3WkwA","recommender":"ChengzhiHuang"},{"heading":"flomo 浮墨笔记","url":null},{"heading":"产品沉思录","url":null}]},{"id":"r-171-2021-08-16","type":"report","title":"老司机 iOS 周报 #171 | 2021-08-16","issue":171,"date":"2021-08-16","year":2021,"path":"Reports/2021/#171-2021.08.16.md","url":"Reports/2021/%23171-2021.08.16.md","excerpt":"线下沙龙：我们正在周报公众号上陆续发布今年杭州场和上海场沙龙的分享文章、PPT 和视频等内容，欢迎大家继续关注（公众号回复杭州即可获取杭州场文章和视频）~；WWDC 21 内参：本周内参更新，1 篇高质量内容已经发布~；iOS 页面渲染 - UIView & CALayer：UIView 所有 iOS 开发想必都接触过，但底下的 CALayer 大家了解就相对偏少，本文适合刚入门的开发者查漏补缺。内容如下：","sections":[{"heading":"线下沙龙","url":null,"recommender":"Parsifal"},{"heading":"WWDC 21 内参","url":"https://xiaozhuanlan.com/wwdc21","recommender":"Parsifal"},{"heading":"iOS 页面渲染 - UIView & CALayer","url":"https://mp.weixin.qq.com/s/ElGEsJoh3Y1-BWlvz1yJ9w","recommender":"ChengzhiHuang"},{"heading":"深入理解 Swift 代码覆盖率","url":"https://mp.weixin.qq.com/s/uKfrC2NB3njzF1JQUt_cbg","recommender":"Parsifal"},{"heading":"Reverse Engineering UIKit to Fix Our Top Crash | PSPDFKit","url":"https://pspdfkit.com/blog/2021/reverse-engineering-uikit/","recommender":"Barney"},{"heading":"听说你想写个 DNS 服务器 - 代理","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486791&idx=1&sn=2695a508ea45e43527875058ad106e6d&chksm=cf55828ff8220b990eb722b4fb149b8cd424133d05646ea7e369ab4597c1e97503714a6f20dd&token=1722840270&lang=zh_CN#rd","recommender":"水水"},{"heading":"深入浅出贝塞尔曲线","url":"https://juejin.cn/post/6995482699037147166","recommender":"Smallfly"},{"heading":"Stack Overflow 2021 开发者调查报告出炉，开发浪潮中的变与不变","url":"https://mp.weixin.qq.com/s/E6R3dXGBa4YzzuekxPMgOw","recommender":"Parsifal"},{"heading":"mxcl/xcodebuild","url":"https://github.com/mxcl/xcodebuild","recommender":"红纸"}]},{"id":"r-170-2021-08-09","type":"report","title":"老司机 iOS 周报 #170 | 2021-08-09","issue":170,"date":"2021-08-09","year":2021,"path":"Reports/2021/#170-2021.08.09.md","url":"Reports/2021/%23170-2021.08.09.md","excerpt":"线下沙龙：我们正在周报公众号上陆续发布今年杭州场和上海场沙龙的分享文章、PPT 和视频等内容，欢迎大家继续关注（公众号回复杭州即可获取杭州场文章和视频）~；WWDC 21 内参：本周内参更新，6 篇高质量内容已经发布~；重要！与苹果工程师一对一咨询的机会~：苹果官方的一对一咨询活动来啦！2021 年 8 月 17 日（周二）举办主题为 “Core ML 和 Create ML 的最新进展及更多”的在线研讨会。本次面向周报读者免费公开报名","sections":[{"heading":"线下沙龙","url":null,"recommender":"Parsifal"},{"heading":"WWDC 21 内参","url":"https://xiaozhuanlan.com/wwdc21","recommender":"Parsifal"},{"heading":"重要！与苹果工程师一对一咨询的机会~","url":"https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491606&idx=1&sn=15026f240a4597922aff0e2786473dfd&chksm=eaa17f1dddd6f60b43344e46cbc04cc8bc1d9c9c7f6c6e924abf5519b0670cee345367132f57&token=2123226571&lang=zh_CN#rd","recommender":"Parsifal"},{"heading":"Flutter (able) 的单例模式 | Flutter 设计模式","url":"https://mp.weixin.qq.com/s/hRvmbRcJlOj5iB1HqvUkog","recommender":"ChengzhiHuang"},{"heading":"脉脉 iOS 如何启动秒开 - 知乎","url":"https://zhuanlan.zhihu.com/p/396550853","recommender":"Barney"},{"heading":"拿去吧你！Flutter 仿自如 App 裸眼 3D 效果","url":"https://juejin.cn/post/6991409083765129229","recommender":"邦Ben"},{"heading":"快手海外 Swift/ObjC 混编与二进制化工程实践","url":"https://mp.weixin.qq.com/s/d-atu1J_gqd3-rM0UXAqbA","recommender":"JonyFang"},{"heading":"浅析快手 iOS 启动优化方式——动态库懒加载","url":"https://mp.weixin.qq.com/s/gNc3uK5ILbXsO8jB1O-jnQ","recommender":"Leo"},{"heading":"StaticString, and how it works internally in Swift","url":"https://swiftrocks.com/staticstring-in-swift","recommender":"Smallfly"},{"heading":"cocoapods-TSPodfileTimeWatch","url":"https://github.com/cxr0715/cocoapods-TSPodfileTimeWatch","recommender":"红纸"}]},{"id":"r-169-2021-08-02","type":"report","title":"老司机 iOS 周报 #169 | 2021-08-02","issue":169,"date":"2021-08-02","year":2021,"path":"Reports/2021/#169-2021.08.02.md","url":"Reports/2021/%23169-2021.08.02.md","excerpt":"线下沙龙：上周四开始，我们已经在周报公众号上开始陆续发布今年杭州场沙龙的分享文章、PPT 和视频等内容了，本周也会继续发布杭州场和上海场的相关内容信息，欢迎大家继续关注~；WWDC 21 内参：本周内参恢复更新，8 篇高质量内容已经发布~；WWDC 21 播客","sections":[{"heading":"线下沙龙","url":null,"recommender":"Parsifal"},{"heading":"WWDC 21 内参","url":"https://xiaozhuanlan.com/wwdc21","recommender":"Parsifal"},{"heading":"WWDC 21 播客","url":null},{"heading":"我写技术文章的一点心得","url":"https://ming1016.github.io/2021/07/24/my-little-idea-about-writing-technical-article/","recommender":"Barney"},{"heading":"基于 Swift 编写严肃脚本工具","url":"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","recommender":"EyreFree"},{"heading":"Calling Hidden/Private API from Swift in Style","url":"https://medium.com/swlh/calling-ios-and-macos-hidden-api-in-style-1a924f244ad1","recommender":"JonyFang"},{"heading":"大家来找茬：记一起 clang 开启 -Oz 选项引发的血案","url":"https://mp.weixin.qq.com/s/1RNsrmUKuxmQa0jPZozE9A","recommender":"Leo"},{"heading":"技术债治理的四条原则","url":"https://insights.thoughtworks.cn/managing-technical-debt/","recommender":"莲叔"},{"heading":"The flutter “const” Keyword demystified.","url":"https://medium.com/flutter-community/the-flutter-const-keyword-demystified-c8d2a2609a80","recommender":"邦Ben"},{"heading":"网易新闻 iOS 工程组件化实践","url":"https://mp.weixin.qq.com/s/mfvbRXEhJBqzhwQbjnuZgw","recommender":"ChengzhiHuang"},{"heading":"美团 App 页面视图可测性改造实践","url":"https://mp.weixin.qq.com/s/YcvFSs-97SpMKjlpj9Dzqg","recommender":"含笑饮砒霜"},{"heading":"面试中 LRU / LFU 的青铜与王者","url":"https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/LRU:LFU_interview.md","recommender":"J_Knight_"},{"heading":"从 WebKit 源码中学习手势处理的高级用法——WKWebView中的手势识别","url":"https://mp.weixin.qq.com/s/pt1nk5z5nK-fPCKqQlP-sg","recommender":"折腾范儿_唯敬"},{"heading":"Xcode 13 Missing Info.plist","url":"https://useyourloaf.com/blog/xcode-13-missing-info.plist/","recommender":"AidenRao"},{"heading":"OpenCombine","url":"https://github.com/OpenCombine/OpenCombine","recommender":"zvving"}]},{"id":"r-168-2021-07-26","type":"report","title":"老司机 iOS 周报 #168 | 2021-07-26","issue":168,"date":"2021-07-26","year":2021,"path":"Reports/2021/#168-2021.07.26.md","url":"Reports/2021/%23168-2021.07.26.md","excerpt":"WWDC 21 内参：老王身体抱恙，停更一周~；干货 | Flutter 控件 CustomScrollView 原理解析及应用实践：CustomScrollView 可以说是 Flutter 开发中一定会用到的一个控件，List，Grid，Sliver 等都是基于 CustomScrollView 实现的，那么如何用好 CustomScrollView 是一个技术活，本文由携程技术产出，从原理上讲解如何更好的；深入理解 WKWebVi","sections":[{"heading":"WWDC 21 内参","url":null},{"heading":"干货 | Flutter 控件 CustomScrollView 原理解析及应用实践","url":"https://mp.weixin.qq.com/s/dF5Id3w_To4aXeXDbUnUjQ","recommender":"CrazyCoderShi"},{"heading":"深入理解 WKWebView（基础篇）—— 聊聊 Cookie 管理那些事","url":"https://mp.weixin.qq.com/s/jZP2DsAa5OV91wdNMw39cA","recommender":"享耳先森"},{"heading":"详解：mach-o 文件如何分析多余的类和方法","url":"https://mp.weixin.qq.com/s/z0eK4cOfvYWFhHl16rGnEg"},{"heading":"iOS 优化 - 瘦身","url":"https://mp.weixin.qq.com/s/wDcYvea5dTq0dh0PBwRu4A","recommender":"Barney"},{"heading":"Mutating and non-mutating Swift contexts","url":"https://www.swiftbysundell.com/articles/mutating-and-nonmutating-swift-contexts/","recommender":"xiaofei86"},{"heading":"Fixing a hard-to-find bug in Dark Mode","url":"https://www.jessesquires.com/blog/2021/07/15/fixing-a-hard-to-find-bug-in-dark-mode/","recommender":"Smallfly"},{"heading":"重磅开源|AOP for Flutter 开发利器——AspectD","url":"https://mp.weixin.qq.com/s/lvP2UFHOG0HrtqMMf7na0g","recommender":"Damien"},{"heading":"听说你想写个 DNS 服务器 - 记录类型扩展","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486727&idx=1&sn=a71ed08275433e15593069e010c31c02&chksm=cf5582cff8220bd96ce28f0dd8874f27064e3999792e6ad25d90a0cf2f56651278495a6927de&token=87205550&lang=zh_CN#rd","recommender":"J_Knight_"},{"heading":"Xcodes.app","url":"https://github.com/RobotsAndPencils/XcodesApp","recommender":"AidenRao"},{"heading":"Flutter 应用内调试工具 UME 开源啦","url":"https://github.com/bytedance/flutter_ume","recommender":"ChengzhiHuang"},{"heading":"GodL/Binder","url":"https://github.com/GodL/Binder","recommender":"JonyFang"},{"heading":"CalendarApp","url":"https://github.com/richardtop/CalendarApp","recommender":"Parsifal"}]},{"id":"r-167-2021-07-19","type":"report","title":"老司机 iOS 周报 #167 | 2021-07-19","issue":167,"date":"2021-07-19","year":2021,"path":"Reports/2021/#167-2021.07.19.md","url":"Reports/2021/%23167-2021.07.19.md","excerpt":"Develop Apps for iOS：苹果官方 iOS 开发教程终于来了，原来苹果没有忘记！此教程预计需阅读 12 小时左右，介绍 Xcode 的基础用法以及如何利用 SwiftUI 和 UIKit 两个框架来开发 iOS 原生 App，渐进式的代码演示，通俗易懂，非常适合初学者。；使用 Swift 提高代码质量：文章首先简单介绍了 Swift 的类型安全等特性，接着列举了一些容易忽略却较为有效的代码实践以及性能优化方案，例如 减少","sections":[{"heading":"Develop Apps for iOS","url":"https://developer.apple.com/tutorials/app-dev-training/","recommender":"EyreFree"},{"heading":"使用 Swift 提高代码质量","url":"https://juejin.cn/post/6984768684250120222","recommender":"ChengzhiHuang"},{"heading":"【WWDC21 10030】高级 Web 内容开发","url":"https://xiaozhuanlan.com/topic/5637428091","recommender":"LittleSmart"},{"heading":"【WWDC21 10053】优秀 Mac Catalyst App 的品质","url":"https://xiaozhuanlan.com/topic/9324781605","recommender":"OneeMe"},{"heading":"【WWDC21 10122】图表的无障碍支持进阶","url":"https://xiaozhuanlan.com/topic/7904561328","recommender":"Ckitakishi"},{"heading":"【WWDC21 10276】使用相机进行键盘输入","url":"https://xiaozhuanlan.com/topic/0281395647","recommender":"LinusLing"},{"heading":"WWDC21 瞎谈：Swift 支棱起来了吗？","url":"https://www.xiaoyuzhoufm.com/episode/60ef7aababf61dc037c4a96a","recommender":"没故事的卓同学"},{"heading":"西瓜客户端埋点实践：基于责任链的埋点框架","url":"https://mp.weixin.qq.com/s/iMn--4FNugtH26G90N1MaQ","recommender":"Barney"},{"heading":"Experience of using VSCode as a Swift IDE","url":"https://forums.swift.org/t/experience-of-using-vscode-as-a-swift-ide/50271","recommender":"Keith"},{"heading":"听说你想写个 DNS 服务器 - 数据包","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486555&idx=1&sn=a1e7e018a549ad155cfad6eb4b135e3e&chksm=cf558393f8220a852fdd90d0919981239d2bbe0266f511ffd27ecbde6e972399b24fdeaec9b8&token=1949232915&lang=zh_CN#rd","recommender":"J_Knight_"},{"heading":"Improving Platform Channel Performance in Flutter","url":"https://medium.com/flutter/improving-platform-channel-performance-in-flutter-e5b4e5df04af","recommender":"Damien"},{"heading":"Hammer","url":"https://github.com/lyft/Hammer","recommender":"Smallfly"}]},{"id":"r-166-2021-07-12","type":"report","title":"老司机 iOS 周报 #166 | 2021-07-12","issue":166,"date":"2021-07-12","year":2021,"path":"Reports/2021/#166-2021.07.12.md","url":"Reports/2021/%23166-2021.07.12.md","excerpt":"线下沙龙：上海场和深圳场也成功举办~：WWDC 系列活动 - WWDC.T 沙龙上海场和深圳场已经在这个周末圆满结束了，感谢上海场的联合主办方字节音乐以及深圳场的联合主办货拉拉技术团队！至此，今年我们与 SwiftGG 一起举办的四场沙龙活动均已拉上帷幕，每场活动都有 4 个不同的讲师分享自己对于移动技术开发的干货见；WWDC 21 内参：线下活动圆满结束，我们内参的更新也已经进入高潮。已经订阅的读者有福啦，本周我们一次性更新了 32 ","sections":[{"heading":"线下沙龙：上海场和深圳场也成功举办~","url":null,"recommender":"Parisfal"},{"heading":"WWDC 21 内参","url":"https://xiaozhuanlan.com/wwdc21","recommender":"Parisfal"},{"heading":"Klee：用 C++ 实现数据驱动开发","url":"https://mp.weixin.qq.com/s/y2700SOPIvETJ-x2BC5q5w","recommender":"Barney"},{"heading":"听说你想写个 Lisp 解释器（下篇）","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486230&idx=1&sn=b11b86685064968edd023851c47a981a&chksm=cf5584def8220dc83ff16b3c2216f555d481735b51c2687c433243953b1515b4cf1a7ab1c806&token=232571047&lang=zh_CN#rd","recommender":"折腾范儿_唯敬"},{"heading":"淘系工程师亲述经历：如何避免成为“技术工具人”？","url":"https://mp.weixin.qq.com/s/qBgEjtcTTVuZsAK6j0SEMw","recommender":"Smallfly"},{"heading":"Swift5.5、DocC、Notifications，苹果 WWDC21 带来的最大技术变化","url":"https://mp.weixin.qq.com/s/jw0R-83z9oCnVoffwy-ykg","recommender":"Damien"},{"heading":"How iOS 15 makes your app launch faster","url":"https://medium.com/geekculture/how-ios-15-makes-your-app-launch-faster-51cf0aa6c520","recommender":"Leo"},{"heading":"深入理解 WKWebView（基础篇）—— WKWebView 加载生命周期与代理方法剖析","url":"https://mp.weixin.qq.com/s/ZFui9IiMTWyLXGKZlbnzwQ","recommender":"享耳先森"},{"heading":"Diffable data source behavior changes and reconfiguring cells in iOS 15","url":"https://www.jessesquires.com/blog/2021/07/08/diffable-data-source-behavior-changes-and-reconfiguring-cells-in-ios-15/","recommender":"老峰"},{"heading":"GitHub Copilot","url":"https://copilot.github.com/"},{"heading":"Pulse","url":"https://github.com/kean/Pulse","recommender":"AidenRao"}]},{"id":"r-165-2021-07-05","type":"report","title":"老司机 iOS 周报 #165 | 2021-07-05","issue":165,"date":"2021-07-05","year":2021,"path":"Reports/2021/#165-2021.07.05.md","url":"Reports/2021/%23165-2021.07.05.md","excerpt":"线下沙龙：杭州场圆满结束！上海场迎来第二波免费门票开放~：WWDC 系列活动 - 淘系技术.T 沙龙杭州专场在上周六下午已经圆满结束了！杭州专场同样邀请到了 4 位国内讲师以及 2 位特邀国外讲师。他们分别是来自手淘终端平台技术的无线开发专家倾寒、来自有赞的移动技术负责人 Jackie、来自抖音创作工具基础架构团队的移动端架构师 Cre；WWDC 21 内参：除了线下沙龙在火热进行，我们内参的更新也如火如荼。已经订阅的读者有福啦，本周我","sections":[{"heading":"线下沙龙：杭州场圆满结束！上海场迎来第二波免费门票开放~","url":null,"recommender":"Parisfal"},{"heading":"WWDC 21 内参","url":"https://xiaozhuanlan.com/wwdc21","recommender":"Parisfal"},{"heading":"在 iOS 客户端上通过 bitcode 为第三方库修复 bug","url":"https://mp.weixin.qq.com/s/BuDnfl1ZbUtiZBhy8_Z7wA","recommender":"JonyFang"},{"heading":"iOS Pod 构建缓存方案","url":"https://mp.weixin.qq.com/s/zWhgpuhq3r799ZYQPMsdFw","recommender":"红纸"},{"heading":"深入理解 WKWebView（入门篇）—— WebKit 源码调试与分析","url":"https://mp.weixin.qq.com/s/VdkVBIQwj7WkAk8-5wppmQ","recommender":"享耳先森"},{"heading":"Swift 并发初步","url":"https://onevcat.com/2021/07/swift-concurrency/","recommender":"zvving"},{"heading":"How Swift runs an async executable","url":"https://oleb.net/2021/async-program-launch-sequence/","recommender":"kemchenj"},{"heading":"世界上第一个浏览器源码","url":"https://github.com/cynthia/WorldWideWeb","recommender":"折腾范儿_唯敬"},{"heading":"VideoLab - 高性能且灵活的 iOS 视频剪辑与特效框架","url":"https://mp.weixin.qq.com/s/duLk1mNLdcqRlfzpnh2LEA","recommender":"anotheren"},{"heading":"“Structured concurrency” with special guest Doug Gregor","url":"https://www.swiftbysundell.com/podcast/99/","recommender":"老驴"}]},{"id":"r-164-2021-06-28","type":"report","title":"老司机 iOS 周报 #164 | 2021-06-28","issue":164,"date":"2021-06-28","year":2021,"path":"Reports/2021/#164-2021.06.28.md","url":"Reports/2021/%23164-2021.06.28.md","excerpt":"【WWDC21 10022】SwiftUI 技术内幕：通过阅读本文，带你一起深入解读 SwiftUI，提高应用程序的性能。；【WWDC21 10267/10268/10269】窥探 Xcode Cloud：CI 已经成为项目开发中必不可少的一个工程环节，同时也是推动团队工程师文化的重要手段。在 WWDC 21， 苹果公司发布了官方的 CI - Xcode Cloud。通过这篇文章，我们一起窥探一下 Xcode Cloud 到底能做什么，","sections":[{"heading":"【WWDC21 10022】SwiftUI 技术内幕","url":"https://xiaozhuanlan.com/topic/0619782354","recommender":"MetaSky"},{"heading":"【WWDC21 10267/10268/10269】窥探 Xcode Cloud","url":"https://xiaozhuanlan.com/topic/7496513820","recommender":"林永坚"},{"heading":"苹果 Apple Watch 国行获国家药品监督管理局医疗器械审批！ECG 移动心电图房颤提示软件过审","url":"https://mp.weixin.qq.com/s/NNHRz-43YCZGo4M54uA6-g","recommender":"Parisfal"},{"heading":"美团民宿跨端复用框架设计与实践","url":"https://mp.weixin.qq.com/s/902BiSBx88rUSWBX64HZqA","recommender":"JonyFang"},{"heading":"Swift 编译器 Crash—Segmentation fault 解决方案","url":"https://mp.weixin.qq.com/s/FSlJKnC0y51nsLDp1B3tXg","recommender":"zvving"},{"heading":"抖音研发效能建设 - CocoaPods 优化实践","url":"https://mp.weixin.qq.com/s/Pt6pcxKCHhdnnWPYrToNvA","recommender":"红纸"},{"heading":"Tagged Pointer对象安全气垫为何会失效","url":"https://juejin.cn/post/6975765788355461133#heading-9","recommender":"Smallfly"},{"heading":"Swift Hook新思路--虚函数表","url":"https://mp.weixin.qq.com/s/mjwOVdPZUlEMgLUNdT6o9g","recommender":"四娘"},{"heading":"SSWG Annual Update 2020","url":"https://forums.swift.org/t/sswg-annual-update-2020/49223","recommender":"xiaofei86"},{"heading":"Surge","url":"https://github.com/Jounce/Surge","recommender":"老峰"}]},{"id":"r-163-2021-06-21","type":"report","title":"老司机 iOS 周报 #163 | 2021-06-21","issue":163,"date":"2021-06-21","year":2021,"path":"Reports/2021/#163-2021.06.21.md","url":"Reports/2021/%23163-2021.06.21.md","excerpt":"【WWDC21 10114】 初见 StoreKit 2：开发过 In-App Purchase 的同学应该都应该体会过被它 生涩难懂的 API、不合理的数据结构、难以处理的掉单 等问题支配过的恐惧。WWDC21 针对 StoreKit 做了一次全新的升级，同时得益于 Swift 的新特性，进一步简化了 API 调用，并带来了诸多新特性；【WWDC21 10101】使用 ReplayKit 记录你的高光时刻：主要介绍了 Apple 为 ","sections":[{"heading":"【WWDC21 10114】 初见 StoreKit 2","url":"https://xiaozhuanlan.com/topic/6138790425","recommender":"黄骋志"},{"heading":"【WWDC21 10101】使用 ReplayKit 记录你的高光时刻","url":"https://xiaozhuanlan.com/topic/1068759324","recommender":"七夜"},{"heading":"【WWDC21 10158】使用 VideoToolbox 探索低延迟视频编码","url":"https://xiaozhuanlan.com/topic/2530964187","recommender":"bqlin"},{"heading":"【WWDC21 10019】在 SwiftUI 中遇见并发编程","url":"https://xiaozhuanlan.com/topic/2957164803","recommender":"Edmond"},{"heading":"【WWDC21 10134】 探索 Swift 结构化并发","url":"https://xiaozhuanlan.com/topic/3625784190","recommender":"SZ"},{"heading":"【WWDC21 10017】为 Swift 和 SwiftUI 带来 Core Data 并发","url":"https://xiaozhuanlan.com/topic/4625791038","recommender":"SZ"},{"heading":"WWDC.<T> 技术沙龙 - 北京地区专场圆满结束","url":null,"recommender":"Parsifal"},{"heading":"Concurrency in Swift 5 and 6","url":"https://forums.swift.org/t/concurrency-in-swift-5-and-6/49337","recommender":"anotheren"},{"heading":"Xcode 工程文件解析","url":"https://mp.weixin.qq.com/s/s5BQznKjSCt84ZLUlco7Vg","recommender":"老峰"},{"heading":"iOS 14.5 如何用 PAC 保护 Objective-C 对象","url":"https://mp.weixin.qq.com/s/VsqnWo6HGQT5LXdulpcaGg","recommender":"AidenRao"},{"heading":"Flutter IM 跨端架构设计和实现","url":"https://mp.weixin.qq.com/s/ftZdQ-0GeMgr6kL9bZLA8w","recommender":"CrazyCoderShi"},{"heading":"从探索到实践，iOS 动态库懒加载实录","url":"https://mp.weixin.qq.com/s/g5FKnOcW6KonqBSW8XO9Jw","recommender":"红纸"},{"heading":"WWDC21 Ultimate application performance survival guide","url":"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/","recommender":"Leo"},{"heading":"Code Signing - iOS 代码段的校验机制分析","url":"https://mp.weixin.qq.com/s/msUwo3YUcfHXkuAp5wRfyQ","recommender":"Smallfly"},{"heading":"听说你想写个 Lisp 解释器","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485878&idx=1&sn=3f1b37ad693bfd2f0da24aab2616aafe&chksm=cf55867ef8220f68719be7f9666675eff677b7922d27155a079f6b15181cfa65c699cfd7e7a8&token=273579944&lang=zh_CN#rd","recommender":"折腾范儿_唯敬"}]},{"id":"r-162-2021-06-07","type":"report","title":"老司机 iOS 周报 #162 | 2021-06-07","issue":162,"date":"2021-06-07","year":2021,"path":"Reports/2021/#162-2021.06.07.md","url":"Reports/2021/%23162-2021.06.07.md","excerpt":"WWDC 21 内参作者招募 & WWDC 20 内参免费领取：伴随着 WWDC 即将开幕，由周报牵头举办的一年一度 WWDC 内参活动也开始了筹备工作。今年我们想尝试从广大读者中也邀请一些对 WWDC 内参编写感兴趣的人一起参与内参的编写。另外，我们所有读者都可以免费领取 WWDC 20 的专栏。不管是想参与 WWDC 21 编辑工作，还是；WWDC.playground by SwiftGG：WWDC 21 将于 6 月 8 日凌晨","sections":[{"heading":"WWDC 21 内参作者招募 & WWDC 20 内参免费领取","url":"https://mp.weixin.qq.com/s/_VdIsQbnnwb1MQUTpAGOyA","recommender":"Parsifal"},{"heading":"WWDC.playground by SwiftGG","url":"https://swift.gg/wwdc/","recommender":"Parsifal"},{"heading":"A Swift developer’s WWDC dreams - 2021 edition","url":"https://www.swiftbysundell.com/articles/a-swift-developers-wwdc-dreams-2021/","recommender":"四娘"},{"heading":"WWDC NOTES","url":"https://wwdcnotes.com/","recommender":"老峰"},{"heading":"Dart 里的类型系统","url":"https://mp.weixin.qq.com/s/aBOUm6E1CXGl-GyKP94TeA","recommender":"邦Ben"},{"heading":"无埋点核心技术：iOS Hook 在字节的实践经验","url":"https://juejin.cn/post/6968275950786215944?utm_source=gold_browser_extension#heading-0","recommender":"JonyFang"},{"heading":"字节小哥带你揭秘 Dart VM 魔术盒","url":"https://juejin.cn/post/6960932663095984136","recommender":"Damien"},{"heading":"Adding Swift Code as Custom LLDB Command","url":"https://swiftsenpai.com/testing/add-custom-lldb/","recommender":"含笑饮砒霜"},{"heading":"Insidious Bugs #3: Apple App Site Association File Identifiers","url":"https://lickability.com/blog/insidious-bugs-number-3-apple-app-site-association-file/","recommender":"Smallfly"},{"heading":"What's new in Swift 5.5?","url":"https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5","recommender":"AidenRao"},{"heading":"听说你想写个 React","url":null},{"heading":"论证：iOS 安全性，为什么需要审核？","url":"https://juejin.cn/post/6967199105541996575","recommender":"anotheren"},{"heading":"揭秘苹果应用审核团队（史上最全版）","url":"https://juejin.cn/post/6970363897668698148/","recommender":"Parsifal"},{"heading":"面试过 500+ 位候选人之后，想谈谈面试官视角的一些期待","url":"https://mp.weixin.qq.com/s/XNv3rYRJvv4N7Xaw-c5ZsA","recommender":"莲叔"},{"heading":"手把手教你 Debug — iOS 14 ImageIO Crash 分析","url":"https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247488918&idx=1&sn=9d3f19288191569d4cdf4a6dcef80270&chksm=e9d0de74dea75762b0b77ccd20f0f50d7b42ba9ca847490f5a22decbd950ebe79b48d8e16c8e&scene=0&xtrack=1#rd","recommender":"水水"},{"heading":"XD to Flutter 2.0 现已发布！","url":"https://mp.weixin.qq.com/s/VWSzeQb_pV9EWXqdWuu51A","recommender":"极速男孩"},{"heading":"AirTag 有用，但不是完全有用","url":"https://www.xiaoyuzhoufm.com/episode/60b419020013dcfe5cf0d581","recommender":"没故事的卓同学"}]},{"id":"r-161-2021-05-31","type":"report","title":"老司机 iOS 周报 #161 | 2021-05-31","issue":161,"date":"2021-05-31","year":2021,"path":"Reports/2021/#161-2021.05.31.md","url":"Reports/2021/%23161-2021.05.31.md","excerpt":"Flutter 2.2 发布：Google I/O 2021 大会上， Flutter 2.2正式发布，号称是迄今为止最出色的 Flutter 版本。在稳定版和预览版均有不少新特性发布: - 稳定版： - Dart 2.13 - Flutter web 更新 - iOS 页面转场和增量式安装 - 更多 Mat；A站 的 Swift 实践 —— 下篇：经过不断迭代，Swift 如今已成 iOS 乃至苹果全平台首选开发语言，A 站也已经完全","sections":[{"heading":"Flutter 2.2 发布","url":"https://mp.weixin.qq.com/s/_btkqmzWMeZLlL4UdhtUhw","recommender":"CrazyCoderShi"},{"heading":"A站 的 Swift 实践 —— 下篇","url":"https://mp.weixin.qq.com/s/EIPHLdxBMb5MiRDDfxzJtA","recommender":"xiaofei86"},{"heading":"SwiftUI @ Netflix：推动新技术落地是怎样一种体验？","url":"https://mp.weixin.qq.com/s/oRPRCx78owLe3_gROYapCw","recommender":"zvving"},{"heading":"源码级调试 App Store 包","url":"https://blog.indigo.codes/2021/05/23/debug-your-app-store-app/","recommender":"Smallfly"},{"heading":"正经分析iOS包大小优化","url":"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","recommender":"J_Knight_"},{"heading":"一种使用 CocoaPods 同步 Git hooks 的方案","url":"https://dirtmelon.github.io/posts/cocoapods-sync-githooks/","recommender":"四娘"},{"heading":"iOS优雅实现Pipeline设计模式","url":"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","recommender":"JonyFang"},{"heading":"How to scan a credit card using Apple Vision and VisionKit natively in iOS Swift with SwiftUI and UIKit","url":"https://khalidasad93.medium.com/how-to-scan-a-credit-card-using-apple-vision-and-visionkit-natively-in-ios-swift-with-swiftui-and-247fa0863141","recommender":"红纸"}]},{"id":"r-160-2021-05-24","type":"report","title":"老司机 iOS 周报 #160 | 2021-05-24","issue":160,"date":"2021-05-24","year":2021,"path":"Reports/2021/#160-2021.05.24.md","url":"Reports/2021/%23160-2021.05.24.md","excerpt":"周报公众号新增关键词自动回复：公众号后台不时都有读者发送一些希望查询检索的词语，为此我们根据“个人经验”设置了几条较常见的内容，并配上对应的 GitHub 检索页面和可能有的专辑链接。已经设置的关键词有 招聘、flutter、swift、webview、swiftui、性能优化和 IAP 等。；周报公众号代发内推信息事宜：目前客户端，尤其是 iOS 岗位，都比较缺乏高级工程师，理解各位招聘负责人的不容易。所以周报目前是友情代发招聘信息不","sections":[{"heading":"周报公众号新增关键词自动回复","url":null,"recommender":"Parsifal"},{"heading":"周报公众号代发内推信息事宜","url":null,"recommender":"Parsifal"},{"heading":"Flutter 2.0 iOS 包大小优化","url":"https://juejin.cn/post/6959811895645700132/","recommender":"邦Ben"},{"heading":"iOS 极致速度优化：快速打开任意 APP 的设置界面","url":"https://mp.weixin.qq.com/s/DpLy_o3wMpZauiPnU1aSBw","recommender":"含笑饮砒霜"},{"heading":"探索微信聊天 UI 逻辑实现","url":"https://everettjf.github.io/2016/06/19/reverse-explore-wechat-message-design/","recommender":"zvving"},{"heading":"普通技术人的成长路径 - 一位客户端老兵的经验之谈","url":"https://mp.weixin.qq.com/s/IrSQyyc0J3SXBuWs9M3SYA","recommender":"折腾范儿_唯敬"},{"heading":"【译】SE-0306 Actors","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/2792","recommender":"四娘"},{"heading":"越狱 iOS app 砸壳这件事儿","url":"https://mp.weixin.qq.com/s/xFHA2tlc6HCLti_ihlrsZA","recommender":"Damien"},{"heading":"UIImageColorRatio","url":"https://github.com/623637646/UIImageColorRatio","recommender":"水水"}]},{"id":"r-159-2021-05-17","type":"report","title":"老司机 iOS 周报 #159 | 2021-05-17","issue":159,"date":"2021-05-17","year":2021,"path":"Reports/2021/#159-2021.05.17.md","url":"Reports/2021/%23159-2021.05.17.md","excerpt":"Announcing the Swift Mentorship Program：知识小集：近日，Swift 官方针对 Swift 社区的新贡献者，发布了 Swift 导师计划。这一计划旨在为成为 Swift 项目积极开源贡献者的开发人员提供帮助与支持，同时可以获得社区中经验丰富的贡献者的直接指导。 > > 参与计划的每位开发者都有机会与 Swift 社区中经；LLVM Link Time Optimization：Link Time O","sections":[{"heading":"Announcing the Swift Mentorship Program","url":"https://swift.org/blog/swift-mentorship-program/"},{"heading":"LLVM Link Time Optimization","url":"https://mp.weixin.qq.com/s/Th1C3_pVES6Km6A7isgYGw","recommender":"Leo"},{"heading":"XD to Flutter 2.0 现已发布","url":"https://mp.weixin.qq.com/s/VWSzeQb_pV9EWXqdWuu51A","recommender":"CrazyCoderShi"},{"heading":"A站 的 Swift 实践 —— 上篇","url":"https://mp.weixin.qq.com/s/rUZ8RwhWf4DWAa5YHHynsQ","recommender":"xiaofei86"},{"heading":"自由、开源及其敌人 —— RMS事件簿","url":"https://mp.weixin.qq.com/s/Q3DDYYiGbJJREii7ZPBuMg","recommender":"zvving"},{"heading":"Monitoring for iOS with MetricKit: Getting Started","url":"https://www.raywenderlich.com/20952676-monitoring-for-ios-with-metrickit-getting-started/","recommender":"J_Knight_"},{"heading":"Flutter 状态管理: 使用 MobX","url":"https://mp.weixin.qq.com/s/ken-UT3cmxc5aeWKkM-Lzg","recommender":"Damien"},{"heading":"SwiftUI-Hooks","url":"https://github.com/ra1028/SwiftUI-Hooks","recommender":"AidenRao"},{"heading":"Animatable - 使用 PropertyWrapper 实现动画代码复用","url":"https://github.com/GodL/Animatable","recommender":"享耳先森"},{"heading":"OverlayContainer","url":"https://github.com/applidium/OverlayContainer","recommender":"JonyFang"},{"heading":"SwiftRegexDSL","url":"https://github.com/kodlian/SwiftRegexDSL","recommender":"老峰"}]},{"id":"r-158-2021-05-10","type":"report","title":"老司机 iOS 周报 #158 | 2021-05-10","issue":158,"date":"2021-05-10","year":2021,"path":"Reports/2021/#158-2021.05.10.md","url":"Reports/2021/%23158-2021.05.10.md","excerpt":"周报开通视频号了！：号外号外！！周报编辑组正式开通微信视频号了！为了丰富我们的内容形式，更好地将优质知识传递给大家，我们接下来也会尝试不同的方法。WWDC 2021 临近，我们今年也在考虑更多样化的『WWDC 内参』活动，关注视频号，或许 6 月有惊喜哦（开通直播服务需要 1000+ 粉丝，希望大家；swift-5-4-released：五一长假前 Apple 随 Xcode 12.5 一起发布了 Swift 5.4 版，除 等新特性外","sections":[{"heading":"周报开通视频号了！","url":null,"recommender":"Parsifal"},{"heading":"swift-5-4-released","url":"https://swift.org/blog/swift-5-4-released/","recommender":"享耳先森"},{"heading":"美团做 React Native 性能优化的三个关键点","url":"https://mp.weixin.qq.com/s/2D2l7NF0kmwAkfCI_PbZug","recommender":"looping"},{"heading":"解读 Flutter 中热重载原理","url":"https://mp.weixin.qq.com/s/Rd03kZLr26AJGcW2RXZc3w","recommender":"Parsifal"},{"heading":"干货 | 携程火车票 Flutter 最佳实践","url":"https://mp.weixin.qq.com/s/VP6WEQkEel3W4tdo3ThYDw","recommender":"CrazyCoderShi"},{"heading":"听说你想写个渲染引擎（布局树 + 绘制）","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485323&idx=1&sn=af965b57deaa2aabdd990348f7aa09ce&chksm=cf558843f822015544defa0c6af508642c840fc53f418c80d37b1af9b0018144b5139d6162f5&token=1028691144&lang=zh_CN#rd","recommender":"xiaofei86"},{"heading":"How OrderedSet works","url":"https://oleb.net/2021/ordered-set/","recommender":"四娘"},{"heading":"GetX","url":"https://github.com/jonataslaw/getx","recommender":"Damienn"},{"heading":"ResponderChain","url":"https://github.com/GodL/ResponderChain","recommender":"红纸"},{"heading":"GGTalk | 某 C：两年前从合肥去广州，两年后从广州回合肥，我为什么放弃一线城市和一线大厂","url":"https://www.xiaoyuzhoufm.com/episode/6087ff41d99c5b06d55584f7?s=eyJ1IjoiNWU3ZDRiZTBhMmYyZTUwM2NlYzQzZTM3IiwiZCI6MX0%3D","recommender":"含笑饮砒霜"}]},{"id":"r-157-2021-04-26","type":"report","title":"老司机 iOS 周报 #157 | 2021-04-26","issue":157,"date":"2021-04-26","year":2021,"path":"Reports/2021/#157-2021.04.26.md","url":"Reports/2021/%23157-2021.04.26.md","excerpt":"使用 Xcode 12 和 iOS 14 SDK 提交更新：自 2021 年 4 月 26 日起，所有提交至 App Store 的 iPhone 和 iPad app 都必须使用 Xcode 12 和 iOS 14 SDK 或更高版本来构建。另外，这两天有部分读者表示 iTunes Connect 网站使用异常，其实苹果在 WWDC 2；WWDC 2021 Swift Student Challenge Submissions：一年一","sections":[{"heading":"使用 Xcode 12 和 iOS 14 SDK 提交更新","url":"https://developer.apple.com/cn/news/?id=ib31uj1j","recommender":"Parsifal"},{"heading":"WWDC 2021 Swift Student Challenge Submissions","url":"https://wwdc.github.io/2021/","recommender":"Damien"},{"heading":"Swift 2021 生态调研报告","url":"https://mp.weixin.qq.com/s/5SXAozM2c6Ivyzl7B9IfQQ","recommender":"JonyFang"},{"heading":"基于 Flutter 的 Web 渲染引擎「北海」正式开源","url":"https://mp.weixin.qq.com/s/tnHbceedNsoKgMrgoTyyuA","recommender":"CrazyCoderShi"},{"heading":"Why Swift closures are not Equatable","url":"https://www.jessesquires.com/blog/2021/04/05/why-swift-closures-are-not-equatable/","recommender":"极速男孩"},{"heading":"开源神器：可快速在 iOS 设备上安装 Windows、Linux 等操作系统！","url":"https://mp.weixin.qq.com/s/Q8CvdNBnpoLow98MM1MZ1g","recommender":"老驴"},{"heading":"Getting Ready for App Tracking Transparency","url":"https://swiftsenpai.com/development/get-ready-apptrackingtransparency/","recommender":"老峰"},{"heading":"Every SwiftUI protocol explained","url":"https://www.fivestars.blog/articles/swiftui-protocols/","recommender":"AidenRao"},{"heading":"GitHub 缓存加速网站：GitClone","url":"https://gitclone.com/","recommender":"J_Knight_"},{"heading":"ExposureKit","url":"https://github.com/623637646/ExposureKit","recommender":"红纸"}]},{"id":"r-156-2021-04-19","type":"report","title":"老司机 iOS 周报 #156 | 2021-04-19","issue":156,"date":"2021-04-19","year":2021,"path":"Reports/2021/#156-2021.04.19.md","url":"Reports/2021/%23156-2021.04.19.md","excerpt":"为 AppTrackingTransparency 做好准备：iOS 14.5 已经公开测试很长一段时间了，现在到了第八个 Beta 版本。根据目前各方面信息来看，iOS 14.5 很可能在 4 月份正式发布。iOS 14 开始苹果便在和开发者强调新的隐私跟踪策略管理方式，而这个措施即将随着 iOS 14.5 的发布正式实施。新的 ATT ；Wakeup in XNU：APP 异常退出的原因有很多种，大家比较熟悉的是 Crash 和 O","sections":[{"heading":"为 AppTrackingTransparency 做好准备","url":"https://developer.apple.com/cn/news/?id=8h0btjq7","recommender":"Parsifal"},{"heading":"Wakeup in XNU","url":"https://mp.weixin.qq.com/s/8OBAmyCLa6_eFYqIJgoCQw","recommender":"Leo"},{"heading":"哈啰出行 iOS App 首屏秒开优化","url":"https://mp.weixin.qq.com/s/5Ez2BrsyBgQ8aHZqlYtAjg","recommender":"JonyFang"},{"heading":"干货 | 减少 50% 空间，携程机票 React Native Bundle 分析与优化","url":"https://mp.weixin.qq.com/s/aajdqmpCLKvGaokL4Qp1tg","recommender":"looping"},{"heading":"深度解读便利蜂 React Native 多版本共存的平滑升级实践","url":"https://mp.weixin.qq.com/s/q296ppm6iB9cou5ZgBytrg","recommender":"Damien"},{"heading":"极致首帧播放方案 - 零首帧解决方案","url":"https://mp.weixin.qq.com/s/IGA3caeXMB-upTFiV8MuYg","recommender":"anotheren"},{"heading":"听说你想写个渲染引擎（css 解析 + 样式树）","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd","recommender":"xiaofei86"},{"heading":"抖音 iOS 工程架构演进","url":"https://mp.weixin.qq.com/s/HHH5_IEbsR8iSmXSIdeutw","recommender":"含笑饮砒霜"},{"heading":"软件幻灭（译）","url":"https://tonsky.me/blog/disenchantment/zh/","recommender":"老驴"},{"heading":"Swift 的一次函数式之旅","url":"https://mp.weixin.qq.com/s/yiF0NwXffrkunGOieWbIRA","recommender":"莲叔"},{"heading":"Nuke Docs","url":"https://kean.blog/post/nuke-docs","recommender":"老驴"}]},{"id":"r-155-2021-04-12","type":"report","title":"老司机 iOS 周报 #155 | 2021-04-12","issue":155,"date":"2021-04-12","year":2021,"path":"Reports/2021/#155-2021.04.12.md","url":"Reports/2021/%23155-2021.04.12.md","excerpt":"Introducing Swift Collections：上周，Swift 官方发布了一个新的开源库 Swift Collections，它专注于扩展可用的 Swift 数据结构集。我们都知道目前 Swift 标准库实现了三种最基本的通用数据结构：数组、集合和字典，但很多时候为了更高效地解决问题，开发者们往往需要借助一些其他的数据结构。；iOS 恢复调用栈(适配 iOS 14)：逆向的时候，如果调用栈是符号化的能大幅提高效率。作者详细","sections":[{"heading":"Introducing Swift Collections","url":"https://swift.org/blog/swift-collections/","recommender":"EyreFree"},{"heading":"iOS 恢复调用栈(适配 iOS 14)","url":"https://iosre.com/t/ios-ios14/19332","recommender":"Leo"},{"heading":"clang 源码导读（8）：词法分析和预处理指令","url":"https://mp.weixin.qq.com/s/zzDS0mnNSyuRwpdcUR6obg","recommender":"JonyFang"},{"heading":"看不懂学不会没有用的计算几何","url":"https://juejin.cn/collection/6913090306690777102","recommender":"Parsifal"},{"heading":"从 Objective-C 和 Swift 看字典的性能优化（1）","url":"https://mp.weixin.qq.com/s?__biz=MzAxMzk0OTg5MQ==&mid=2247485326&idx=1&sn=5b4dc0528da22b90a701fb249c2b4f44&chksm=9b9b8922acec00341388a8a686c3bb83475f1de338925b8c35957b7fc45ba38a3d32051d2dd1&scene=178&cur_album_id=1742555951460597762#rd","recommender":"AidenRao"},{"heading":"Exploring some of the lesser-known, built-in Formatter types","url":"https://www.swiftbysundell.com/articles/exploring-some-of-the-lesser-known-formatter-types/","recommender":"享耳先森"},{"heading":"DWARF文件初探——提取轻量符号表","url":"https://mp.weixin.qq.com/s/s8iwQLNtla5nxF_Tmj2wJg","recommender":"红纸"},{"heading":"EmbeddedScrollView","url":"https://github.com/623637646/EmbeddedScrollView","recommender":"老峰"}]},{"id":"r-154-2021-04-06","type":"report","title":"老司机 iOS 周报 #154 | 2021-04-06","issue":154,"date":"2021-04-06","year":2021,"path":"Reports/2021/#154-2021.04.06.md","url":"Reports/2021/%23154-2021.04.06.md","excerpt":"WWDC21 再度采用完全在线形式：第三十二届全球开发者大会 WWDC 将于 6 月 7 日至 11 日举行，并再度采用完全在线形式。届时将有 iOS 15、iPadOS 15、watchOS 8、macOS 11、tvOS 15 等系统将正式推出。；Flutter Boost3.0 初探：flutterboost 几乎已经成为混合开发下的标配三方组件，由闲鱼出品，本次 flutterboost 进行了 3.0 版本的升级更新，解决了很","sections":[{"heading":"WWDC21 再度采用完全在线形式","url":"https://developer.apple.com/wwdc21/","recommender":"Parsifal"},{"heading":"Flutter Boost3.0 初探","url":"https://mp.weixin.qq.com/s/49h8FVPhnJSHo2brR0K9zw","recommender":"CrazyCoderShi"},{"heading":"Concurrency Done Right","url":"https://kean.blog/post/concurrency","recommender":"四娘"},{"heading":"SwiftUI 中的 Text 插值和本地化","url":"https://onevcat.com/2021/03/swiftui-text-1/","recommender":"zvving"},{"heading":"听说你想写个渲染引擎","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd","recommender":"xiaofei86"},{"heading":"How I Created a DSL for Diffable Section Snapshot using Result Builders","url":"https://swiftsenpai.com/swift/section-snapshot-builder/","recommender":"Damien"},{"heading":"Xcode-Tips","url":"https://github.com/Xcode-Tips/xcode-tips.github.io","recommender":"老峰"},{"heading":"Unsafe memory pointers in Swift","url":"https://theswiftdev.com/unsafe-memory-pointers-in-swift/","recommender":"zvving"},{"heading":"swiftui-animation-library","url":"https://github.com/amosgyamfi/swiftui-animation-library","recommender":"Damien"},{"heading":"FuzzyFind","url":"https://github.com/truizlop/FuzzyFind","recommender":"含笑饮砒霜"}]},{"id":"r-153-2021-03-29","type":"report","title":"老司机 iOS 周报 #153 | 2021-03-29","issue":153,"date":"2021-03-29","year":2021,"path":"Reports/2021/#153-2021.03.29.md","url":"Reports/2021/%23153-2021.03.29.md","excerpt":"IGListKit 源码解析系列 5 篇：IGListKit 源码解析系列，共分为 5 篇。依次简介下每篇的概要内容：；Flutter 2.0 下混合开发浅析：Flutter 的混合开发大多借助 flutter_boost 等三方库来完成， Flutter 2.0 给了我们更多的选择: FlutterEngineGroup。本文详细讲解了 FlutterEngineGroup 下的混合开发，强烈推荐。；Flutter Web 在美团外卖","sections":[{"heading":"IGListKit 源码解析系列 5 篇","url":"https://dirtmelon.github.io/posts/iglistkit-first/","recommender":"JonyFang"},{"heading":"Flutter 2.0 下混合开发浅析","url":"https://mp.weixin.qq.com/s/cX-PZZ1FqQm582JwVNm8Zg","recommender":"CrazyCoderShi"},{"heading":"Flutter Web 在美团外卖的实践","url":"https://mp.weixin.qq.com/s/GjFC5_85pIk9EbKPJXZsXg","recommender":"极速男孩"},{"heading":"全局开启 iOS / mac 的 WebView 调试","url":"https://mp.weixin.qq.com/s/bNKxQaVrPaXsZ5BPbsXy7w","recommender":"AidenRao"},{"heading":"如何编写高性能的 Swift 代码","url":"https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst","recommender":"四娘"},{"heading":"Frameworks: embed or not embed that's the question","url":"https://holyswift.app/frameworks-embed-or-not-embed-thats-the-question","recommender":"红纸"},{"heading":"对于移动开发，人工智能的到来意味着什么？","url":"https://mp.weixin.qq.com/s/Nt16lD-0KCpeC5ZEwxziQw","recommender":"莲叔"},{"heading":"iOS 基于 PGO 优化启动时间","url":"https://juejin.cn/post/6942365945990447111","recommender":"Leo"},{"heading":"SwiftUI 中的 Text 插值和本地化","url":"https://onevcat.com/2021/03/swiftui-text-1/","recommender":"zvving"},{"heading":"isowords","url":"https://github.com/pointfreeco/isowords","recommender":"老峰"},{"heading":"iOS Crash Dump Analysis, Second Edition","url":"https://github.com/faisalmemon/ios-crash-dump-analysis-book","recommender":"Parsifal"}]},{"id":"r-152-2021-03-22","type":"report","title":"老司机 iOS 周报 #152 | 2021-03-22","issue":152,"date":"2021-03-22","year":2021,"path":"Reports/2021/#152-2021.03.22.md","url":"Reports/2021/%23152-2021.03.22.md","excerpt":"Swift 5.5 Release Process：Swift 社区释出了 Swift 5.5 的发布计划，这意味着随 WWDC21 发布的将是 5.5 而不是 6.0，不过好消息是大家期待已久的 async/await 将随 5.5 一起发布。；Swift LibHunt - Discover popular and related Swift open-source projects：LibHunt 是一个跟踪开源项目和软件库的网站","sections":[{"heading":"Swift 5.5 Release Process","url":"https://forums.swift.org/t/swift-5-5-release-process/45644","recommender":"享耳先森"},{"heading":"Swift LibHunt - Discover popular and related Swift open-source projects","url":"https://www.libhunt.com/l/swift","recommender":"EyreFree"},{"heading":"Swift 5.4 新特性","url":"https://mp.weixin.qq.com/s/p6oeWwcgJJFqP2NgYaJXYw","recommender":"四娘"},{"heading":"从底层分析一下存在跨进程通信问题的 NSUserDefaults 还能用吗","url":"https://mp.weixin.qq.com/s/Y1AHFN1kJ9kCjXdFOnUviA","recommender":"含笑饮砒霜"},{"heading":"clang 源码导读系列 6 篇","url":"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","recommender":"JonyFang"},{"heading":"Flutter 正在被悄悄放弃吗？","url":"https://mp.weixin.qq.com/s/hDjbMSPNz_D5JeEBMEJZCA","recommender":"CrazyCoderShi"},{"heading":"iOS 稳定性问题治理：卡死崩溃监控原理及最佳实践","url":"https://mp.weixin.qq.com/s/cEfIZGtUojKKbhIfUyhTMw","recommender":"J_Knight_"},{"heading":"Be careful with Obj-C bridging in Swift？","url":"https://swiftrocks.com/be-careful-with-objc-bridging-in-swift","recommender":"Damien"},{"heading":"github1s","url":"https://github.com/conwnet/github1s","recommender":"Parsifal"},{"heading":"FVM 愉快的切换 Flutter 版本，强烈推荐！","url":"https://juejin.cn/post/6919469825547272205","recommender":"邦Ben"}]},{"id":"r-151-2021-03-15","type":"report","title":"老司机 iOS 周报 #151 | 2021-03-15","issue":151,"date":"2021-03-15","year":2021,"path":"Reports/2021/#151-2021.03.15.md","url":"Reports/2021/%23151-2021.03.15.md","excerpt":"内存管理设计精要：在早些年的 iOS 开发中，当一个 App 的内存使用大于 20m 的时候，就会收到系统的 Memory Warning，所以过去开发应用时候，也会基于此做一些优化。虽然近几年随着新机型性能的不断提升，内存越来越大，早已不再受 20m 的限制， 但是，相比于磁盘，内存依然可以算相；How Uber Deals with Large iOS App Size：根据 Uber 的统计，当 App 大小超过 AppStore","sections":[{"heading":"内存管理设计精要","url":"https://draveness.me//system-design-memory-management"},{"heading":"How Uber Deals with Large iOS App Size","url":"https://eng.uber.com/how-uber-deals-with-large-ios-app-size/","recommender":"xiaofei86"},{"heading":"【译】SE-0296 Async/await","url":"https://kemchenj.github.io/2021-03-06/","recommender":"zvving"},{"heading":"Crash 堆栈竟然无法解析？","url":"https://mp.weixin.qq.com/s/tOdu6GJW-jdWcce1xYgcww","recommender":"水水"},{"heading":"闲鱼 UI 快速变形利器--擎天柱","url":"https://mp.weixin.qq.com/s/QnUVFX6dJzDRac1SsjhSmA","recommender":"含笑饮砒霜"},{"heading":"Molinillo 依赖校验","url":"https://mp.weixin.qq.com/s/Kux4B4piqR43RLwiHRcHUQ","recommender":"红纸"},{"heading":"如何监控 iOS 的启动耗时","url":"https://mp.weixin.qq.com/s/mxQpsenciOu9Qw9q-VTNyg","recommender":"JonyFang"},{"heading":"HotReloading","url":"https://github.com/johnno1962/HotReloading","recommender":"EyreFree"},{"heading":"Swift for Tensorflow","url":"https://github.com/tensorflow/swift","recommender":"莲叔"},{"heading":"swift-benchmark","url":"https://github.com/google/swift-benchmark","recommender":"老峰"}]},{"id":"r-150-2021-03-08","type":"report","title":"老司机 iOS 周报 #150 | 2021-03-08","issue":150,"date":"2021-03-08","year":2021,"path":"Reports/2021/#150-2021.03.08.md","url":"Reports/2021/%23150-2021.03.08.md","excerpt":"Flutter 2 正式发布：Flutter 2 发布了，这次 Flutter 团队为大家带来了成吨的新功能以及更稳定的性能。通过 Flutter 2，你可以使用相同的代码库为五种操作系统构建原生应用: iOS、Android、Windows、macOS 和 Linux；以及为 Chrome、Firefox、；从预编译的角度理解 Swift 与 Objective-C 及混编机制：相信不少 iOSer 对于编译器如何将你的源码编译成可执","sections":[{"heading":"Flutter 2 正式发布","url":"https://mp.weixin.qq.com/s/tJe2ScLgKWFTybpBtDl2TA","recommender":"CrazyCoderShi"},{"heading":"从预编译的角度理解 Swift 与 Objective-C 及混编机制","url":"https://mp.weixin.qq.com/s/gI9vL1KlHuMzMoWWf2tnIw","recommender":"享耳先森"},{"heading":"深入剖析 JavaScript 编译器/解释器引擎 QuickJS - 多了解些 JavaScript 语言","url":"https://mp.weixin.qq.com/s/sKP1Svn8r8z_VEIlbUcxTg","recommender":"JonyFang"},{"heading":"Hacking native ARM64 binaries to run on the iOS Simulator","url":"https://bogo.wtf/arm64-to-sim.html","recommender":"老驴"},{"heading":"How Apple’s Upcoming Two-Step/Two-Factor Enforcement Could Affect Your fastlane Experience","url":"https://www.joshholtz.com/blog/2021/02/17/apples-2fa-with-fastlane.html","recommender":"极速男孩"},{"heading":"XCFrameworks caveats","url":"https://kean.blog/post/xcframeworks-caveats","recommender":"Damien"},{"heading":"在线教室 iOS 端声音问题综合解决方案","url":"https://mp.weixin.qq.com/s/yFNb0zvPtEjHAtED7-jT0w","recommender":"AidenRao"},{"heading":"函数节流（Throttle）和防抖（Debounce）解析及其iOS实现","url":"https://juejin.cn/post/6933952291142074376","recommender":"含笑饮砒霜"},{"heading":"Apple M1X benchmark leak","url":"https://www.cpu-monkey.com/en/compare_cpu-apple_m1x-1898-vs-apple_m1-1804","recommender":"老驴"},{"heading":"AR_100Days","url":"https://github.com/satoshi0212/AR_100Days","recommender":"老峰"}]},{"id":"r-149-2021-03-01","type":"report","title":"老司机 iOS 周报 #149 | 2021-03-01","issue":149,"date":"2021-03-01","year":2021,"path":"Reports/2021/#149-2021.03.01.md","url":"Reports/2021/%23149-2021.03.01.md","excerpt":"一款可让大型 iOS 工程编译速度提升 50% 的工具：本文介绍了美团平台自研的一款 cocoapods 插件 ，该插件以 Header Map 技术为基础，进一步提升代码的编译速度，完善头文件的搜索机制，通过该插件可以大幅提升 iOS 工程代码的编译速度。文章前半部分主要介绍相关的原理，后面主要阐述在工程层面的实践，希望能给从事相关；Flutter 路由我定：Flutter 1.22 的版本更新了路由库, 目前最新的是 Navigat","sections":[{"heading":"一款可让大型 iOS 工程编译速度提升 50% 的工具","url":"https://mp.weixin.qq.com/s/uBpkelG8q_xmskWPYyWONA","recommender":"JonyFang"},{"heading":"Flutter 路由我定","url":"https://juejin.cn/post/6932115520405635079","recommender":"CrazyCoderShi"},{"heading":"Is Apple Banning Free Analytics SDKs?","url":"https://steamclock.com/blog/2021/02/apple-tracking-analytics-sdks/","recommender":"享耳先森"},{"heading":"Universal Links 新鮮事","url":"https://medium.com/zrealm-ios-dev/universal-links-%E6%96%B0%E9%AE%AE%E4%BA%8B-12c5026da33d","recommender":"红纸"},{"heading":"飞猪 Flutter 技术演进及业务改造实践","url":"https://mp.weixin.qq.com/s/08EK76jn-zkqS9flbrAbRA","recommender":"邦Ben"},{"heading":"听说你想写个虚拟机（四）？","url":"https://mp.weixin.qq.com/s/LHHDlhbuAMe8J6T3SPSaVg","recommender":"Leo"},{"heading":"gRPC Swift 1.0.0","url":"https://github.com/grpc/grpc-swift/releases/tag/1.0.0","recommender":"EyreFree"},{"heading":"stream-chat-swift","url":"https://github.com/getstream/stream-chat-swift/","recommender":"AidenRao"},{"heading":"EasySwiftHook","url":"https://github.com/623637646/SwiftHook","recommender":"zvving"},{"heading":"ScheduledNotificationsViewController","url":"https://github.com/nicephoton/ScheduledNotificationsViewController","recommender":"老峰"}]},{"id":"r-148-2021-02-08","type":"report","title":"老司机 iOS 周报 #148 | 2020-02-08","issue":148,"date":"2021-02-08","year":2021,"path":"Reports/2021/#148-2021.02.08.md","url":"Reports/2021/%23148-2021.02.08.md","excerpt":"今日头条 iOS 安装包大小优化 - 新阶段、新实践：随着业务的发展，App 包大小也会水涨船高，为了更好的用户体验，减少用户等待时间，如何减少包大小是 App 各项优化指标中重要的一环。经过三年的发展，今日头条平台架构为我们带来更多的优化包大小手段：；图解 fishhook 原理：这是一篇目前非常不错的详解 fishhook 的文章，通过图文配合的方式来详细解释 fishhook 的原理。本文讲述 fishhook 所涉及到的最小知识","sections":[{"heading":"今日头条 iOS 安装包大小优化 - 新阶段、新实践","url":"https://mp.weixin.qq.com/s/oyqAa8wKdioI5ZDG5LjkfA","recommender":"Damien"},{"heading":"图解 fishhook 原理","url":"https://mp.weixin.qq.com/s/dcQrR4knN0aGDPy2hsrgmg","recommender":"老驴"},{"heading":"iOS 证书幕后原理","url":"http://chuquan.me/2020/03/22/ios-certificate-principle/","recommender":"AidenRao"},{"heading":"听说你想写个虚拟机（二）？","url":"https://mp.weixin.qq.com/s/m-gimtsk-cYQz-kQS-W26w","recommender":"Leo"},{"heading":"AVPlayer 實踐本地 Cache 功能大全","url":"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","recommender":"J_Knight_"},{"heading":"What’s new in Swift 5.4?","url":"https://www.hackingwithswift.com/articles/228/whats-new-in-swift-5-4","recommender":"老峰"},{"heading":"Aion - 拥抱 Flutter 生态的动态化方案","url":"https://mp.weixin.qq.com/s/mPkx9b07xCkokxxbGc7grA","recommender":"CrazyCoderShi"},{"heading":"tidevice","url":"https://github.com/alibaba/taobao-iphone-device","recommender":"含笑饮砒霜"},{"heading":"Pulse: Structured Logging System","url":"https://github.com/kean/Pulse","recommender":"zvving"},{"heading":"Twitter Text Editor","url":"https://github.com/twitter/TwitterTextEditor","recommender":"xiaofei86"},{"heading":"awesome-function-builders","url":"https://github.com/carson-katri/awesome-function-builders","recommender":"JonyFang"}]},{"id":"r-147-2021-02-01","type":"report","title":"老司机 iOS 周报 #147 | 2021-02-01","issue":147,"date":"2021-02-01","year":2021,"path":"Reports/2021/#147-2021.02.01.md","url":"Reports/2021/%23147-2021.02.01.md","excerpt":"AppTrackingTransparency 的要求即将生效：苹果在初春发布的 iOS 14、iPadOS 14 和 Apple tvOS 14 更新版本中要求 APP 通过 AppTrackingTransparency 证的用户同意来获取广告标识符，在未征得同意的情况下，设备的广告标识符都为零。同时增加 app 的“私人点击测量”支持，；抖音品质建设 - iOS启动优化《实战篇》：文章从启动监控，分析工具以及最佳实践三个角度详细介","sections":[{"heading":"AppTrackingTransparency 的要求即将生效","url":"https://developer.apple.com/cn/news/?id=8rm6injj","recommender":"极速男孩"},{"heading":"抖音品质建设 - iOS启动优化《实战篇》","url":"https://mp.weixin.qq.com/s/ekXfFu4-rmZpHwzFuKiLXw","recommender":"Leo"},{"heading":"基于 Flutter 的移动中间件体系和音视频技术","url":"https://mp.weixin.qq.com/s/9b4T9dU5PUaUSzwi32GSGQ","recommender":"zvving"},{"heading":"谈 UIKit 和 CoreAnimation 在 iOS 渲染中的角色（上）","url":"https://mp.weixin.qq.com/s/PgdH8x8nrC9SRU6nMErH8Q","recommender":"老驴"},{"heading":"WKWebView 请求拦截探索与实践","url":"https://mp.weixin.qq.com/s/u1fzioTZFLUpDEhSzUMRug","recommender":"JonyFang"},{"heading":"听说你想写个虚拟机（一）？","url":"https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247484228&idx=1&sn=704addfc6b1e50c7dedf1ad61787358d&chksm=cf558c8cf822059a11e9062f73266ebc32562f2437a29c9a06ce4ff9d298b637b6b699edd20d&token=1309308849&lang=zh_CN#rd","recommender":"老驴"},{"heading":"关于 SwiftUI State 的一些细节","url":"https://onevcat.com/2021/01/swiftui-state/","recommender":"J_Knight_"},{"heading":"Core Animation 动画全析","url":"https://juejin.cn/post/6920908515758309383#heading-41","recommender":"AidenRao"},{"heading":"Sloc Cloc and Code","url":"https://github.com/boyter/scc","recommender":"EyreFree"},{"heading":"SwiftUIKitView","url":"https://github.com/AvdLee/SwiftUIKitView","recommender":"四娘"}]},{"id":"r-146-2021-01-25","type":"report","title":"老司机 iOS 周报 #146 | 2020-01-25","issue":146,"date":"2021-01-25","year":2021,"path":"Reports/2021/#146-2021.01.25.md","url":"Reports/2021/%23146-2021.01.25.md","excerpt":"离线 Hybrid 容器如何做到接近 100% 秒开？：普惠四轮出行业务技术团队针对 Hybrid 容器进行的技术升级，本篇主要的脉络如下：；非礼勿视！Objective-C 里的 eval：本文从一个 CTF 题目展开，从官方文档结合反汇编分析，挖掘出语言和运行时鲜为人知却可能被滥用的机制。谁曾想到编译型的语言竟然也内置支持 eval（允许将输入的字符串变量当作代码动态执行）？；First stable release of Swif","sections":[{"heading":"离线 Hybrid 容器如何做到接近 100% 秒开？","url":"https://mp.weixin.qq.com/s/inAFLg85TfmXOWXS50pEfg","recommender":"JonyFang"},{"heading":"非礼勿视！Objective-C 里的 eval","url":"https://mp.weixin.qq.com/s/6dwi96sQ222KVsgbt4FW5A","recommender":"AidenRao"},{"heading":"First stable release of SwiftWasm 5.3 is now available","url":"https://forums.swift.org/t/first-stable-release-of-swiftwasm-5-3-is-now-available/41868/7","recommender":"xiaofei86"},{"heading":"Flutter 高性能、多功能的全场景滚动容器，一定要看！","url":"https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247486656&idx=1&sn=81e14ac99be2d75b5842529b8c694244&chksm=fd54d8d1ca2351c7ffe5e981aba49443b6aae2642bda6ac7a8951eabddd8a4307adcb98f6991&scene=0&xtrack=1#rd","recommender":"邦Ben"},{"heading":"HTTPS 温故知新","url":"https://mp.weixin.qq.com/s?__biz=MzkzMjExMTAwMQ==&mid=2247488855&idx=1&sn=ad55f4338dd53b9f92ac0fa53b7df6f2&chksm=c261e2a1f5166bb79f77fa14b9cf987c9a7c5f3ec7b4bddf75807f06cf6bdda8d7ada71307a3&scene=178&cur_album_id=1501778677406203906#rd","recommender":"水水"},{"heading":"让 Flutter 在鸿蒙系统上跑起来","url":"https://mp.weixin.qq.com/s/vTWZRaxvsOS_VRjfh6l4FQ","recommender":"CrazyCoderShi"},{"heading":"百度App Objective-C/Swift 组件化混编之路（三）- 实践篇","url":"https://mp.weixin.qq.com/s/-rBtXtkelcPQBMjQhwu07w"},{"heading":"swift-create-xcframework","url":"https://github.com/unsignedapps/swift-create-xcframework","recommender":"四娘"}]},{"id":"r-145-2021-01-18","type":"report","title":"老司机 iOS 周报 #145 | 2021-01-18","issue":145,"date":"2021-01-18","year":2021,"path":"Reports/2021/#145-2021.01.18.md","url":"Reports/2021/%23145-2021.01.18.md","excerpt":"Flutter 2021 RoadMap：按照国际惯例，最近 Flutter 官方放出了 2021 年的 Flutter RoadMap，透过这份 RoadMap 我们可以清晰的了解官方团队今年的工作，2021 年 Flutter 官方主要发力在以下几点:；抖音品质建设 - iOS 安装包大小优化实践篇：包大小是 App 重要的基础体验指标之一，本文为大家介绍了抖音在优化安装包大小方向做的一些探索和尝试，包括：；Qcon 演讲实录 | ","sections":[{"heading":"Flutter 2021 RoadMap","url":"https://github.com/flutter/flutter/wiki/Roadmap","recommender":"CrazyCoderShi"},{"heading":"抖音品质建设 - iOS 安装包大小优化实践篇","url":"https://mp.weixin.qq.com/s/LSP8kC09zjb-sDjgZaikbg","recommender":"含笑饮砒霜"},{"heading":"Qcon 演讲实录 | XQUIC 与多路径传输技术 Multipath QUIC","url":"https://mp.weixin.qq.com/s/3dnidnhCW-61PS5Stlb0Iw","recommender":"老驴"},{"heading":"手机阿里端智能方案演进","url":"https://mp.weixin.qq.com/s/oT5jQYQkQd-09ktFXS_OYg","recommender":"莲叔"},{"heading":"iOS 性能监控：Runloop 卡顿监控的坑","url":"https://mp.weixin.qq.com/s/vMRQ0VuHLxpaY9oCNd5G8w","recommender":"Leo"},{"heading":"Building On-Call Culture at GitHub","url":"https://github.blog/2021-01-06-building-on-call-culture-at-github/","recommender":"AidenRao"},{"heading":"从 Mach-O 角度谈谈 Swift 和 OC 的存储差异","url":"https://www.jianshu.com/p/ef0ff6ee6bc6","recommender":"Damien"},{"heading":"Keep private information out of your logs with Swift","url":"https://olegdreyman.medium.com/keep-private-information-out-of-your-logs-with-swift-bbd2fbcd9a40","recommender":"EyreFree"},{"heading":"ARM64 撬开逆向大门","url":"https://mp.weixin.qq.com/s/8HQd6st7ZvUC5f4TZ1cBWg"},{"heading":"Flutter 的性能分析、工程架构与细节处理","url":"https://mp.weixin.qq.com/s/0R5UnVFlVbLKoV__s66HnA","recommender":"邦Ben"},{"heading":"如何排查无法复现的系统内部 Crash？","url":"https://juejin.cn/post/6916048281113985032","recommender":"水水"}]},{"id":"r-144-2021-01-11","type":"report","title":"老司机 iOS 周报 #144 | 2021-01-11","issue":144,"date":"2021-01-11","year":2021,"path":"Reports/2021/#144-2021.01.11.md","url":"Reports/2021/%23144-2021.01.11.md","excerpt":"The 2020 State of the OCTO—VERSE：GitHub 官方的 2020 年度报告，作为聚集了最多全球开发者的开源平台，GitHub 这次从社区、生产率以及安全三个方面，展示不同的数据来总结过去的 2020 年。；the different types of self in Swift：这篇文章简单的介绍了在 Swift 三种 self 的不同用法，包括 self. 前缀，.self 后缀和 self 类型。；从","sections":[{"heading":"The 2020 State of the OCTO—VERSE","url":"https://octoverse.github.com/","recommender":"Parsifal"},{"heading":"the different types of self in Swift","url":"https://www.jessesquires.com/blog/2020/12/28/the-different-types-of-self-in-swift/","recommender":"极速男孩"},{"heading":"从 Weex 到Web，性能逆势如何破局？","url":"https://mp.weixin.qq.com/s/0EluripD7qNZtx7-aCstkw","recommender":"Damien"},{"heading":"如何持续的自我提升","url":"https://mp.weixin.qq.com/s/ibezFl5p62yDlb8HS6NyJw","recommender":"J_Knight_"},{"heading":"Preventing Data Races in the Swift Concurrency Model","url":"https://gist.github.com/DougGregor/10db898093ce33694139d1dcd7da3397","recommender":"享耳先森"},{"heading":"8 Common SwiftUI Mistakes - and how to fix them","url":"https://www.hackingwithswift.com/articles/224/common-swiftui-mistakes-and-how-to-fix-them","recommender":"zvving"},{"heading":"更现代的 Swift API 设计","url":"https://mp.weixin.qq.com/s/DhtYVLNq5IRu2eUEktXgJg","recommender":"EyreFree"},{"heading":"一文了解 Xcode 生成「静态库」和「动态库」 的流程","url":"https://mp.weixin.qq.com/s/WH8emrMpLeVW-LfGwN09cw","recommender":"JonyFang"},{"heading":"iSimulator","url":"https://github.com/wigl/iSimulator","recommender":"红纸"},{"heading":"滴滴DoKit For Flutter正式开源，功能及核心实现解读","url":"https://mp.weixin.qq.com/s/QLwE-ehvp9dHW4QJmAWI9g","recommender":"邦Ben"}]},{"id":"r-143-2021-01-04","type":"report","title":"老司机 iOS 周报 #143 | 2021-01-04","issue":143,"date":"2021-01-04","year":2021,"path":"Reports/2021/#143-2021.01.04.md","url":"Reports/2021/%23143-2021.01.04.md","excerpt":"Flutter 中一行文字到屏幕上，渲染全过程！：flutter 中除了我们熟悉的 StatelessWidget 和 StatefluWidget 两个 Widget 以外，还有InheritedWidget、 RenderObjectWidget 这种 Widget。 这篇文章主要通过一步步的解析源码中如何使用 Render；今日头条优化实践： iOS 包大小二进制优化：苹果对 iOS App 大小有严格的限制，包括下载大小和可执行","sections":[{"heading":"Flutter 中一行文字到屏幕上，渲染全过程！","url":"https://mp.weixin.qq.com/s/RAM3GbJ_vjnC_JcgNrFKtg","recommender":"极速男孩"},{"heading":"今日头条优化实践： iOS 包大小二进制优化","url":"https://mp.weixin.qq.com/s/TnqAqpmuXsGFfpcSUqZ9GQ","recommender":"含笑饮砒霜"},{"heading":"百度App Objective-C/Swift 组件化混编之路（二）","url":"https://mp.weixin.qq.com/s/xA3g0GdNvfKNgfvG6imEvw","recommender":"JonyFang"},{"heading":"2020 年文章总汇","url":"https://mp.weixin.qq.com/s/71z6vbkxjzk8SzJCmZeFlw","recommender":"J_Knight_"},{"heading":"使用 Swift 编写 CLI 工具的入门教程","url":"https://mp.weixin.qq.com/s/V4IdsYUouKGr68ULyb88Qw","recommender":"Damien"},{"heading":"图解 Mach-O 中的 got","url":"https://www.jianshu.com/p/55d82172a9f8","recommender":"Leo"},{"heading":"Thresh 今天正式开源，有望成为替代 RN 的一种长期方案","url":"https://mp.weixin.qq.com/s/E2lhodazRZRVPUGafY92xA","recommender":"Parsifal"},{"heading":"Downloader-for-Apple-Developers","url":"https://github.com/vineetchoudhary/Downloader-for-Apple-Developers"},{"heading":"DevUtils-app","url":"https://github.com/DevUtilsApp/DevUtils-app","recommender":"Parsifal"}]},{"id":"r-142-2020-12-28","type":"report","title":"老司机 iOS 周报 #142 | 2020-12-28","issue":142,"date":"2020-12-28","year":2020,"path":"Reports/2020/#142-2020.12.28.md","url":"Reports/2020/%23142-2020.12.28.md","excerpt":"2020 腾讯 Techo Park - Flutter 与大前端的革命：Flutter 自发布到目前的 1.22 版本，已经走过了两年多的时间，这段时间以来，Flutter 一直都是跨端开发的风口浪尖，这个时候很多人不禁要问：那么未来还是么 ？ 又该如何抉择 ？本文将给你这些问题的答案。；arm64 objc_msgSend 源码解读：objcmsgSend 方法是 Objective-C 的 Runtime 最核心的部分，你是否好奇","sections":[{"heading":"2020 腾讯 Techo Park - Flutter 与大前端的革命","url":"https://mp.weixin.qq.com/s/oflhVGs6lZBb--sOllMi8g","recommender":"CrazyCoderShi"},{"heading":"arm64 objc_msgSend 源码解读","url":"https://www.jianshu.com/p/1972010b88d7","recommender":"Damien"},{"heading":"自定义 LLVM PASS 实现 函数耗时插桩统计","url":"https://blog.0x1306a94.com/docs/llvm/ch01/01/","recommender":"Leo"},{"heading":"HTTP/2 做错了什么？刚刚辉煌2年就要被弃用了！？","url":"https://mp.weixin.qq.com/s/DLmg_SGGx0iyXepuhQB8pg","recommender":"AidenRao"},{"heading":"What Every Computer Scientist Should Know About Floating-Point Arithmetic","url":"https://floating-point-gui.de/","recommender":"JonyFang"},{"heading":"Stringz iOS Apps Localization Editor","url":"https://github.com/mohakapt/Stringz","recommender":"Parsifal"},{"heading":"CalendarKit","url":"https://github.com/richardtop/CalendarKit","recommender":"老驴"},{"heading":"RealityUI","url":"https://github.com/maxxfrazer/RealityUI","recommender":"Parsifal"},{"heading":"Apple tech-talks 10855 10856 10857","url":"https://developer.apple.com/videos/play/tech-talks/10855","recommender":"莲叔"}]},{"id":"r-141-2020-12-21","type":"report","title":"老司机 iOS 周报 #141 | 2020-12-21","issue":141,"date":"2020-12-21","year":2020,"path":"Reports/2020/#141-2020.12.21.md","url":"Reports/2020/%23141-2020.12.21.md","excerpt":"苹果现已推出轻 App 码：AppClip 是今年 WWDC 的一大亮点，现在苹果已经正式推出 AppClip 码，只需将 iPhone 靠近轻 App 码或用摄像头扫描该代码，即可打开您的轻 App 并快速完成需要的任务。；App Store 现已提供 App 的隐私标签：上个月苹果已经要求开发者必须在 12 月 8 号之前必须完善 App Store Connect 上的新隐私信息，而现在开发者所填写的隐私信息已经能够被 App S","sections":[{"heading":"苹果现已推出轻 App 码","url":"https://developer.apple.com/cn/news/?id=4c7j45dp","recommender":"Parsifal"},{"heading":"App Store 现已提供 App 的隐私标签","url":"https://developer.apple.com/cn/news/?id=3wann9gh","recommender":"Parsifal"},{"heading":"iOS | 事件传递及响应链","url":"https://juejin.cn/post/6894518925514997767","recommender":"J_Knight_"},{"heading":"iOS App Dev with SwiftUI Tutorials","url":"https://developer.apple.com/tutorials/app-dev-training","recommender":"Parsifal"},{"heading":"200 weeks of Swift","url":"https://www.swiftbysundell.com/articles/200-weeks-of-swift/","recommender":"zvving"},{"heading":"都 2021 年了，你的动画还在用 setState ？","url":"https://juejin.cn/post/6906670385941446670","recommender":"CrazyCoderShi"},{"heading":"App 启动提速实践和一些想法","url":"https://mp.weixin.qq.com/s/v2Ym9GPU4J8xCFFNYcpJhg","recommender":"Leo"},{"heading":"[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)","url":null,"recommender":"xiaofei86"},{"heading":"The future of SwiftUI navigation (?)","url":"https://fivestars.blog/swiftui/programmatic-navigation.html","recommender":"极速男孩"},{"heading":"iOS 编译速度如何稳定提高 10 倍以上之一","url":"https://juejin.cn/post/6903407900006449160","recommender":"红纸"},{"heading":"How expensive is DateFormatter","url":"https://sarunw.com/posts/how-expensive-is-dateformatter/","recommender":"水水"},{"heading":"Apple Silicon(苹果芯片)从 DTK 到 M1 Mac 的入门总结","url":"https://juejin.cn/post/6903091283204833287","recommender":"老驴"},{"heading":"M1 芯片有何不同？","url":"https://mp.weixin.qq.com/s/Krmx_mYpDdRGKzN3zs3mYw","recommender":"JonyFang"},{"heading":"Binary Size Woes","url":"https://medium.com/nerd-for-tech/binary-size-woes-acb5d96f058a","recommender":"四娘"},{"heading":"Motion","url":"https://github.com/b3ll/Motion","recommender":"Damien"}]},{"id":"r-140-2020-12-14","type":"report","title":"老司机 iOS 周报 #140 | 2020-12-14","issue":140,"date":"2020-12-14","year":2020,"path":"Reports/2020/#140-2020.12.14.md","url":"Reports/2020/%23140-2020.12.14.md","excerpt":"App 内购买项目现已支持「家人共享」功能：现在，开发者可以为自动续期订阅和非消耗型内购买项目启用「家庭共享」功能，从而允许用户与最多 5 位其他家庭成员共享购买内容。；Uber 工程师亲述使用 Swift 重写 App 的（惨痛）经历：事情起源于 2016 年，那年 Trump 还不是总统，TK 还没有爆出丑闻，Uber 还在飞速增长，App 的架构也逐渐变得复杂和脆弱，由此产生的 Bug 让工程师团队疲于奔命，最终他们决定重写 Ap","sections":[{"heading":"App 内购买项目现已支持「家人共享」功能","url":"https://developer.apple.com/cn/news/?id=4zbvn7u9","recommender":"享耳先森"},{"heading":"Uber 工程师亲述使用 Swift 重写 App 的（惨痛）经历","url":"https://threadreaderapp.com/thread/1336890442768547845.html","recommender":"四娘"},{"heading":"杀不掉的 App——CVE-2018-4340","url":"https://mp.weixin.qq.com/s/tnupXwfR5EDhZif7t9vR1w","recommender":"Leo"},{"heading":"iOS Synchronized 底层分析","url":"https://juejin.cn/post/6903421773232996365","recommender":"Damien"},{"heading":"My SwiftUI Pain: Creating Tappable Links in Text","url":"https://medium.com/better-programming/swiftui-pain-links-in-text-b31319783c9e","recommender":"EyreFree"},{"heading":"Xcode 12.3 盘点","url":"https://mp.weixin.qq.com/s/F_47HZZn74Jjd1q99WDCHA","recommender":"J_Knight_"},{"heading":"lowmad","url":"https://github.com/bangerang/lowmad","recommender":"老峰"}]},{"id":"r-139-2020-12-07","type":"report","title":"老司机 iOS 周报 #139 | 2020-12-07","issue":139,"date":"2020-12-07","year":2020,"path":"Reports/2020/#139-2020.12.07.md","url":"Reports/2020/%23139-2020.12.07.md","excerpt":"UIStackView padding：UIStackView 是 Apple 在 iOS9 推出流式布局容器库，它可以让我们高效的管理一行或一列视图的布局，在日常开发中往往有需要对 View 设置 Padding 的场景，相对比直接设置元素约束的方式，我们还可以使用 isLayoutMarginsRelativeAr；Swift protocols in SwiftUI：协议（Protocols）是 Swift 语言的重要组成部分，在","sections":[{"heading":"UIStackView padding","url":"https://sarunw.com/posts/uistackview-padding/","recommender":"Damien"},{"heading":"Swift protocols in SwiftUI","url":"https://fivestars.blog/swiftui/swift-protocols.html","recommender":"zvving"},{"heading":"MacBook 升级 SSD 硬盘指北","url":"https://juejin.cn/post/6901549087221514247","recommender":"Parsifal"},{"heading":"一种更优雅的 Flutter Dialog 解决方案","url":"https://juejin.cn/post/6902331428072390663","recommender":"Parsifal"},{"heading":"Xcode Releases","url":"https://xcodereleases.com/","recommender":"Parsifal"},{"heading":"Swift Version","url":"https://swiftversion.net/","recommender":"Parsifal"},{"heading":"ColorKit","url":"https://github.com/Boris-Em/ColorKit","recommender":"水水"},{"heading":"DiDiPrism","url":"https://github.com/didi/DiDiPrism","recommender":"老峰"},{"heading":"tumblr/kanvas-ios","url":"https://github.com/tumblr/kanvas-ios","recommender":"JonyFang"}]},{"id":"r-138-2020-11-30","type":"report","title":"老司机 iOS 周报 #138| 2020-11-30","issue":138,"date":"2020-11-30","year":2020,"path":"Reports/2020/#138-2020.11.30.md","url":"Reports/2020/%23138-2020.11.30.md","excerpt":"App Store Connect 放假安排：12月23日-27日：请确保您的 App 为最新版本，以准备迎接假期。App Store Connect 在12月23日至27日（太平洋时间）期间不接受新 App 和 App 更新，因此请提前处理任何与发布相关的计划、提交和审批事宜。其他 App Store Connect 功能将不受影响。；iOS AOP 方案的对比与思考：AOP 意为面向切面的编程方式，在不修改源代码的情况下，给程序动态","sections":[{"heading":"App Store Connect 放假安排：12月23日-27日","url":"https://developer.apple.com/cn/news/?id=83m4plrb","recommender":"Parsifal"},{"heading":"iOS AOP 方案的对比与思考","url":"https://mp.weixin.qq.com/s/5JhbX4McMifFpZ7NyztIQw","recommender":"Damien"},{"heading":"UME - 丰富的 Flutter 调试工具","url":"https://mp.weixin.qq.com/s/9GjXB9Eu-OP3fIjdQWKklg","recommender":"含笑饮砒霜"},{"heading":"What went wrong with the libdispatch. A tale of caution for the future of concurrency","url":"https://tclementdev.com/posts/what_went_wrong_with_the_libdispatch.html","recommender":"Leo"},{"heading":"MongoDB Realm 使用初体验 ｜ 奇谈","url":"https://mp.weixin.qq.com/s/HhhqkHtu9P1hib9L2Miyhg"},{"heading":"DispatchSource: Detecting changes in files and folders in Swift","url":"https://swiftrocks.com/dispatchsource-detecting-changes-in-files-and-folders-in-swift.html","recommender":"四娘"},{"heading":"端智能：理解 Vision 框架中的图片技术","url":"https://mp.weixin.qq.com/s/L4VHrw0Hvu_ALlTRY7rBBA","recommender":"EyreFree"},{"heading":"一篇吃透 Dark Mode ，搞定“暗黑/深色”适配","url":"https://mp.weixin.qq.com/s/02QmgMkmVcB8x7xVZJT_Bg","recommender":"AidenRao"},{"heading":"移动端 UI 一致性解决方案","url":"https://mp.weixin.qq.com/s/oq7ylltdRIdJuSlL7EIiNA","recommender":"Parsifal"},{"heading":"Comparing iPhone OS 1.0 with iOS 14 using tree maps","url":"https://blog.timac.org/2020/1122-comparing-iphone-os-with-ios-14-using-tree-maps/","recommender":"Parsifal"}]},{"id":"r-137-2020-11-23","type":"report","title":"老司机 iOS 周报 #137 | 2020-11-23","issue":137,"date":"2020-11-23","year":2020,"path":"Reports/2020/#137-2020.11.23.md","url":"Reports/2020/%23137-2020.11.23.md","excerpt":"Apple 宣布推出 App Store 小型企业计划：苹果宣布推出 App Store 小型企业计划，新计划针对每年营收 100 万美元以下的小型企业，将 App Store 佣金降至 15%，该计划将于 2021 年 1 月 1 日正式启动。；订阅优惠代码现已推出：苹果对于自己的订阅服务新增的一项服务。优惠代码是一组独特的、由数字和字母构成的编码，用于为自动续期订阅提供折扣价格或免费优惠。使用 iOS 14 和 iPadOS 14 ","sections":[{"heading":"Apple 宣布推出 App Store 小型企业计划","url":"https://www.apple.com.cn/newsroom/2020/11/apple-announces-app-store-small-business-program/","recommender":"JonyFang"},{"heading":"订阅优惠代码现已推出","url":"https://developer.apple.com/cn/news/?id=g20wyc9c","recommender":"Parsifal"},{"heading":"淘宝直播“一猜到底”——移动端实时语音识别技术方案及应用","url":"https://mp.weixin.qq.com/s/jX7utUnk0BOnu7cVnjNe1w","recommender":"含笑饮砒霜"},{"heading":"新版 Mac 终于到货了！anandtech 最新 M1 芯片评测出炉","url":"https://mp.weixin.qq.com/s/6RmvttZasIBDSki-ieENeg","recommender":"Parsifal"},{"heading":"手淘双11最新实践：PopLayer 弹层领域研发模式升级","url":"https://mp.weixin.qq.com/s/yYsWHv0kq7HK54e1kPBprw","recommender":"老峰"},{"heading":"UIView 动画降帧探究","url":"https://juejin.cn/post/6896372391388119053","recommender":"EyreFree"},{"heading":"实现 Native 异步回调 Flutter","url":"http://yulingtianxia.com/blog/2020/10/25/Asynchronous-Callback-for-Flutter/","recommender":"极速男孩"},{"heading":"doesitarm","url":"https://github.com/ThatGuySam/doesitarm","recommender":"红纸"},{"heading":"Discover Metal enhancements for A14 Bionic - Tech Talks - Videos - Apple Developer","url":"https://developer.apple.com/videos/play/tech-talks/10858","recommender":"莲叔"},{"heading":"Explore Live GPU Profiling with Metal Counters","url":"https://developer.apple.com/videos/play/tech-talks/10001","recommender":"老驴"}]},{"id":"r-136-2020-11-16","type":"report","title":"老司机 iOS 周报 #136 | 2020-11-16","issue":136,"date":"2020-11-16","year":2020,"path":"Reports/2020/#136-2020.11.16.md","url":"Reports/2020/%23136-2020.11.16.md","excerpt":"TestFlight 3：TestFlight 是苹果官方推荐的内测分发渠道，但一直以来都不能像 App Store 一样支持自动更新，这对于参与内测的用户十分不友好，也同样让开发者增加每次邀请内测的成本。TestFlight 3 终于带来了自动更新这一功能，目前还不是默认开启，升级 TestFlight；10 Tips & Shortcuts You Should Be Using Right Now On Xcode：非常实用的提高","sections":[{"heading":"TestFlight 3","url":"https://developer.apple.com/news/releases/?id=11112020","recommender":"Parsifal"},{"heading":"10 Tips & Shortcuts You Should Be Using Right Now On Xcode","url":"https://medium.com/@mpesate/10-tips-shortcuts-you-should-be-using-right-now-on-xcode-2e9e1b01511e","recommender":"Parsifal"},{"heading":"The Missing Guide for Mac Catalyst Apps","url":"https://www.craft.do/maccatalyst-guide","recommender":"Parsifal"},{"heading":"XCFrameworks — New Format for Packaging Frameworks in iOS","url":"https://medium.com/dev-jam/xcframeworks-new-format-of-packaging-frameworks-in-ios-306cda40b24f","recommender":"Leo"},{"heading":"PodSpec 管理策略","url":"https://mp.weixin.qq.com/s/Kb2IxY2E3soxSlGykNZTuQ","recommender":"JonyFang"},{"heading":"React Native 优化实践之拆包与预热","url":"https://mp.weixin.qq.com/s/vh2TaGcGFXCz24nqRYbbLQ","recommender":"looping"},{"heading":"使用 Property Wrapper 为 Codable 解码设定默认值","url":"https://mp.weixin.qq.com/s/jOyHRS2Wx6MJpuYuENhVgg","recommender":"Damien"},{"heading":"Debugging JSON Data in LLDB","url":"https://soffes.blog/debugging-json-data-in-lldb","recommender":"Parsifal"},{"heading":"Periphery 2.0","url":"https://github.com/peripheryapp/periphery/wiki/What%27s-new-in-Periphery-2.0","recommender":"zvving"}]},{"id":"r-135-2020-11-09","type":"report","title":"老司机 iOS 周报 #135 | 2020-11-09","issue":135,"date":"2020-11-09","year":2020,"path":"Reports/2020/#135-2020.11.09.md","url":"Reports/2020/%23135-2020.11.09.md","excerpt":"App Store Connect 已包含 app 隐私相关问题：苹果对用户隐私数据保护的又一措施。在用户下载 App 之前，开发者必须让用户知晓可能被收集的信息以及该信息是否会用于跟踪他们的行为。从 2020 年 12 月 8 日起，提交至 App Store 的新 app 和 app 更新都将需要包含此信息。；Flutter 中的 Tree Shaking 机制初探：Tree Shaking 是一种死代码消除（Dead Code E","sections":[{"heading":"App Store Connect 已包含 app 隐私相关问题","url":"https://developer.apple.com/cn/news/?id=vlj9jty9","recommender":"Parsifal"},{"heading":"Flutter 中的 Tree Shaking 机制初探","url":"https://mp.weixin.qq.com/s/Uv6vKiESZVplTYQV9T07Yg","recommender":"CrazyCoderShi"},{"heading":"Swift KeyPaths under a different optic","url":"https://www.47deg.com/blog/keypaths-optics/","recommender":"极速男孩"},{"heading":"Swift 编译慢？请看这里，全套开源","url":"https://juejin.im/post/6890419459639476237","recommender":"JonyFang"},{"heading":"Bridging Native UI Components in the React Native","url":"https://www.netguru.com/codestories/bridging-native-ui-components-in-the-react-native","recommender":"J_Knight_"},{"heading":"Swift 中使用 Option Pattern 改善可选项的 API 设计","url":"https://onevcat.com/2020/10/use-options-pattern/","recommender":"zvving"},{"heading":"Formatting numbers in Swift","url":"https://www.swiftbysundell.com/articles/formatting-numbers-in-swift/","recommender":"Damien"},{"heading":"围观 Github 上 Flutter 评论最多的 Issue","url":"https://juejin.im/post/6888884127634817038","recommender":"Parsifal"},{"heading":"ImportSanitizer","url":"https://github.com/SketchK/ImportSanitizer"},{"heading":"Arena","url":"https://github.com/finestructure/Arena","recommender":"Parsifal"},{"heading":"Chris Lattner: The Future of Computing and Programming Languages | Lex Fridman Podcast #131","url":"https://www.youtube.com/watch?v=nWTvXbQHwWs","recommender":"老驴"}]},{"id":"r-134-2020-11-02","type":"report","title":"老司机 iOS 周报 #134 | 2020-11-02","issue":134,"date":"2020-11-02","year":2020,"path":"Reports/2020/#134-2020.11.02.md","url":"Reports/2020/%23134-2020.11.02.md","excerpt":"苹果全新订阅服务通知现已在分发环境中使用：苹果向开发者宣布，现已可在分发环境中使用新的订阅服务通知。苹果提供了用户订阅状态的实时更新通知，方便开发者更快了解自己服务的订阅情况。；Deep Dive Into The Pubspec.yaml File：该文是 flutter pubspec.yaml 文件配置的详细介绍，如果刚接触的同学，可以进行了解一下各个配置项的作用。；Swift 发布并发功能的开发路线图：并发功能在 Swift 社","sections":[{"heading":"苹果全新订阅服务通知现已在分发环境中使用","url":"https://developer.apple.com/news/?id=an960mux","recommender":"Parsifal"},{"heading":"Deep Dive Into The Pubspec.yaml File","url":"https://medium.com/flutter-community/deep-dive-into-the-pubspec-yaml-file-fb56ac8683b9","recommender":"邦Ben"},{"heading":"Swift 发布并发功能的开发路线图","url":"https://forums.swift.org/t/swift-concurrency-roadmap/41611","recommender":"四娘"},{"heading":"抖音品质建设 - iOS启动优化《原理篇》","url":"https://mp.weixin.qq.com/s/3-Sbqe9gxdV6eI1f435BDg","recommender":"Leo"},{"heading":"网易云音乐 iOS 14 小组件实战手册","url":"https://mp.weixin.qq.com/s/gFd8fkJBkQd5RpFSD0P8Ig","recommender":"Damien"},{"heading":"他把闲鱼APP长列表流畅度翻了倍","url":"https://mp.weixin.qq.com/s/dlOQ3Hw_U3CFQM91vcTGWQ","recommender":"JonyFang"},{"heading":"如何知道一个锁到底被哪个线程占用？","url":"https://mp.weixin.qq.com/s/EUxx23NBsaPX2KG6HVG-cQ","recommender":"AidenRao"},{"heading":"arm64e 架构简介——指针验签","url":"https://mp.weixin.qq.com/s/a5e0T51kH9NIVKJpRyg4hQ","recommender":"SatanWoo"},{"heading":"Useful (and Obscure) Foundation Types in Swift","url":"https://medium.com/better-programming/useful-and-obscure-foundation-types-in-swift-4f2b2c42354e","recommender":"EyreFree"},{"heading":"客户端开发基础知识——写文件避“坑”指南","url":"https://juejin.im/post/6885630755805626375","recommender":"含笑饮砒霜"},{"heading":"Keeping expansion state of OutlineDisclosures using NSDiffableDataSource SectionSnapshot on UICollectionView DiffableDatasource","url":"https://crsantos.info/uicollectionviewdiffabledatasource-outline/","recommender":"老峰"},{"heading":"7 Essential iOS Developer Tools","url":"https://medium.com/better-programming/7-essential-ios-developer-tools-6bbc8ce53675","recommender":"Parsifal"}]},{"id":"r-133-2020-10-26","type":"report","title":"老司机 iOS 周报 #133 | 2020-10-26","issue":133,"date":"2020-10-26","year":2020,"path":"Reports/2020/#133-2020.10.26.md","url":"Reports/2020/%23133-2020.10.26.md","excerpt":"周报 1024 活动 & 书单推荐：上周六是 1024 程序员节，周报也给大家发了一波福利，截止现在所有抽奖活动均已结束，如果你中奖了但未收到周报微信联系，请添加「iTDriverr」私聊~另外未中奖的朋友，依然可以使用当当网优惠码自行购买，书单真的很不错！；The Ultimate Guide to the SwiftUI 2 Application Life Cycle：自去年 Xcode 11 与 iOS 13 发布时，苹果就引入","sections":[{"heading":"周报 1024 活动 & 书单推荐","url":"https://mp.weixin.qq.com/s/h1jGebb-t4EYo8ENv2Kdhw","recommender":"Parsifal"},{"heading":"The Ultimate Guide to the SwiftUI 2 Application Life Cycle","url":"https://peterfriese.dev/ultimate-guide-to-swiftui2-application-lifecycle/","recommender":"Parsifal"},{"heading":"iOS 性能优化实践：头条抖音如何实现 OOM 崩溃率下降 50%+","url":"https://mp.weixin.qq.com/s/4-4M9E8NziAgshlwB7Sc6g","recommender":"Leo"},{"heading":"深入理解 Dart 空安全","url":"https://mp.weixin.qq.com/s/MEL5kokoyb0CJcjrPpo12w","recommender":"CrazyCoderShi"},{"heading":"@warn_unqualified_access","url":"https://fivestars.blog/swift/warn_unqualified_access.html","recommender":"xiaofei86"},{"heading":"自研 iOS 热更新机制——OCPack 技术方案总结","url":"https://mp.weixin.qq.com/s/x7c5mHJINcWpGCuHPDNNPw","recommender":"J_Knight_"},{"heading":"App 崩溃现场取变量名和其实际值对应关系（不只是寄存器）","url":"https://juejin.im/post/6883160410736820231"},{"heading":"Evolution of the programming languages from iPhone OS 1.0 to iOS 14","url":"https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/","recommender":"Parsifal"},{"heading":"GoSwifty","url":"https://github.com/rsrbk/GoSwifty","recommender":"Parsifal"},{"heading":"SYWebViewBridge","url":"https://mp.weixin.qq.com/s/JDCyWg1AYemxbnFbvY5E9w","recommender":"享耳先森"},{"heading":"YYJSON","url":"https://github.com/ibireme/yyjson","recommender":"Parsifal"}]},{"id":"r-132-2020-10-19","type":"report","title":"老司机 iOS 周报 #132 | 2020-10-19","issue":132,"date":"2020-10-19","year":2020,"path":"Reports/2020/#132-2020.10.19.md","url":"Reports/2020/%23132-2020.10.19.md","excerpt":"Overriding UserDefaults for improved productivity：应用内的 UserDefaults 是一个易于访问的数据存储，用于保存状态，统计信息和其他与应用程序相关的数据。我们可以通过配置启动参数覆盖 UserDefaults，无需修改代码，更改 UserDefaults 默认值，提高开发效率。；Setting default values for NSUserDefaults：接上篇 UserD","sections":[{"heading":"Overriding UserDefaults for improved productivity","url":"https://www.avanderlee.com/xcode/overriding-userdefaults-launch-arguments/","recommender":"AidenRao"},{"heading":"Setting default values for NSUserDefaults","url":"https://sarunw.com/posts/setting-default-value-for-nsuserdefaults/","recommender":"红纸"},{"heading":"UIButton 状态新解","url":"https://mp.weixin.qq.com/s/nD-HV-gkKJr1MWU_agwkyg","recommender":"含笑饮砒霜"},{"heading":"Flutter 组件的事件传递与数据控制 | 开发者说·DTalk","url":"https://mp.weixin.qq.com/s/mO2lT_s1s5a94KeirPpeVg","recommender":"邦Ben"},{"heading":"Debugging on iOS 14 with Xcode 11","url":"https://hybridcattt.com/blog/debugging-on-ios14-with-xcode-11/","recommender":"J_Knight_"},{"heading":"iOS main in Assembly","url":"https://suelan.github.io/2020/08/18/20200817-ios-main-in-assembly/","recommender":"五子棋"},{"heading":"Crash Reporting with MetricKit","url":"https://www.chimehq.com/blog/metrickit-crash-reporting","recommender":"老驴"},{"heading":"初探 Objective-C/C++ 异常处理实现机制","url":"https://mp.weixin.qq.com/s/4Rcaee6kwWmrS3v_M9y0KQ","recommender":"Leo"},{"heading":"Podspec 文件分析","url":"https://mp.weixin.qq.com/s/CBkO-UfiPTMY5drIX_ZhKQ","recommender":"JonyFang"},{"heading":"Apple’s use of Swift and SwiftUI in iOS 14","url":"https://blog.timac.org/2020/0927-state-of-swift-ios14/","recommender":"邦Ben"},{"heading":"从渲染原理出发探究 Flutter 内存泄漏","url":"https://mp.weixin.qq.com/s/wPxXUv58sM9Fu3WOmP4JPA","recommender":"CrazyCoderShi"},{"heading":"How iOS Apps Adapt to the various iPhone 12 Screen Sizes","url":"https://hacknicity.medium.com/how-ios-apps-adapt-to-the-various-iphone-12-screen-sizes-e45c021e1b8b","recommender":"水水"},{"heading":"Swift deinit is (sometimes) not called for throwing or failable initializers","url":"https://www.jessesquires.com/blog/2020/10/08/swift-deinit-is-not-called-for-failable-initializers/","recommender":"EyreFree"},{"heading":"“A huge year for SwiftUI” a WWDC20 special with Josh Shaffer and Eliza Block","url":"https://www.swiftbysundell.com/podcast/76/","recommender":"老驴"}]},{"id":"r-131-2020-10-12","type":"report","title":"老司机 iOS 周报 #131 | 2020-10-12","issue":131,"date":"2020-10-12","year":2020,"path":"Reports/2020/#131-2020.10.12.md","url":"Reports/2020/%23131-2020.10.12.md","excerpt":"还没全面替换 UIWebView？苹果又给我们续了一命！：早在 2014 年苹果就发布了 WKWebView 来替代 UIWebView，并且一直鼓励开发者早日完成迁移。去年苹果直接宣布将停止接受使用 UIWebView 的 新 App，同时表示在 2020 年 12 月份起老 App 如果仍使用 UIWebView 则也无法提交。但日；苹果推迟 APNs 提供商 API 适配的截止时间：去年 11 月苹果开始要求开发者适配基于 HTT","sections":[{"heading":"还没全面替换 UIWebView？苹果又给我们续了一命！","url":"https://developer.apple.com/news/?id=edwud51q","recommender":"Parsifal"},{"heading":"苹果推迟 APNs 提供商 API 适配的截止时间","url":"https://developer.apple.com/news/?id=c88acm2b","recommender":"Parsifal"},{"heading":"Apple 特别在线活动 - iPhone 12 真的来了","url":"https://mp.weixin.qq.com/s/QhoHQNfaMkKNXBD0oKRTAg","recommender":"Parsifal"},{"heading":"Flutter 1.22 正式发布","url":"https://juejin.im/post/6879048672597213198?utm_source=gold_browser_extension","recommender":"CrazyCoderShi"},{"heading":"Flutter 性能优化的利器 —— Tracing","url":"https://mp.weixin.qq.com/s/qlCSF7tCPbERiTm7chXNMA","recommender":"邦Ben"},{"heading":"Introducing Swift Atomics","url":"https://swift.org/blog/swift-atomics/","recommender":"EyreFree"},{"heading":"【译】SE-0282 Low-Level Atomic Operations ⚛︎","url":"https://kemchenj.github.io/2020-10-02/","recommender":"四娘"},{"heading":"官方推荐 | 在 Flutter 中使用 TensorFlow Lite 插件实现文字分类","url":"https://mp.weixin.qq.com/s/cdcirQCKMS3fkSnz4tL5ig","recommender":"莲叔"},{"heading":"Dark side of extensions in Swift","url":"https://dmtopolog.com/dark-side-of-extensions/","recommender":"极速男孩"},{"heading":"iOS 后台锁屏也能监听摇一摇？","url":"https://juejin.im/post/6881420727371694093","recommender":"享耳先森"},{"heading":"iOS 是如何获取夜间模式启动图缓存路径？","url":"https://ai-chan.top/hexo/2020/09/27/iOS-Snapshots/","recommender":"J_Knight_"},{"heading":"How Swift API Availability Works Internally","url":"https://swiftrocks.com/how-availability-works-internally-in-swift","recommender":"老峰"},{"heading":"Binary Frameworks as Swift Packages","url":"https://pspdfkit.com/blog/2020/binary-frameworks-as-swift-packages/","recommender":"四娘"},{"heading":"UC 内核团队再出发，打造全新 Flutter 渲染引擎 —— Hummer","url":"https://juejin.im/post/6877716124117663757","recommender":"CrazyCoderShi"},{"heading":"XcodeGen — Collaboration Made Easy","url":"https://medium.com/dev-jam/xcodegen-collaboration-made-easy-9d1fdef548de?source=friends_link&sk=e13d571c9544f878a3c1510778a988c9","recommender":"含笑饮砒霜"},{"heading":"Announcing Swift Algorithms","url":"https://swift.org/blog/swift-algorithms/","recommender":"zvving"},{"heading":"Swift System","url":"https://github.com/apple/swift-system","recommender":"xiaofei86"}]},{"id":"r-130-2020-09-28","type":"report","title":"老司机 iOS 周报 #130 | 2020-09-28","issue":130,"date":"2020-09-28","year":2020,"path":"Reports/2020/#130-2020.09.28.md","url":"Reports/2020/%23130-2020.09.28.md","excerpt":"3 lesser-known ways of using Swift enums：本文介绍了 Swift 中使用枚举的 3 种鲜为人知的方法，建议有在使用 Swift 的同学都看一下，相信会有所收获。；Flutter 渲染引擎详解 - iOS Metal 篇：因为苹果即将停用 OpenGL， 所以在 flutter 1.17 版本中支持了 metal 渲染。本文主要介绍了在 flutter 中，如何完成上下文初始化，然后如何将 view","sections":[{"heading":"3 lesser-known ways of using Swift enums","url":"https://sarunw.com/posts/lesser-known-ways-of-using-swift-enums/","recommender":"EyreFree"},{"heading":"Flutter 渲染引擎详解 - iOS Metal 篇","url":"https://zhuanlan.zhihu.com/p/214099612","recommender":"极速男孩"},{"heading":"搭建 iOS-Crash 平台实践总结","url":"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","recommender":"水水"},{"heading":"The state of Swift for WebAssembly in 2020 (and earlier)","url":"https://desiatov.com/swift-webassembly-2020","recommender":"老峰"},{"heading":"Windows 上也能用 Swift 编程了，官方编译工具安装包现已上线","url":"https://mp.weixin.qq.com/s/088RdJNxa79t1Y9Q04A3Xw","recommender":"zvving"},{"heading":"来来来，Flutter Widget 体系架构与 UI 渲染流程","url":"https://juejin.im/post/6874737011325059086#heading-0","recommender":"Damien"},{"heading":"探秘 App Clips","url":"https://mp.weixin.qq.com/s/HtWQONDrOqPMR-MSqn2-eg","recommender":"JonyFang"},{"heading":"深夜暗坑 - iOS 启动图异常修复方案","url":"https://mp.weixin.qq.com/s/giXmBAC0ft-kRB3BloawzA","recommender":"J_Knight_"},{"heading":"Memory Safety - The Swift Programming Language","url":"https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html","recommender":"四娘"},{"heading":"Swift 的 MemoryLayout 是如何工作的","url":"https://ai-chan.top/hexo/2020/09/13/Swift-MemoryLayout/","recommender":"四娘"},{"heading":"JS-Native 通信的 6 种方式","url":"https://mp.weixin.qq.com/s/_Xo6O3NoE1z9AIMJm_uSsA","recommender":"享耳先森"}]},{"id":"r-129-2020-09-21","type":"report","title":"老司机 iOS 周报 #129 | 2020-09-21","issue":129,"date":"2020-09-21","year":2020,"path":"Reports/2020/#129-2020.09.21.md","url":"Reports/2020/%23129-2020.09.21.md","excerpt":"Swift 5.3 正式发布：继 3 月底发布 Swift 5.2 后，Swift 5.3 终于也官宣发布了~苹果继续围绕编码体验、Swift 运行时性能和更多平台支持进行改善和优化。小集团队也为我们翻译了官方的更新概要 - 一图读懂 Swift 5.3，下载更新 Xcode 12 即可体验 Swift 5.；苹果更新 App Store 审核指南：随着 iOS 14 的发布，以及正在路上的 macOS Big Sur，苹果对 App ","sections":[{"heading":"Swift 5.3 正式发布","url":"https://swift.org/blog/swift-5-3-released","recommender":"Parsifal"},{"heading":"苹果更新 App Store 审核指南","url":"https://developer.apple.com/news/?id=xqk627qu","recommender":"Parsifal"},{"heading":"系列文章：用 Swift 实现一个 Swift Runtime","url":"https://belkadan.com/blog/2020/08/Swift-Runtime-Heap-Objects/","recommender":"享耳先森"},{"heading":"分析可执行文件 Mach-O","url":"https://juejin.im/post/6870034249026633742","recommender":"Damien"},{"heading":"Flutter 包大小治理上的探索与实践","url":"https://mp.weixin.qq.com/s/adC-YUWd-xuUlzeAPHzJoQ","recommender":"CrazyCoderShi"},{"heading":"今日头条品质优化 - 图文详情页秒开实践","url":"https://mp.weixin.qq.com/s/Xqr6rQBbx7XPoBESEFuXJw","recommender":"JonyFang"},{"heading":"一位 iOS 开发者的进阶之旅","url":"https://mp.weixin.qq.com/s/cKuVFRPUnnScLM3y26mgIQ"},{"heading":"闲鱼对 Flutter-Native 混合工程解耦的探索","url":"https://mp.weixin.qq.com/s/4Z3Bqz9sUW1Lwofx--vCjA","recommender":"含笑饮砒霜"},{"heading":"4. Podfile 的解析逻辑","url":"https://mp.weixin.qq.com/s/f9YcS9eYS_RShLsTXS-SvA","recommender":"JonyFang"},{"heading":"The State of SwiftUI","url":"https://steipete.com/posts/state-of-swiftui/","recommender":"zvving"},{"heading":"GitHub CLI 1.0 is now available","url":"https://github.blog/2020-09-17-github-cli-1-0-is-now-available/","recommender":"J_Knight_"}]},{"id":"r-128-2020-09-14","type":"report","title":"老司机 iOS 周报 #128 | 2020-09-14","issue":128,"date":"2020-09-14","year":2020,"path":"Reports/2020/#128-2020.09.14.md","url":"Reports/2020/%23128-2020.09.14.md","excerpt":"Apple 特别活动 - 秋季发布会将于本周三凌晨举行：苹果今年的秋季新品发布会将于本周三（北京时间 9 月 16 日）凌晨 1 点在 Apple Park 举行，与今年的 WWDC 20 一样，此次发布会依然采用了线上视频形式，国内用户可以在爱奇艺、哔哩哔哩、腾讯视频和新浪微博观看本次直播。根据一些媒体消息，本次发布会可能不会发布 ；如何提高代码质量：高质量代码简单来说就是「好看和好用」，好看是指代码可读性好，容易理解、容易维护，别人","sections":[{"heading":"Apple 特别活动 - 秋季发布会将于本周三凌晨举行","url":"https://www.apple.com.cn/apple-events/","recommender":"Parsifal"},{"heading":"如何提高代码质量","url":"https://mp.weixin.qq.com/s/Dl7umd-Z3QuvOwzjmy3Z4w","recommender":"享耳先森"},{"heading":"App Clip 离落地有多远？","url":"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/","recommender":"JonyFang"},{"heading":"iOS 性能优化 - Allocations 分析内存分配","url":"https://mp.weixin.qq.com/s/WqVZ1rFpYrvE8X-J0f35mw","recommender":"JonyFang"},{"heading":"LeetCode Cookbook","url":"https://mp.weixin.qq.com/s/qu_drrtR-dFtYk1xiiZ7UA","recommender":"Damien"},{"heading":"Interviewing for an iOS Design System Engineer role at Spotify","url":"https://dev.to/funmia/interviewing-for-an-ios-design-system-engineer-role-at-spotify-485l","recommender":"老驴"},{"heading":"Agora Talk 回顾 | 深入聊聊不一样的 Flutter","url":"https://mp.weixin.qq.com/s/lo-jrMRKpfEr2s80BW61VQ","recommender":"含笑饮砒霜"},{"heading":"Flutter 1.20 下的 Hybrid Composition 深度解析","url":"https://mp.weixin.qq.com/s/e4Eh3DLacBJv36bNIKIokg","recommender":"CrazyCoderShi"},{"heading":"Private APIs, Objective-C runtime, and Swift","url":"https://medium.com/@victor.pavlychko/private-apis-objective-c-runtime-and-swift-ceaeefbb6e48","recommender":"四娘"},{"heading":"iPhone 屏幕尺寸进化历程背后的 App 设计哲学","url":"https://mp.weixin.qq.com/s/fRXCTfl_Ewt-XuOk0lSz9g","recommender":"张嘉夫"},{"heading":"VAP","url":"https://github.com/Tencent/vap","recommender":"EyreFree"}]},{"id":"r-127-2020-09-07","type":"report","title":"老司机 iOS 周报 #127 | 2020-09-07","issue":127,"date":"2020-09-07","year":2020,"path":"Reports/2020/#127-2020.09.07.md","url":"Reports/2020/%23127-2020.09.07.md","excerpt":"App Review process updates：苹果正式上线了其在 WWDC20 上公布的应用审核流程优化。对于已经在 App Store 上发布的应用，除了与法律问题有关的应用外，将不再因违反准则而延迟错误修复。现在，除了对应用程序是否违反指南的决定提出上诉外，你还可以对指南提出修改建议。苹果鼓励你提交对于 App Stor；Details for app privacy questions now available：正如苹果","sections":[{"heading":"App Review process updates","url":"https://developer.apple.com/news/?id=84w3e5bm","recommender":"anotheren"},{"heading":"Details for app privacy questions now available","url":"https://developer.apple.com/news/?id=hx9s63c5","recommender":"EyreFree"},{"heading":"云音乐 React Native 体系建设与发展","url":"https://juejin.im/post/6867722436369416206","recommender":"looping"},{"heading":"3. CocoaPods 命令解析 - CLAide","url":"https://mp.weixin.qq.com/s/JMG04U-7737GGlnoOKg1Fw","recommender":"JonyFang"},{"heading":"Abusing iOS’ Screenshot Cropping Mechanism","url":"https://bryce.co/screenshot-cropping/","recommender":"老驴"},{"heading":"Handling view controllers that have custom initializers","url":"https://www.swiftbysundell.com/tips/handling-view-controllers-that-have-custom-initializers/","recommender":"张嘉夫"},{"heading":"学 AR 到底学什么？我的 AR 之路反思与展望","url":"https://juejin.im/post/6865650326390145031/","recommender":"莲叔"},{"heading":"多级 MVC 和项目最佳实践","url":"https://github.com/zzyptr/App/blob/master/README.md","recommender":"J_Knight_"},{"heading":"Turning the ChibiStudio canvas into an App Clip for iOS 14","url":"https://rambo.codes/posts/2020-08-29-turning-the-chibistudio-canvas-into-an-app-clip","recommender":"Damien"},{"heading":"让 Objective-C 库支持 Swift Package Manager","url":"https://mp.weixin.qq.com/s/pU5d8j4R-4MRokbZIF9MLQ","recommender":"老峰"},{"heading":"SF Symbols Changes in iOS 14","url":"https://medium.com/@hacknicity/sf-symbols-changes-in-ios-14-4731937c5dc7"},{"heading":"YYDebugDatabase","url":"https://github.com/y500/iOSDebugDatabase","recommender":"红纸"},{"heading":"FlutterUnit","url":"https://github.com/toly1994328/FlutterUnit","recommender":"极速男孩"},{"heading":"Pigeon","url":"https://github.com/fmo91/Pigeon","recommender":"zvving"},{"heading":"Parma","url":"https://github.com/dasautoooo/Parma","recommender":"EyreFree"}]},{"id":"r-126-2020-08-31","type":"report","title":"老司机 iOS 周报 #126 | 2020-08-31","issue":126,"date":"2020-08-31","year":2020,"path":"Reports/2020/#126-2020.08.31.md","url":"Reports/2020/%23126-2020.08.31.md","excerpt":"Designing Custom UICollectionViewListCell in Interface Builder：此前作者发布了 UICollectionView List with Custom Cell and Custom Configuration 一文，文中作者教你使用代码自定义 UICollectionViewList 和 Cell，而本文作者又手把手教你如何在 Interfac；Ex1. CocoaPods 中","sections":[{"heading":"Designing Custom UICollectionViewListCell in Interface Builder","url":"https://swiftsenpai.com/development/custom-uicollectionviewlistcell-in-ib/","recommender":"水水"},{"heading":"Ex1. CocoaPods 中的 Ruby 特性之 Mix-in","url":"https://mp.weixin.qq.com/s/uZx4cgbsNgE2iuguAOzbow","recommender":"JonyFang"},{"heading":"React Native 升级指南","url":"https://supercodepower.com/docs/react-native-upgrade/index","recommender":"looping"},{"heading":"Entry Points in Swift: How @main and @UIApplicationMain work internally","url":"https://swiftrocks.com/entry-points-swift-uiapplicationmain-main","recommender":"EyreFree"},{"heading":"SVG image assets supported in Xcode 12","url":"https://sarunw.com/posts/svg-image-assets-supported-in-xcode12/","recommender":"含笑饮砒霜"},{"heading":"SwiftUI betas - what changed before 1.0","url":"https://mackuba.eu/2020/08/17/swiftui-beta/","recommender":"Damien"},{"heading":"Sharing layout information in SwiftUI","url":"https://fivestars.blog/swiftui/swiftui-share-layout-information.html","recommender":"xiaofei86"},{"heading":"Codable + PropertyWrapper = ☕","url":"https://github.com/winddpan/CodableWrapper","recommender":"zvving"}]},{"id":"r-125-2020-08-24","type":"report","title":"老司机 iOS 周报 #125 | 2020-08-24","issue":125,"date":"2020-08-24","year":2020,"path":"Reports/2020/#125-2020.08.24.md","url":"Reports/2020/%23125-2020.08.24.md","excerpt":"XCSSET Mac Malware: Infects Xcode Projects, Performs UXSS Attack on Safari, Other Browsers, Leverages Zero-day Exploits：近期发现了一种非常规的、通过 Xcode 开发者项目进行传播的病毒。恶意代码会在建立本地 Xcode 项目时注入并运行，可以利用 Data Vaults 的行为漏洞来窃取 cookie，还可以滥用开发","sections":[{"heading":"XCSSET Mac Malware: Infects Xcode Projects, Performs UXSS Attack on Safari, Other Browsers, Leverages Zero-day Exploits","url":"https://blog.trendmicro.com/trendlabs-security-intelligence/xcsset-mac-malware-infects-xcode-projects-performs-uxss-attack-on-safari-other-browsers-leverages-zero-day-exploits/","recommender":"张嘉夫"},{"heading":"联合验证什么鬼，苹果又出幺蛾子了！","url":"https://juejin.im/post/6863054279583678471","recommender":"Parsifal"},{"heading":"整体把握 CocoaPods 核心组件","url":"https://mp.weixin.qq.com/s/eyjrhPgPFdidPWO7t2SDcA","recommender":"JonyFang"},{"heading":"Mattt 谈 WWDC 2020 - NSHipster","url":"https://nshipster.com/wwdc-2020/","recommender":"zvving"},{"heading":"详解 Dart 中如何通过注解生成代码","url":"https://mp.weixin.qq.com/s/ZA62prbsM6KwnHkBT4i7yQ","recommender":"CrazyCoderShi"},{"heading":"iOS 的自动构建流程","url":"https://juejin.im/post/6860260103791050760","recommender":"AidenRao"},{"heading":"探索 Flutter 中线程模型/消息循环的底层逻辑","url":"https://mp.weixin.qq.com/s/yhni2q5XfxJ6qmfcJnSlBg","recommender":"CrazyCoderShi"},{"heading":"Force-Unwrapping in Swift is NOT a Bad Thing","url":"https://wolfmcnally.com/82/force-unwrapping-swift-not-bad-thing/","recommender":"Damien"},{"heading":"京东商城订单模块 Swift 探索","url":"https://mp.weixin.qq.com/s/iF5Jg17gQGSX_ngi0r4l-A","recommender":"looping"},{"heading":"App Attest: (Properly!) Protecting iOS apps from Jailbreak Tweaks in iOS 14","url":"https://swiftrocks.com/app-attest-apple-protect-ios-jailbreak","recommender":"anotheren"},{"heading":"Hacking iOS Simulator with simctl and dynamic libraries","url":"https://curvedlayer.com/2020/08/09/ios-simulator-plugin-simctl.html","recommender":"老峰"},{"heading":"OSLog and Unified logging as recommended by Apple","url":"https://www.avanderlee.com/debugging/oslog-unified-logging/","recommender":"水水"},{"heading":"Flutter -如何创建炫酷粒子时钟效果！","url":"https://juejin.im/post/6862158050237612039","recommender":"邦Ben"}]},{"id":"r-124-2020-08-17","type":"report","title":"老司机 iOS 周报 #124 | 2020-08-17","issue":124,"date":"2020-08-17","year":2020,"path":"Reports/2020/#124-2020.08.17.md","url":"Reports/2020/%23124-2020.08.17.md","excerpt":"深入理解 YYCache：iOS 开发过程中会用到各种缓存，YYCache 也是大家所熟悉的一个缓存框架。由 YYKit 作者 @ibireme 开发，也是 YYKit 组件之一，是一个线程安全的高性能缓存框架。本篇主要是对 YYCache 内部 YYMemoryCache 和 YYDiskCache 的；一文读懂fishhook原理：一篇写的比较清晰的 fishhook 原理的解析文章，整体流程上写的比较完善，可以作为入门 fishh","sections":[{"heading":"深入理解 YYCache","url":"https://juejin.im/post/6856665902655078407#heading-11","recommender":"JonyFang"},{"heading":"一文读懂fishhook原理","url":"https://juejin.im/post/6857699952563978247","recommender":"五子棋"},{"heading":"Hook Alamofire","url":"https://github.com/neil-wu/FridaHookSwiftAlamofire/blob/master/howto.md","recommender":"四娘"},{"heading":"经典源码分析之 OCMock","url":"https://juejin.im/post/6856324901419909127","recommender":"老驴"},{"heading":"Flutter+FaaS一体化任务编排的思考与设计","url":"https://mp.weixin.qq.com/s/y-poJ5yX4t91b88PDW1o_Q","recommender":"Damien"},{"heading":"为什么使用汇编可以 Hook objc_msgSend（下）- 实现与分析","url":"https://mp.weixin.qq.com/s/H6BmHEocf5jN78gfuY-tuA","recommender":"J_Knight_"},{"heading":"一文看破 Swift 枚举本质","url":"https://mp.weixin.qq.com/s/Gx7L_Ev0DV19mLYMnH-R1Q","recommender":"xiaofei86"},{"heading":"面向 5G 的阿里自研标准化协议库 XQUIC","url":"https://mp.weixin.qq.com/s/rwa-xUamJtAaIBVZj3eCNA","recommender":"looping"},{"heading":"客户端稳定性优化实战，Crash率最高下降40%","url":"https://mp.weixin.qq.com/s/jQfrxyvVtBBjUXkJuRinGA","recommender":"Parsifal"},{"heading":"iOS 开发体验优化方案","url":"https://mp.weixin.qq.com/s/f6hHl9_TLnWqB4hs99ut1Q","recommender":"红纸"},{"heading":"As We May Code","url":"https://nshipster.com/as-we-may-code/","recommender":"EyreFree"},{"heading":"远程输入法","url":"https://github.com/remoboard/remoboard-source","recommender":"老峰"},{"heading":"SwiftDump","url":"https://github.com/neil-wu/SwiftDump/blob/master/README_zh.md"}]},{"id":"r-123-2020-08-10","type":"report","title":"老司机 iOS 周报 #123 | 2020-08-10","issue":123,"date":"2020-08-10","year":2020,"path":"Reports/2020/#123-2020.08.10.md","url":"Reports/2020/%23123-2020.08.10.md","excerpt":"Flutter 1.20 正式发布，新特性解读：Flutter 1.20 正式发布，带来了不少新特性，Flutter 的更新速度还是非常让人满意。；Flutter 初学者必读的高级布局规则：本文通过 29 个示例来展示了 Flutter 高级布局规则并且总结 Flutter 布局的原理如下：；Verify your app’s integrity with the new App Attest API：新的 App Attest API","sections":[{"heading":"Flutter 1.20 正式发布，新特性解读","url":"https://mp.weixin.qq.com/s/Ua-463pSzEUiwl4WZMW5bw","recommender":"邦Ben"},{"heading":"Flutter 初学者必读的高级布局规则","url":"https://mp.weixin.qq.com/s/t5R112IIQUc9SXwWeAgsoA","recommender":"Damien"},{"heading":"Verify your app’s integrity with the new App Attest API","url":"https://developer.apple.com/news/?id=2sngpulc","recommender":"anotheren"},{"heading":"Dependency Injection via Property Wrappers","url":"https://www.kiloloco.com/articles/004-dependency-injection-via-property-wrappers/","recommender":"四娘"},{"heading":"Swiftʼs Collection Types","url":"https://harshil.net/blog/swift-sequence-collection-array","recommender":"JonyFang"},{"heading":"MessageMock：优雅的模拟 Objective-C 方法","url":"https://mp.weixin.qq.com/s/jm2QvYqnvFCPcRPocpj9ZQ"},{"heading":"Self-Sizing UITableView Cells with SwiftUI","url":"https://noahgilmore.com/blog/swiftui-self-sizing-cells/","recommender":"zvving"},{"heading":"为啥 Flutter Hooks 没有受到太多关注和青睐？","url":"https://mp.weixin.qq.com/s/L96a8Jc_HAzPdk4VYJ1Q3g","recommender":"极速男孩"},{"heading":"ConfigableCollectionView","url":"https://github.com/miku1958/ConfigableCollectionView","recommender":"老峰"},{"heading":"HappyCodable","url":"https://github.com/miku1958/HappyCodable","recommender":"EyreFree"}]},{"id":"r-122-2020-08-03","type":"report","title":"老司机 iOS 周报 #122 | 2020-08-03","issue":122,"date":"2020-08-03","year":2020,"path":"Reports/2020/#122-2020.08.03.md","url":"Reports/2020/%23122-2020.08.03.md","excerpt":"详解 WWDC 20 SwiftUI 的重大改变及核心优势：在苹果统一平台的大方向下，SwiftUI 不仅是用来替代 UIKit 的布局引擎，也是统一苹果所有终端视图的『终极方案』。在这个背景下，不难理解 SwiftUI 2.0 大量的内容更新。；​ 我们用 Flutter 写了一套全新的 Flutter 开发者工具：Dart DevTools 是由官方团队产出的 Flutter 开发工具，日前官方团队用 Flutter 重新构建了 D","sections":[{"heading":"详解 WWDC 20 SwiftUI 的重大改变及核心优势","url":"https://mp.weixin.qq.com/s/hp1nMopK_XBkFT7zp3gCfA","recommender":"zvving"},{"heading":"​ 我们用 Flutter 写了一套全新的 Flutter 开发者工具","url":"https://mp.weixin.qq.com/s/4mcFo3z8DhCDkEMX7IPmww","recommender":"CrazyCoderShi"},{"heading":"PRODUCT THINKING · 产品沉思录","url":"https://index.pmthinking.com/PRODUCT-THINKING-a601a12335044f349a22caf57f274c27","recommender":"zvving"},{"heading":"Swift 5.3 又更新了什么新奇爽快的语法？","url":"https://mp.weixin.qq.com/s/pQiLyl572fSgMX1Fq3RDhw","recommender":"享耳先森"},{"heading":"Core Image：iOS 图像处理技术追踪","url":"https://mp.weixin.qq.com/s/VeRohpOm_Wo6TNJ4IOTCAA","recommender":"anotheren"},{"heading":"iOS 大解密：玄之又玄的 KVO","url":"https://mp.weixin.qq.com/s/0Yfb-FYorH5GZ3ZB6bMCUQ","recommender":"含笑饮砒霜"},{"heading":"WWDC：无线网络优化实践，带来哪些启发？","url":"https://mp.weixin.qq.com/s/R3jMJqNSFkjRtXGePPHKQA","recommender":"Damien"},{"heading":"GitHub 用对了吗？Flutter 团队分享如何管理大型开源项目","url":"https://mp.weixin.qq.com/s/zo7i232oCQexyegioB7kxA","recommender":"老峰"},{"heading":"连续 3 年最受欢迎：Rust，香！","url":"https://mp.weixin.qq.com/s/TPV6uG7StvSQIj3lxufU0Q","recommender":"tom510230"},{"heading":"Flutter 季度调研结果分享 | 开发者的选择","url":"https://mp.weixin.qq.com/s/3NAa-uNSZ-KmGsZoVgKs3Q","recommender":"EyreFree"},{"heading":"如何实现一行命令自动生成 Flutter 插件","url":"https://mp.weixin.qq.com/s/MKQAcYwJ4kiYg-Z8UeddkQ","recommender":"邦Ben"},{"heading":"jVirus/swiftui-2048","url":"https://github.com/jVirus/swiftui-2048","recommender":"JonyFang"}]},{"id":"r-121-2020-07-27","type":"report","title":"老司机 iOS 周报 #121 | 2020-07-27","issue":121,"date":"2020-07-27","year":2020,"path":"Reports/2020/#121-2020.07.27.md","url":"Reports/2020/%23121-2020.07.27.md","excerpt":"Apple Widget：下一个顶级流量入口？：Widget 是 Apple 在 WWDC20 推出的新的桌面内容展现形式。Widget 的出现，让 iOS 系统的桌面有了破局，更多产品能够有机会借助 Widget 来丰富自己产品的内容表达。本文对 Widget 的特点、刷新方式、Widget 和 SwiftUI 的关系、Wi；有赞移动热修复平台建设：本文主要介绍了有赞的热修复平台，及在搭建过程中遇到的一些问题。以 Android 端为","sections":[{"heading":"Apple Widget：下一个顶级流量入口？","url":"https://mp.weixin.qq.com/s/ujZfU1CEQ1EfqoO8UR_kSg","recommender":"EyreFree"},{"heading":"有赞移动热修复平台建设","url":"https://mp.weixin.qq.com/s/u4l4DXoijR4ZkGlqL3DRcA","recommender":"含笑饮砒霜"},{"heading":"猿辅导 iOS 精准测试实践 - Objective-C 与 Swift 混编工程精准测试探索","url":"https://mp.weixin.qq.com/s/14hmLWNXAh1FKZT5NI5QsQ","recommender":"Damien"},{"heading":"WWDC20 Summary","url":"https://kean.blog/post/wwdc20-summary","recommender":"张嘉夫"},{"heading":"What should you know about a navigation history stack in iOS 14","url":"https://sarunw.com/posts/what-should-you-know-about-navigation-history-stack-in-ios14/","recommender":"老峰"},{"heading":"我们重新设计了 pub.dev，不来试试？","url":"https://mp.weixin.qq.com/s/NodeZQs4Krkmcz_bOfjOAQ","recommender":"极速男孩"},{"heading":"WasmPatch 开源，又一个 iOS 热修复框架","url":"https://mp.weixin.qq.com/s/4W2NNfvsgsaUQg0Q7SsSZg","recommender":"五子棋"},{"heading":"Swift Code Injection using dyld_dynamic_interpose","url":"http://johnholdsworth.com/dyld_dynamic_interpose.html","recommender":"四娘"},{"heading":"Streamoji - Custom Emoji Library for iOS UITextView","url":"https://dev.to/cardoso/introducing-streamoji-custom-emoji-library-for-ios-4g65","recommender":"xiaofei86"},{"heading":"Handling deeplinks in iOS 14 with onOpenURL","url":"https://www.donnywals.com/handling-deeplinks-in-ios-14-with-onopenurl/","recommender":"JonyFang"},{"heading":"Exposure Notification","url":"https://developer.apple.com/exposure-notification/","recommender":"老驴"},{"heading":"OCRunner","url":"https://github.com/SilverFruity/OCRunner","recommender":"Parsifal"}]},{"id":"r-120-2020-07-23","type":"report","title":"老司机 iOS 周报 #120 | 2020-07-20","issue":120,"date":"2020-07-23","year":2020,"path":"Reports/2020/#120-2020.07.23.md","url":"Reports/2020/%23120-2020.07.23.md","excerpt":"Github 徽章 +1：Arctic Code Vault Contributor：GitHub 在今年已经将 21TB 的开源代码封存到北极圈中，通过特别设计的胶卷以及北极代码保险柜（GitHub Arctic Code Vault），这些代码预计将能够保存 1 千年，而这项代码封存工作已经在 2020 年 7 月 8 日完成。 GitHub 还设计了一个特别；Flutter widgets 快问快答 | 第一期：这是 Google","sections":[{"heading":"Github 徽章 +1：Arctic Code Vault Contributor","url":"https://github.blog/2020-07-16-github-archive-program-the-journey-of-the-worlds-open-source-code-to-the-arctic/","recommender":"JonyFang"},{"heading":"Flutter widgets 快问快答 | 第一期","url":"https://mp.weixin.qq.com/s/rBNAs1r5j0DzlhOeRu9H0A","recommender":"CrazyCoderShi"},{"heading":"iOS14 隐私适配及部分解决方案","url":"https://mp.weixin.qq.com/s/CJML-2YUv6sqEEnI8rI0Bw","recommender":"享耳先森"},{"heading":"iOS 14 苹果对 Objective-C Runtime 的优化","url":"https://mp.weixin.qq.com/s/vSw98xbpEe4pjtBfqFNGAw","recommender":"含笑饮砒霜"},{"heading":"美团外卖 Flutter 动态化实践","url":"https://mp.weixin.qq.com/s/wjEvtvexYytzSy5RwqGQyw","recommender":"xiaofei86"},{"heading":"构建健全的空安全","url":"https://mp.weixin.qq.com/s/rgVJn928fyGunNO5kDKnSA","recommender":"Damien"},{"heading":"A Best in Class iOS App","url":"https://www.swiftjectivec.com/a-best-in-class-app/","recommender":"AidenRao"},{"heading":"Our Transition to React Native","url":"https://blog.khanacademy.org/engineering/our-transition-to-react-native/","recommender":"looping"},{"heading":"Flutter 和桌面应用的最新进展","url":"https://mp.weixin.qq.com/s/AfgT7jqv4m0YjFRIF5HhbA","recommender":"极速男孩"},{"heading":"You Should All Build This Custom Instrument for Your App","url":"https://blog.cocoafrog.de/how-to/2020/06/20/You-should-all-build-this-custom-instrument.html","recommender":"四娘"},{"heading":"探索WebAssembly实现iOS热修复/第一篇/WebAssembly快速上手","url":"https://mp.weixin.qq.com/s/YGY7M1PjXEujAKoIOnCWtQ"},{"heading":"探索WebAssembly实现iOS热修复/第零篇/前言","url":"https://mp.weixin.qq.com/s/U0q4n71VhIe6AawPtNVTzg","recommender":"五子棋"},{"heading":"Metal新特性：大幅度提升iOS端性能","url":"https://mp.weixin.qq.com/s/cJocn4bLXsO2336Cha9woA","recommender":"莲叔"},{"heading":"是时候扔掉 Postman 了，Apifox 真香！","url":"https://xie.infoq.cn/article/ae84a97dcda218e46cd885e8d","recommender":"Parsifal"}]},{"id":"r-119-2020-07-13","type":"report","title":"老司机 iOS 周报 #119 | 2020-07.13","issue":119,"date":"2020-07-13","year":2020,"path":"Reports/2020/#119-2020.07.13.md","url":"Reports/2020/%23119-2020.07.13.md","excerpt":"Benefits of using throwing functions (try) - Swift's most underrated feature?：Swift 新手面对 常望而却步，调用时使用 轻率处理，对外提供错误处理时一般使用 Result 返回错误，Throwing 几乎不是一个可选项。 本文作者认为 可能是最被低估的 Swift 语言特性，并给出合理使用错误处理的建议：；Flutter 上的内存泄漏监控：Flutter ","sections":[{"heading":"Benefits of using throwing functions (try) - Swift's most underrated feature?","url":"https://swiftrocks.com/benefits-of-throwing-functions-try-swift-underrated-feature","recommender":"zvving"},{"heading":"Flutter 上的内存泄漏监控","url":"https://juejin.im/post/5ee748df5188251f8649a226","recommender":"CrazyCoderShi"},{"heading":"Apple Clip 技术详解","url":"https://juejin.im/post/5ef41c9b6fb9a07e6143b0d0","recommender":"享耳先森"},{"heading":"干货 | 携程 RN 渲染性能优化实践","url":"https://mp.weixin.qq.com/s/3F8TOEdbiNX7SvXcy38Qrg","recommender":"looping"},{"heading":"iOS Memory 内存详解","url":"https://mp.weixin.qq.com/s/YpJa3LeTFz9UFOUcs5Bitg","recommender":"含笑饮砒霜"},{"heading":"The Origins of Objective-C at PPI/Stepstone and Its Evolution at NeXT","url":"https://dl.acm.org/doi/abs/10.1145/3386332?fbclid=IwAR0osl29GyKY9x3nFJE8bxYtDm5TnN4k0YOmqavny3uW5BaoL-Sk34xxOJs","recommender":"莲叔"},{"heading":"动手实现一个精简的动态布局 DSL","url":"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","recommender":"老峰"},{"heading":"Flutter 中的图文混排与原理解析 | 开发者说·DTalk","url":"https://mp.weixin.qq.com/s/Scl4lP-sgesti74pZH4efg","recommender":"极速男孩"},{"heading":"iOS Jailbreak Principles 0x02 - codesign and amfid bypass","url":"https://mp.weixin.qq.com/s/WyjWk9vrVAscDggX8GDNbQ"},{"heading":"@StateObject 和 @ObservedObject 的区别和使用","url":"https://onevcat.com/2020/06/stateobject/","recommender":"JonyFang"},{"heading":"iPadOS 鼠标的设计哲学","url":"https://mp.weixin.qq.com/s/z1ZVYXjNGutoovth5-lL-Q","recommender":"张嘉夫"},{"heading":"iOS Crash 分析攻略","url":"https://mp.weixin.qq.com/s/hVj-j61Br3dox37SN79fDQ","recommender":"老驴"},{"heading":"网恋奇遇记 ：偶遇杀猪盘之我能反杀","url":"https://www.xiaoyuzhoufm.com/episode/5efeafa36d76607427547473"}]},{"id":"r-118-2020-06-22","type":"report","title":"老司机 iOS 周报 #118 | 2020-06-22","issue":118,"date":"2020-06-22","year":2020,"path":"Reports/2020/#118-2020.06.22.md","url":"Reports/2020/%23118-2020.06.22.md","excerpt":"WWDC 20 将于北京时间本周 6 月 23 日凌晨举行：WWDC 2020 将要在 6 月 23 日凌晨 1 点钟以线上发布会的形式举行，这是首次以线上直播的方式和大家见面。 据“知情人”爆料，这次 WWDC 也会发布一款 ARM 的 Mac 电脑，同时还会把 iOS 系统重新命名为 iPhone OS，可以说非常值得期待了。；全新的 Apple 开发者论坛：WWDC 2020 开幕在即，本周 Apple 对 Apple 开发者论坛","sections":[{"heading":"WWDC 20 将于北京时间本周 6 月 23 日凌晨举行","url":"https://developer.apple.com/wwdc20/"},{"heading":"全新的 Apple 开发者论坛","url":"https://developer.apple.com/forums/","recommender":"张嘉夫"},{"heading":"Easy way to detect a retain cycle in a view controller","url":"https://sarunw.com/posts/easy-way-to-detect-retain-cycle-in-view-controller/","recommender":"Parsifal"},{"heading":"国内大厂在移动端跨平台的框架接入分析","url":"https://juejin.im/post/5ed45cf2e51d457858775d01","recommender":"AidenRao"},{"heading":"渲染流水线系列 -- 光栅化策略对比","url":"https://mp.weixin.qq.com/s/xuJ_-QpgrjVhuUKpINVn_g","recommender":"looping"},{"heading":"Modularity. Boundaries","url":"https://dmtopolog.com/modularity-1-boundaries/","recommender":"xiaofei86"},{"heading":"Toggling iOS Render Debug Options Without a Computer","url":"https://bryce.co/on-device-render-debugging/","recommender":"水水"},{"heading":"Introducing Swift AWS Lambda Runtime","url":"https://swift.org/blog/aws-lambda-runtime/","recommender":"莲叔"},{"heading":"因为知道了30+款在线工具，我的工作效率提升500%!","url":"https://juejin.im/post/5ee6f0b1e51d4578762019af","recommender":"红纸"}]},{"id":"r-117-2020-06-15","type":"report","title":"老司机 iOS 周报 #117 | 2020-06-15","issue":117,"date":"2020-06-15","year":2020,"path":"Reports/2020/#117-2020.06.15.md","url":"Reports/2020/%23117-2020.06.15.md","excerpt":"苹果公布史上最大规模的 WWDC20 阵容：WWDC 已经进入第 31 个年头，WWDC20 将于 6 月 22 至 26 日以前所未有的虚拟方式将全球超过 2300 万的苹果开发者社区聚集在一起，将成为迄今为止规模最大的 WWDC。；iOS 架构谈：剖析 Uber 的 RIB 架构：这是一篇由 Uber 工程师撰写，知识小集团队翻译的对 Uber RIB 构架的解析文章。RIB 从很多年前 Uber 切换 Swift 开始使用，到今天","sections":[{"heading":"苹果公布史上最大规模的 WWDC20 阵容","url":"https://www.apple.com/newsroom/2020/06/apple-reveals-lineup-for-its-biggest-ever-worldwide-developers-conference/","recommender":"享耳先森"},{"heading":"iOS 架构谈：剖析 Uber 的 RIB 架构","url":"https://mp.weixin.qq.com/s/8mkPa-5IdddJ10I_sAMK-A","recommender":"老驴"},{"heading":"Flutter 卡顿问题的监控与思考","url":"https://mp.weixin.qq.com/s/-BTEkHYeh_tHqJY2UNI_xw","recommender":"极速男孩"},{"heading":"如何在模块化/组件化项目中实现 ObjC-Swift 混编？","url":"https://juejin.im/post/5edd8ec16fb9a0480067d37d","recommender":"含笑饮砒霜"},{"heading":"iOS 中的网络调试","url":"https://juejin.im/post/5ee07f45f265da76ce5795aa","recommender":"looping"},{"heading":"在block内如何修改block外部变量？","url":"https://mp.weixin.qq.com/s/VFzTBCiFcbPHqWAnsDtT4A","recommender":"水水"},{"heading":"版本管理工具及 Ruby 工具链环境","url":"https://mp.weixin.qq.com/s/s2yJEb2P0_Kk-rIpYBi_9A","recommender":"红纸"},{"heading":"Swift Pointers Overview: Unsafe, Buffer, Raw and Managed Pointers","url":"https://www.vadimbulavin.com/swift-pointers-overview-unsafe-buffer-raw-and-managed-pointers/","recommender":"anotheren"},{"heading":"Swift Package Index","url":"https://swiftpackageindex.com/","recommender":"EyreFree"},{"heading":"全新技能，FDottedLine","url":"https://juejin.im/post/5ede002ef265da76e81a4226","recommender":"邦Ben"}]},{"id":"r-116-2020-06-08","type":"report","title":"老司机 iOS 周报 #116 | 2020-06-08","issue":116,"date":"2020-06-08","year":2020,"path":"Reports/2020/#116-2020.06.08.md","url":"Reports/2020/%23116-2020.06.08.md","excerpt":"3 steps to speed up storyboard：storyboard 作为 iOS 的一种对 viewcontroller 的控制的方法被广泛使用，本文简单介绍了如何快速的使用 storyboard 来对你的 viewcontroller 进行管理。；TrampolineHook - 解决栈污染问题支持变参 Hook：本文是 框架系列文章最新的一篇。 是一个中心重定向框架，可以通过一个函数替换/拦截所有你想要的函数的框架。","sections":[{"heading":"3 steps to speed up storyboard","url":"https://fluffy.es/3-steps-to-speed-up-storyboard/","recommender":"极速男孩"},{"heading":"TrampolineHook - 解决栈污染问题支持变参 Hook","url":"http://satanwoo.github.io/2020/05/18/TrampolineHookStack/?from=singlemessage&isappinstalled=0"},{"heading":"移动前端开发和 Web 前端开发的区别是什么？","url":"https://mp.weixin.qq.com/s/kPn-2y3Q_CMjwCB1c1yVTA","recommender":"张嘉夫"},{"heading":"How the SwiftUI DSL Works","url":"https://harshil.net/blog/swiftui-dsl-function-builders","recommender":"莲叔"},{"heading":"A Type-Safe FileWrapper","url":"https://heberti.com/posts/filewrapper/","recommender":"xiaofei86"},{"heading":"Dealing with memory limits in iOS app extensions","url":"https://blog.kulman.sk/dealing-with-memory-limits-in-app-extensions/","recommender":"老驴"},{"heading":"How We Use Feature Flagging on iOS","url":"https://mobile.blog/2020/05/29/how-we-use-feature-flagging-on-ios/","recommender":"老峰"},{"heading":"Decode and Flatten JSON with Dynamic Keys Using Decodable","url":"https://swiftsenpai.com/swift/decode-dynamic-keys-json/","recommender":"四娘"},{"heading":"InterposeKit","url":"https://github.com/steipete/InterposeKit","recommender":"EyreFree"}]},{"id":"r-115-2020-06-01","type":"report","title":"老司机 iOS 周报 #115 | 2020-06-01","issue":115,"date":"2020-06-01","year":2020,"path":"Reports/2020/#115-2020.06.01.md","url":"Reports/2020/%23115-2020.06.01.md","excerpt":"LLBuild2 开发工作正式启动：LLBuild2 开发工作正式启动：；An In-Depth Look at Blur Effect Materials on iOS：本文以实例的形式深入详细的介绍了如何在 iOS 中实现 Blur Effect (毛玻璃模糊)效果，包括 Blur Effect Styles 各种样式在深色模式下的不同呈现，以及 Vibrancy Effect Styles 文本内容在模糊效果下的不同样式，具体参见","sections":[{"heading":"LLBuild2 开发工作正式启动","url":"https://forums.swift.org/t/llbuild2/36896","recommender":"四娘"},{"heading":"An In-Depth Look at Blur Effect Materials on iOS","url":"https://pspdfkit.com/blog/2020/blur-effect-materials-on-ios/","recommender":"老峰"},{"heading":"网易支付-高性能NEJFlutter小程序动态化架构实践","url":"https://www.jianshu.com/p/be48a3dc80fa","recommender":"含笑饮砒霜"},{"heading":"一个十年 iPhone 使用者的「重新体验 iPhone」之旅","url":"https://imtx.me/blog/the-journey-of-reexperiencing-the-iphone/","recommender":"张嘉夫"},{"heading":"[[iOS]iOS11.0~13.5全系列设备越狱教程](https://mp.weixin.qq.com/s/0JuTk_iQCeYKjV3kIZMhHg)","url":null,"recommender":"红纸"},{"heading":"苹果强制要求更换启动方式的解决方案","url":"https://mp.weixin.qq.com/s/mdReGqt5E7T8VWC2q7ImKw","recommender":"享耳先森"},{"heading":"A Deep Dive into the Flutter Animations package","url":"https://medium.com/flutter-nyc/a-deep-dive-into-the-flutter-animations-package-3e26b10c43c1","recommender":"CrazyCoderShi"},{"heading":"LayoutKit","url":"https://github.com/linkedin/LayoutKit","recommender":"zvving"}]},{"id":"r-114-2020-05-25","type":"report","title":"老司机 iOS 周报 #114 | 2020-05-25","issue":114,"date":"2020-05-25","year":2020,"path":"Reports/2020/#114-2020.05.25.md","url":"Reports/2020/%23114-2020.05.25.md","excerpt":"CS193p Spring 2020 (Developing Applications for iOS using SwiftUI) 开始更新：斯坦福大学的 CS193p 课程是针对 iOS 开发所推出的一个基础教程。在2020年春季的更新中，加入了在去年 WWDC 中推出的 SwiftUI 的内容。更多的内容可以看这里 。；一波 N 折的携程酒店 Swift-Objc 混编实践：在 WWDC2019 大会上，随着 Swift5.0 发","sections":[{"heading":"CS193p Spring 2020 (Developing Applications for iOS using SwiftUI) 开始更新","url":"https://cs193p.sites.stanford.edu/","recommender":"极速男孩"},{"heading":"一波 N 折的携程酒店 Swift-Objc 混编实践","url":"https://mp.weixin.qq.com/s/N6ToEkN9c-2_rIvkv4o9hA","recommender":"含笑饮砒霜"},{"heading":"The Future of Swift on the Server","url":"https://www.timc.dev/posts/future-of-server-side-swift/","recommender":"莲叔"},{"heading":"Building a Design System for iOS","url":"https://www.ramshandilya.com/blog/design-system-intro/","recommender":"张嘉夫"},{"heading":"更方便、更强大: Flutter package 生态系统更新","url":"https://mp.weixin.qq.com/s/y_lOfxlYlG6nM-4xduQ4Aw","recommender":"邦Ben"},{"heading":"Implementing design system components on iOS","url":"https://medium.com/chili-labs/implementing-design-system-components-on-ios-6afe873ea586","recommender":"享耳先森"},{"heading":"Fish-Lottie：纯 Dart 如何实现一个高性能动画框架？","url":"https://mp.weixin.qq.com/s/4h6szVmDyiC5RjbLRC9ZZw","recommender":"CrazyCoderShi"},{"heading":"Verge — Start “store-pattern” state management before beginning Flux in UIKit iOS app development — preparation starting SwiftUI","url":"https://medium.com/eureka-engineering/verge-start-store-pattern-state-management-before-beginning-flux-in-uikit-ios-app-development-6c74d4413829","recommender":"zvving"},{"heading":"震惊！生产力提效 300% 的秘诀全公开","url":"https://juejin.im/post/5ec0d6b4f265da7b950569a9","recommender":"JimQ"},{"heading":"iOS Rendering 渲染全解析（长文干货）","url":"https://juejin.im/post/5ec35cc55188256d92438174"},{"heading":"大话 Socket","url":"https://mp.weixin.qq.com/s/sVbWrWaq5P0kHxNhMVqzWA","recommender":"水水"},{"heading":"Introducing Piranha: An Open Source Tool to Automatically Delete Stale Code","url":"https://eng.uber.com/piranha/","recommender":"xiaofei86"},{"heading":"Nuke 9","url":"https://kean.github.io/post/nuke-9","recommender":"老峰"},{"heading":"SwiftCoroutine","url":"https://github.com/belozierov/SwiftCoroutine","recommender":"四娘"},{"heading":"macOS 10.15: Slow by Design","url":"https://sigpipe.macromates.com/2020/macos-catalina-slow-by-design/","recommender":"老驴"}]},{"id":"r-113-2020-05-18","type":"report","title":"老司机 iOS 周报 #113 | 2020-05-18","issue":113,"date":"2020-05-18","year":2020,"path":"Reports/2020/#113-2020.05.18.md","url":"Reports/2020/%23113-2020.05.18.md","excerpt":"Flutter web 最新进展: 发掘更多可能！：Google 又来更新 Flutter Web 的进展啦。在最新的版本中，Flutter 已经提供了 PWA 的支持，也有越来越多的插件开始提供对 Web 的支持，同时 Flutter 也进一步改进了 Web 的调试与测试。；Settings Bundles Management in Xcode：Settings Bundles 支持开发者在 iOS 设置中加入一些自定义的内容。本文","sections":[{"heading":"Flutter web 最新进展: 发掘更多可能！","url":"https://mp.weixin.qq.com/s/NGqF2OTvsV1A2KLiMXE2PQ","recommender":"老驴"},{"heading":"Settings Bundles Management in Xcode","url":"https://swiftsenpai.com/xcode/settings-bundles-management/","recommender":"极速男孩"},{"heading":"TrampolineHook 学习笔记","url":"https://blog.dianqk.org/2020/05/11/trampolinehook-study-notes/","recommender":"五子棋"},{"heading":"超详解析 Flutter 渲染引擎|业务想创新，不了解底层原理怎么行？","url":"https://mp.weixin.qq.com/s/xxdgoEBIC3Bg4OCOZcm-aQ","recommender":"CrazyCoderShi"},{"heading":"What’s new in Swift 5.3?","url":"https://www.hackingwithswift.com/articles/218/whats-new-in-swift-5-3","recommender":"享耳先森"},{"heading":"Flutter 在 PLUS 业务中的探索和实践","url":"https://mp.weixin.qq.com/s/eJxmeAJ0ljmbPbgNVkGttQ","recommender":"looping"},{"heading":"WKWebView 默认缓存策略与 HTTP 缓存协议","url":"https://juejin.im/post/5df75e3a6fb9a016266459da","recommender":"含笑饮砒霜"},{"heading":"The different categories of Swift protocols","url":"https://www.swiftbysundell.com/articles/different-categories-of-swift-protocols/","recommender":"EyreFree"},{"heading":"\"零\"学习成本：使用 Web 标准开发动态化 Flutter 应用","url":"https://mp.weixin.qq.com/s/57CprMfvTtIeq6AdgcDdcw","recommender":"邦Ben"},{"heading":"How to add a shield on the App Icon of beta builds","url":"https://diamantidis.github.io/2020/05/10/add-shield-on-the-app-icon-of-beta-builds","recommender":"红纸"}]},{"id":"r-112-2020-05-11","type":"report","title":"老司机 iOS 周报 #112 | 2020-05-11","issue":112,"date":"2020-05-11","year":2020,"path":"Reports/2020/#112-2020.05.11.md","url":"Reports/2020/%23112-2020.05.11.md","excerpt":"Apple 将于 6 月 22 日起召开虚拟全球开发者大会：受今年新冠疫情的影响，早些时候苹果就已经宣布今年的 WWDC 会以线上形式继续进行，而现在正式官宣明确了时间为 6 月 22 日。这是第 31 届开发者大会，而今年的 WWDC 又是以全新的线上形式举行，相信也会带来全新的体验。；Flutter 1.17 发布：Flutter 2020 年的第一个稳定版本发布了🎉🎉🎉，这次的新版本主要以增强稳定和修复历史 Bug 为主。在","sections":[{"heading":"Apple 将于 6 月 22 日起召开虚拟全球开发者大会","url":"https://www.apple.com.cn/newsroom/2020/05/apple-to-host-virtual-worldwide-developers-conference-beginning-june-22/"},{"heading":"Flutter 1.17 发布","url":"https://medium.com/flutter/announcing-flutter-1-17-4182d8af7f8e","recommender":"CrazyCoderShi"},{"heading":"一次关于 Swift 在 iOS 生态圈里的现状调研","url":"https://mp.weixin.qq.com/s/Ib48PWpKJNALlNoL4lm4-g"},{"heading":"百度小程序框架性能优化实践","url":"https://mp.weixin.qq.com/s/F3kYYW5_Iu7ny0p3Rzp3Dw"},{"heading":"我是如何让微博绿洲的启动速度提升30%的","url":"https://mp.weixin.qq.com/s/SUHaGD1T2Vce4Ag-qgxtgg","recommender":"含笑饮砒霜"},{"heading":"Flutter 势头正盛 | 2020 春季速递","url":"https://mp.weixin.qq.com/s/DS8lAkqtK_Qp37o8ISlthA","recommender":"邦Ben"},{"heading":"The big Facebook crash of 2020 and the problem of third-party SDK creep","url":"https://rambo.codes/posts/2020-05-07-the-big-facebook-crash","recommender":"张嘉夫"},{"heading":"拆！对比详解 Flutter Widget 和 CSS，你关心的布局原理都在这儿了","url":"https://mp.weixin.qq.com/s/ZjrcYN6Asq1RpdgTrCUbiw","recommender":"looping"},{"heading":"围观 GitHub 重磅推出的四大新功能","url":"https://juejin.im/post/5eb4287a5188255fd54de601","recommender":"红纸"},{"heading":"History of Auto Layout constraints","url":"https://sarunw.com/posts/history-of-auto-layout-constraints/","recommender":"EyreFree"},{"heading":"一道 Block 面试题的深入挖掘","url":"https://juejin.im/post/5eaa2a87e51d454db7436726","recommender":"JimQ"},{"heading":"Realm.Object 与 NSObject 的转换中 swift 协议妙用的体现","url":"https://mp.weixin.qq.com/s/zR9M9hewQjnVUyShOxJyHA","recommender":"anotheren"},{"heading":"如何快速列出 App 的所有 +load 方法","url":"https://mp.weixin.qq.com/s/6O3G72-Pdx60zrvots5-3g","recommender":"水水"},{"heading":"opentrace-ios","url":"https://github.com/opentrace-community/opentrace-ios","recommender":"极速男孩"},{"heading":"TrampolineHook","url":"https://github.com/SatanWoo/TrampolineHook","recommender":"J_Knight_"},{"heading":"SwiftTrace","url":"https://github.com/johnno1962/SwiftTrace","recommender":"xiaofei86"},{"heading":"Localize","url":"https://github.com/freshOS/Localize","recommender":"老峰"},{"heading":"71: “Polymorphic interfaces” with special guest Dave Abrahams","url":"https://www.swiftbysundell.com/podcast/71/","recommender":"四娘"}]},{"id":"r-111-2020-04-27","type":"report","title":"老司机 iOS 周报 #111 | 2020-04-27","issue":111,"date":"2020-04-27","year":2020,"path":"Reports/2020/#111-2020.04.27.md","url":"Reports/2020/%23111-2020.04.27.md","excerpt":"Apple 正在网页版的 iWork 里尝试使用 ObjC + WebAssembly 实现部分功能：苹果开发人员在其 Twitter 上透露，最近上线的网页版 iWork 10.0 里，部分功能是从原生 App 的 C++ / ObjC 代码改为使用 WebAssembly 编译后用到网页上的。虽然目前并没有找到更多资料，但也是可以感觉出苹果在跨平台开发上的一些新的尝试和相关思；Flutter 技能篇: debug 看程序启动 | 开","sections":[{"heading":"Apple 正在网页版的 iWork 里尝试使用 ObjC + WebAssembly 实现部分功能","url":"https://mjtsai.com/blog/2020/04/17/iwork-10-in-webassembly/","recommender":"looping"},{"heading":"Flutter 技能篇: debug 看程序启动 | 开发者说·DTalk","url":"https://mp.weixin.qq.com/s/hqCJglkdZi6W6fK1r5tZeg","recommender":"邦Ben"},{"heading":"如何断点到函数的return","url":"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","recommender":"在开发断点调试中，假如有这样一个场景"},{"heading":"Testing push notifications on the iOS simulator","url":"https://www.avanderlee.com/workflow/testing-push-notifications-ios-simulator/","recommender":"张嘉夫"},{"heading":"Optionals in Swift Objective-C Interoperability","url":"https://fabiancanas.com/blog/2020/1/9/swift-undefined-behavior.html","recommender":"J_Knight_"},{"heading":"SE-0281: @main: Type-Based Program Entry Points","url":"https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md","recommender":"四娘"},{"heading":"复杂业务如何保证Flutter的高性能高流畅度？","url":"https://mp.weixin.qq.com/s/iXFa9C68gUHr7PL8NHnZUA","recommender":"CrazyCoderShi"},{"heading":"Xcode Build Time Optimization","url":null},{"heading":"Cross-Pollination","url":"https://nshipster.com/cross-pollination/","recommender":"AidenRao"},{"heading":"Debugging superpowers with FLEX","url":"https://alejandromp.com/blog/debugging-superpowers-with-flex/","recommender":"享耳先森"},{"heading":"ResilientDecoding","url":"https://github.com/airbnb/ResilientDecoding","recommender":"极速男孩"},{"heading":"啄木鸟 iOS 开发工具","url":"https://github.com/alibaba/youku-sdk-tool-woodpecker","recommender":"红纸"},{"heading":"XcodeColorSense2","url":"https://github.com/onmyway133/XcodeColorSense2","recommender":"水水"},{"heading":"X-SwiftFormat","url":"https://github.com/ruiaureliano/X-SwiftFormat","recommender":"EyreFree"},{"heading":"Flr：一个出色的Flutter资源管理工具","url":"https://juejin.im/post/5e514a76518825494f7df5f5","recommender":"老驴"},{"heading":"Lasso - iOS architectural pattern and framework","url":"https://github.com/ww-tech/lasso","recommender":"zvving"},{"heading":"杭州 - 阿里巴巴淘系技术基础平台：高级无线工程师（P6）/ 无线专家 (P7)","url":null},{"heading":"老司机推荐","url":null}]},{"id":"r-110-2020-04-20","type":"report","title":"老司机 iOS 周报 #110 | 2020.04.20","issue":110,"date":"2020-04-20","year":2020,"path":"Reports/2020/#110-2020.04.20.md","url":"Reports/2020/%23110-2020.04.20.md","excerpt":"GitHub is now free for teams - The GitHub Blog：GitHub CEO Nat Friedman 宣布已面向全体 GitHub 用户和团队提供不限制协作人数的私有仓库，并宣称 GitHub 的全部核心功能现已对所有人免费提供。；为什么使用汇编可以 Hook objc_msgSend（上）- 汇编基础：本文讲解了 ARM64 的汇编基础知识，其中包括： - iOS 的内存分区及栈区； - ARM","sections":[{"heading":"GitHub is now free for teams - The GitHub Blog","url":"https://github.blog/2020-04-14-github-is-now-free-for-teams/?from=timeline&isappinstalled=0"},{"heading":"为什么使用汇编可以 Hook objc_msgSend（上）- 汇编基础","url":"https://mp.weixin.qq.com/s/ty8Pt56EQ3sKiIfYypZ1fA","recommender":"J_Knight_"},{"heading":"Contact Tracing","url":"https://nshipster.com/contact-tracing/","recommender":"享耳先森"},{"heading":"Why iOS Developers Feel Stuck In Their Careers & What To Do","url":"https://medium.com/essential-developer-ios/why-ios-developers-feel-stuck-in-their-careers-what-to-do-d800a50470a2","recommender":"莲叔"},{"heading":"iOS 优化篇 - 启动优化之 Clang 插桩实现二进制重排","url":"https://juejin.im/post/5e97c3c751882573b86f9d00","recommender":"looping"},{"heading":"一个易迁移、兼容性高的 Flutter 富文本方案","url":"https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247485159&idx=1&sn=76d1d0d4603a5a2ae0dfaa037cdb22c6&chksm=fd54d2f6ca235be009b651e8ad3efa1ec8fa3fa8dc6331cde86afb395388168e1bebf3455d87&token=761182588&lang=zh_CN#rd","recommender":"老驴"},{"heading":"细化 Flutter List 内存回收，解决大 Cell 问题","url":"https://mp.weixin.qq.com/s/Mcfj3lRR8VJACxsjjIiVsA","recommender":"CrazyCoderShi"},{"heading":"FluentDarkModeKit 微软的暗黑模式适配框架","url":"https://juejin.im/post/5e82a0d0e51d4546b70d3c9e","recommender":"红纸"},{"heading":"Swift Logging","url":"https://nshipster.com/swift-log/","recommender":"四娘"},{"heading":"用Dart语言来写异步程序","url":"https://mp.weixin.qq.com/s/wkNW6HrQmoHla--xrAPbBQ","recommender":"老峰"},{"heading":"iOS 浅谈GPU及“App渲染流程”","url":"https://juejin.im/post/5e80b49751882573be11b138","recommender":"邦Ben"},{"heading":"Flutter 究竟是如何渲染的？","url":"https://juejin.im/post/5e931cd0e51d4546f5790806","recommender":"AidenRao"},{"heading":"iOS线程数量监控工具","url":"https://github.com/maniackk/KKThreadMonitor","recommender":"含笑饮砒霜"},{"heading":"DocTest：将单元测试代码置于注释中","url":"https://github.com/SwiftDocOrg/DocTest","recommender":"EyreFree"},{"heading":"swift-outdated","url":"https://github.com/kiliankoe/swift-outdated","recommender":"kemchenj"},{"heading":"MPITextKit","url":"https://github.com/meitu/MPITextKit"},{"heading":"SwiftyBeaver","url":"https://github.com/SwiftyBeaver/SwiftyBeaver","recommender":"张嘉夫"},{"heading":"杭州 - 阿里巴巴淘系技术基础平台：高级无线工程师（P6）/ 无线专家 (P7)","url":null},{"heading":"老司机推荐","url":null}]},{"id":"r-109-2020-04-13","type":"report","title":"老司机 iOS 周报 #109 | 2020.04.13","issue":109,"date":"2020-04-13","year":2020,"path":"Reports/2020/#109-2020.04.13.md","url":"Reports/2020/%23109-2020.04.13.md","excerpt":"Using Closures to initialize properties in Swift：本文介绍了如何使用闭包来初始化存储属性，特别是使用 来延迟初始化，你甚至可以在闭包中“安全”地使用 。闭包将原本分散在程序各处的代码合理地组合到一起，推荐尝试。；tintColor：tintColor 是 UIView 中返回颜色的变量，如果未定义这个颜色，则返回系统的默认色（亮蓝色），就比如你不定义一个按钮的文字颜色，则你会看到默认的蓝色","sections":[{"heading":"Using Closures to initialize properties in Swift","url":"https://www.donnywals.com/using-closures-to-initialize-properties-in-swift/","recommender":"anotheren"},{"heading":"tintColor","url":"https://sarunw.com/posts/tintcolor/","recommender":"水水"},{"heading":"揭秘 APM iOS SDK 的核心技术","url":"https://mp.weixin.qq.com/s/oChCjP_S1NVsBeh_sui4PQ","recommender":"J_Knight_"},{"heading":"看完这一篇，再也不用担心 Git 的“黑魔法”","url":"https://mp.weixin.qq.com/s/wWgapBH1YRxLuf2CuZhKBw","recommender":"含笑饮砒霜"},{"heading":"Understanding Swift's ObjectIdentifier","url":"https://swiftrocks.com/understanding-swifts-objectidentifier","recommender":"Damonwong"},{"heading":"Configuring the Main Thread Checker","url":"https://bryce.co/main-thread-checker-configuration/","recommender":"老峰"},{"heading":"探索?WhatsApp应用名称中的隐藏符号","url":"https://mp.weixin.qq.com/s/192iBBMtOmss4Yo-_3x_Fw","recommender":"五子棋"},{"heading":"Thrio","url":"https://github.com/hellobike/thrio","recommender":"CrazyCoderShi"}]},{"id":"r-108-2020-04-06","type":"report","title":"老司机 iOS 周报 #108 | 2020.04.06","issue":108,"date":"2020-04-06","year":2020,"path":"Reports/2020/#108-2020.04.06.md","url":"Reports/2020/%23108-2020.04.06.md","excerpt":"通用购买现可包含 Mac App：现在，可以在通用购买中包含 app 的 macOS 版本，让用户只需购买一次，即可在 iOS、iPadOS、macOS、watchOS 和 Apple tvOS 上使用您的 app 和 App 内购买项目。为此着手准备，只需在 Xcode 中为您跨平台的 app 绑定相同的 bu；字符串比较中 NSNumericSearch 选项的工作原理：比较版本号是我们开发中常见的需求，在字符串中我们经常会使用到 ","sections":[{"heading":"通用购买现可包含 Mac App","url":"https://developer.apple.com/cn/news/?id=03232020b&from=timeline&isappinstalled=0","recommender":"水水"},{"heading":"字符串比较中 NSNumericSearch 选项的工作原理","url":"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","recommender":"极速男孩"},{"heading":"Apple 操作系统可执行文件 Mach-O","url":"https://ming1016.github.io/2020/03/29/apple-system-executable-file-macho/","recommender":"J_Knight_"},{"heading":"字节跳动为什么选用 Flutter：并非跨平台终极之选，但它可能是不一样的未来","url":"https://mp.weixin.qq.com/s/biRl-SCXro3U_96X9N2UBg","recommender":"looping"},{"heading":"A Look Into ArgumentParser","url":"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","recommender":"xiaofei86"},{"heading":"iOS 端矢量图解决方案汇总（SVG 篇）","url":"https://dreampiggy.com/2020/03/30/iOS端矢量图解决方案汇总（SVG篇）/","recommender":"含笑饮砒霜"},{"heading":"全网最详！暗黑模式在 Trip.com App 的实践","url":"https://mp.weixin.qq.com/s/oU13hMQ2MJIYZoJWC74EMQ","recommender":"红纸"},{"heading":"Kotlin/Native and Xcode integration insights","url":"https://medium.com/@mateuszmatrejek/kotlin-native-and-xcode-integration-insights-357b8747a1c8","recommender":"老峰"},{"heading":"静态插桩的方式来实现 Hook Method","url":"https://juejin.im/post/5e74bc39f265da576a57a293","recommender":"Parsifal"},{"heading":"Echo","url":"https://github.com/didi/echo","recommender":"EyreFree"},{"heading":"TextureSwiftSupport","url":"https://github.com/TextureCommunity/TextureSwiftSupport","recommender":"JimQ"},{"heading":"道长三十：工科生如何去美国读研？","url":"https://talk.swift.gg/62?from=timeline&isappinstalled=0","recommender":"张嘉夫"},{"heading":"ATP 371: Chris Lattner 访谈","url":"https://atp.fm/episodes/371"}]},{"id":"r-107-2020-03-30","type":"report","title":"老司机 iOS 周报 #107 | 2020-03-30","issue":107,"date":"2020-03-30","year":2020,"path":"Reports/2020/#107-2020.03.30.md","url":"Reports/2020/%23107-2020.03.30.md","excerpt":"【译】用UIKit和UIView在视图上执行iOS动画：本文介绍了 UIView 中实现动画的几种方法以及各个参数的意义，最后简单介绍了如何去优化动画的性能。可以参考原文。；为什么 Debug Information Format 改为 DWARF 可以提高编译速度？：本文探索了将 Debug Information Format 改为 DWARF 可以提高编译速度的原因。首先介绍了 DWARF 和 dSYM 的生成时机，以及设置 DW","sections":[{"heading":"【译】用UIKit和UIView在视图上执行iOS动画","url":"https://juejin.im/post/5e784681f265da57671be823","recommender":"极速男孩"},{"heading":"为什么 Debug Information Format 改为 DWARF 可以提高编译速度？","url":"https://mp.weixin.qq.com/s/97h0oeotOpyTc_a-9ZSJtQ","recommender":"J_Knight_"},{"heading":"微信支付跨平台软件架构","url":"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","recommender":"莲叔"},{"heading":"Swift 5.2 正式发布 & 5.3 正在路上","url":"https://swift.org/blog/5-3-release-process/","recommender":"享耳先森"},{"heading":"Weex、RN 还是 Flutter？资深技术专家与你聊聊阿里跨平台思路","url":"https://mp.weixin.qq.com/s/AufpOA4ZDu0sf0sL-Sv_Sw","recommender":"looping"},{"heading":"手淘 App 如何落地 Swift ？一边探索实践，一边“打怪升级”","url":"https://mp.weixin.qq.com/s/_iweRWQCjnoASCmUAKHDFA","recommender":"JimQ"},{"heading":"滴滴正式发布开源客户端研发助手DoKit 3.0，新特性解读","url":"https://mp.weixin.qq.com/s/cTze8_-0KBIHHh96aEcilg","recommender":"红纸"},{"heading":"Flutter Platform Channel 使用与源码分析","url":"https://juejin.im/post/5e78989cf265da575c16e75c","recommender":"CrazyCoderShi"},{"heading":"在 ARC 下对非 ObjC 类型的指针进行操作的编译器陷阱","url":"https://mp.weixin.qq.com/s/SE5vpD733SQw9_yc1JN_TQ","recommender":"kyo"},{"heading":"SourceKitForSafari","url":"https://github.com/kishikawakatsumi/SourceKitForSafari","recommender":"莲叔"}]},{"id":"r-106-2020-03-23","type":"report","title":"老司机 iOS 周报 #106 | 2020-03-23","issue":106,"date":"2020-03-23","year":2020,"path":"Reports/2020/#106-2020.03.23.md","url":"Reports/2020/%23106-2020.03.23.md","excerpt":"App Store 对 COVID-19 相关应用的审核要求：苹果此前发出通知：为了保证数据源的可靠性，要求 COVID-19 相关应用必须以机构身份提交。同时，正常的审核流程可能需要比较长的时间，鼓励 COVID-19 相关应用在提交审核时发起「TimeSensitive Event」请求优先审核。；Determining which frameworks use UIWebView：苹果已经弃用了 UIWebView，从 2020 ","sections":[{"heading":"App Store 对 COVID-19 相关应用的审核要求","url":"https://developer.apple.com/cn/news/?id=03142020a","recommender":"享耳先森"},{"heading":"Determining which frameworks use UIWebView","url":"https://blog.kulman.sk/determining-which-frameworks-use-uiwebview","recommender":"老峰"},{"heading":"性能深度分析之 System Trace","url":"https://mp.weixin.qq.com/s/wTF3JSFH5b2zIUYAbnC-Bw","recommender":"五子棋"},{"heading":"FlutterBoost1.0到2.0，我一共做了这几件事","url":"https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247485085&idx=1&sn=277e1c7d555099f1cb1018614810f14e&chksm=fd54d28cca235b9a16518428b7f7df249e6da193e6fa9b567f19bcf9d88790e02b888c0c93bc&token=1853870359&lang=zh_CN#rd","recommender":"CrazyCoderShi"},{"heading":"基于时间轮片方式处理超时任务","url":"https://juejin.im/post/5e733e4f51882549417fe9aa","recommender":"J_Knight_"},{"heading":"一个不规范的 Category 写法导致的“血案”","url":"https://mp.weixin.qq.com/s/odkqXKHkshXKS_ZPk_EhBA","recommender":"含笑饮砒霜"},{"heading":"MediaPipe - 跨平台机器学习应用开发框架","url":"https://juejin.im/post/5e702e06e51d4526f363c62a?utm_source=gold_browser_extension","recommender":"老驴"},{"heading":"Avoiding massive SwiftUI views","url":"https://www.swiftbysundell.com/articles/avoiding-massive-swiftui-views/"},{"heading":"Profiling and debugging your Combine code with Timelane","url":"https://www.donnywals.com/profiling-and-debugging-your-combine-code-with-timelane","recommender":"zvving"},{"heading":"GitHub 手机客户端正式发布","url":"https://github.com/mobile/","recommender":"xuyanlan"},{"heading":"FLUI","url":"https://github.com/rannie/flui","recommender":"looping"}]},{"id":"r-105-2020-03-16","type":"report","title":"老司机 iOS 周报 #105 | 2020-03-16","issue":105,"date":"2020-03-16","year":2020,"path":"Reports/2020/#105-2020.03.16.md","url":"Reports/2020/%23105-2020.03.16.md","excerpt":"WWDC20  改成线上举行：受新冠疫情影响，苹果宣布一年一度的 WWDC 大会改为线上举行，具体日期及形式还未定，只指明将在六月举行。；UIAlertController with Function Builders：Function Builder 是 Swift 5.1 的新特性，在 Swift 的基础上构建自己的 DSL 的语法。文章基于 Function Builder，创建简单且易读的 UIAlertController A","sections":[{"heading":"WWDC20  改成线上举行","url":"https://developer.apple.com/wwdc20/","recommender":"享耳先森"},{"heading":"UIAlertController with Function Builders","url":"https://felginep.github.io/2020-03-10/uialertcontroller-function-builders","recommender":"AidenRao"},{"heading":"打破重重阻碍，Flutter 和 Web 生态如何对接？","url":"https://mp.weixin.qq.com/s/eL02zPLFbTOXm1vS6UEA4g","recommender":"CrazyCoderShi"},{"heading":"Fluttify","url":"https://fluttify.com/#/","recommender":"**系列文章"},{"heading":"Testing Push Notification on iOS Simulator from Xcode 11.4 Beta","url":"https://medium.com/flawless-app-stories/testing-push-notification-on-ios-simulator-from-xcode-11-4-beta-2fdd91d67bff","recommender":"J_Knight_"},{"heading":"Flight rules for Git","url":"https://github.com/k88hudson/git-flight-rules/blob/master/README_zh-CN.md","recommender":"JimQ"},{"heading":"Introducing Swift Crypto","url":"https://swift.org/blog/crypto/","recommender":"EyreFree"},{"heading":"The Nested Closure Trap","url":"https://medium.com/flawless-app-stories/the-nested-closure-trap-356a0145b6d","recommender":"Satanwoo"},{"heading":"设计模式（Swift 5.0 实现）","url":"https://github.com/Binlogo/Design-Patterns-In-Swift-CN"},{"heading":"使用 protocol 和 callAsFunction 改进 Delegate","url":"https://onevcat.com/2020/03/improve-delegate/","recommender":"老驴"},{"heading":"CocoaHub","url":"https://cocoahub.app/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B445","recommender":"xuyanlan"},{"heading":"SwiftCurrency: Type-safety and algorithms for working with money in Swift.","url":"https://github.com/peek-travel/swift-currency","recommender":"极速男孩"},{"heading":"Time: Building a better date/time library for Swift","url":"https://github.com/davedelong/time","recommender":"莲叔"},{"heading":"YMHTTP","url":"https://github.com/zymxxxs/YMHTTP","recommender":"张嘉夫"},{"heading":"Swift Argument Parser","url":"https://github.com/apple/swift-argument-parser","recommender":"xiaofei86"}]},{"id":"r-104-2020-03-09","type":"report","title":"老司机 iOS 周报 #104 | 2020-03-09","issue":104,"date":"2020-03-09","year":2020,"path":"Reports/2020/#104-2020.03.09.md","url":"Reports/2020/%23104-2020.03.09.md","excerpt":"近期 iOS 开发者需要关注的官方新闻：主要内容如下： - 目前 iOS 13 覆盖率已经达到 77% - 从 4 月 30 日起，所有提交到 App Store 的 iPhone 应用都必须使用 iOS 13 SDK（Xcode 11） 打包，也就是说要完成 iOS 13 适配 - 再次强调了从 4 月 30 日起，；Project LightSpeed: Rewriting the Messenger codebase for a ","sections":[{"heading":"近期 iOS 开发者需要关注的官方新闻","url":"https://developer.apple.com/news/?id=03042020b","recommender":"looping"},{"heading":"Project LightSpeed: Rewriting the Messenger codebase for a faster, smaller, and simpler messaging app","url":"https://engineering.fb.com/data-infrastructure/messenger/","recommender":"zvving"},{"heading":"系列文章 - Swift Intermediate Language 初探","url":"https://mp.weixin.qq.com/s/UQksScr_LZ1n7wLAVjzEMg"},{"heading":"Flutter +MLKit = ❤","url":"https://medium.com/flutter-community/flutter-mlkit-8039ec66b6a","recommender":"J_Knight_"},{"heading":"dna --- 一个 dart 到 native 的超级通道","url":"https://juejin.im/post/5e5f1d41518825495b29a05b","recommender":"老驴"},{"heading":"My experience replacing CocoaPods with SwiftPM","url":"https://www.jessesquires.com/blog/replacing-cocoapods-with-swiftpm","recommender":"anotheren"},{"heading":"深入剖析 WebKit","url":"https://ming1016.github.io/2017/10/11/deeply-analyse-webkit/#more","recommender":"kyo"},{"heading":"iPhone可以运行Android了","url":"https://mp.weixin.qq.com/s/hYjmPNxlX8P_BiEo4LveJQ","recommender":"EyreFree"},{"heading":"MultipeerKit","url":"https://github.com/insidegui/MultipeerKit","recommender":"含笑饮砒霜"},{"heading":"Xcode Build Settings","url":"https://xcodebuildsettings.com/","recommender":"AidenRao"}]},{"id":"r-103-2020-03-02","type":"report","title":"老司机 iOS 周报 #103 | 2020-03-02","issue":103,"date":"2020-03-02","year":2020,"path":"Reports/2020/#103-2020.03.02.md","url":"Reports/2020/%23103-2020.03.02.md","excerpt":"Flutter 智能闹钟挑战赛评选结果揭晓：Google 联合 Google Assistant、联想，发起的 Flutter 智能闹钟挑战赛已经评选结束，获奖及提名作品均有源码奉上，Flutter 爱好者不容错过。；Flutter 在字节跳动的现状与工程实践：这是一篇主要分享 Flutter 在字节跳动的现状以及工程实践经验的深度好文。字节跳动希望把 Flutter 打造成下一代研发体系，支撑众多 App 的各种使用场景。文章分为几个","sections":[{"heading":"Flutter 智能闹钟挑战赛评选结果揭晓","url":"https://medium.com/flutter/its-time-the-flutter-clock-contest-results-dcebe2eb3957","recommender":"zvving"},{"heading":"Flutter 在字节跳动的现状与工程实践","url":"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","recommender":"含笑饮砒霜"},{"heading":"Four Easy Ways to Debug Network Requests in Flutter","url":"https://medium.com/flutter-community/three-easy-ways-to-debug-network-requests-in-flutter-53043e898929","recommender":"老峰"},{"heading":"How Swift imports C APIs","url":"https://github.com/apple/swift/blob/master/docs/HowSwiftImportsCAPIs.md","recommender":"xiaofei86"},{"heading":"Swift.org - Announcing ArgumentParser","url":"https://swift.org/blog/argument-parser/","recommender":"AidenRao"},{"heading":"zld","url":"https://github.com/michaeleisel/zld","recommender":"四娘"},{"heading":"DarkModeKit","url":"https://github.com/microsoft/DarkModeKit","recommender":"Damonwong"},{"heading":"KeyboardGuide","url":"https://github.com/niw/KeyboardGuide","recommender":"EyreFree"},{"heading":"Vue.js - The Documentary，Vue.js 纪录片，配中文字幕","url":"https://www.bilibili.com/video/av92525472/","recommender":"享耳先森"}]},{"id":"r-102-2020-02-24","type":"report","title":"老司机 iOS 周报 #102 | 2020-02-24","issue":102,"date":"2020-02-24","year":2020,"path":"Reports/2020/#102-2020.02.24.md","url":"Reports/2020/%23102-2020.02.24.md","excerpt":"Swift Playgrounds For Mac：Swift Playgrounds 最初于 2016 年在 iPad 上发布，目的是为普通用户提供一种友好的方式来学习 Swift 语言。现在使用 Catalyst 技术制作的 Mac 版本已经发布，在 Mac App Store 上可以免费下载，大小为 155.1 MB，需要 ；从探索到落地，手淘引入 Swift “历险记”：本文还原了手淘 iOS APP 历时一年将 Swift 语","sections":[{"heading":"Swift Playgrounds For Mac","url":"https://apps.apple.com/us/app/swift-playgrounds/id1496833156?mt=12","recommender":"张嘉夫"},{"heading":"从探索到落地，手淘引入 Swift “历险记”","url":"https://mp.weixin.qq.com/s/oHGkoGzhMs-l8TX6t0831w","recommender":"JimQ"},{"heading":"iOS Performance tips you probably didn't know","url":"https://www.fadel.io/blog/posts/ios-performance-tips-you-probably-didnt-know/","recommender":"EyreFree"},{"heading":"有赞iOS-基于二进制的编译提效策略","url":"https://mp.weixin.qq.com/s/fcGfyM6hDGY6U1d-fBguuQ","recommender":"莲叔"},{"heading":"Standard Library Preview Package","url":"https://swift.org/blog/preview-package/","recommender":"AidenRao"},{"heading":"URLFormat","url":"https://github.com/ilyapuchka/URLFormat#vapor","recommender":"极速男孩"},{"heading":"Swift 编写的 iOS 端抓包工具（Knot)","url":"https://juejin.im/post/5e426f1a518825496f38149a","recommender":"老峰"},{"heading":"swift-doc - Generates documentation for Swift projects","url":"https://github.com/SwiftDocOrg/swift-doc","recommender":"水水"},{"heading":"开源 | Objective-C & Swift 最轻量级 Hook 方案","url":"https://mp.weixin.qq.com/s/wxigL1Clem1dR8Nkt8LLMw","recommender":"zvving"},{"heading":"swift-checkit","url":"https://github.com/karwa/swift-checkit/","recommender":"享耳先森"},{"heading":"Flutter：图像的爆炸动画💥","url":"https://juejin.im/post/5e3c17876fb9a07cab3a87fe?utm_source=gold_browser_extension","recommender":"CrazyCoderShi"},{"heading":"Thinking in SwiftUI","url":"https://www.objc.io/books/thinking-in-swiftui/","recommender":"老驴"}]},{"id":"r-101-2020-02-17","type":"report","title":"老司机 iOS 周报 #101 | 2020-02-17","issue":101,"date":"2020-02-17","year":2020,"path":"Reports/2020/#101-2020.02.17.md","url":"Reports/2020/%23101-2020.02.17.md","excerpt":"On the road to Swift 6：Swift 官方发布 Swift 6 未来方向：；SwiftUI-官方教程翻译：SwiftUI 已经公布半年了，开始逐渐有大批开发者尝试学习和使用。此项目翻译了共十篇官方的 SwiftUI 教程，在保留官方的文字内容、配图、代码外，还进行了细微的优化，推荐 Swift 新手参考。；一次让刷新控件好玩起来的尝试：相信你也有过『手里拿着锤子，看什么都像钉子』的经历。","sections":[{"heading":"On the road to Swift 6","url":"https://forums.swift.org/t/on-the-road-to-swift-6/32862","recommender":"xiaofei86"},{"heading":"SwiftUI-官方教程翻译","url":"https://github.com/WillieWangWei/SwiftUI-Tutorials","recommender":"zvving"},{"heading":"一次让刷新控件好玩起来的尝试","url":"https://mp.weixin.qq.com/s/TOWIpYWfxxtgHE6oYDEd4g","recommender":"zvving"},{"heading":"Library Evolution in Swift","url":"https://swift.org/blog/library-evolution/","recommender":"老驴"},{"heading":"淘系专家带你初探端智能与MNN","url":null,"recommender":"[上篇](https"},{"heading":"Static and Dynamic Callable Types in Swift","url":"https://nshipster.com/callable/","recommender":"JimQ"},{"heading":"WatchKit渲染原理以及SwiftUI桥接","url":"https://dreampiggy.com/2019/12/10/WatchKit渲染原理以及SwiftUI桥接/"},{"heading":"ControlRoom","url":"https://github.com/twostraws/ControlRoom"},{"heading":"Sitrep","url":"https://github.com/twostraws/Sitrep"},{"heading":"MLN —— 支持热更的移动跨平台解决方案","url":"https://mp.weixin.qq.com/s/I4FRuC81AOgaNSEROrJVWw","recommender":"CrazyCoderShi"},{"heading":"iPlayground 2019 | 網路難，難於上青天 - 用部件化的方式簡化網路程式設計","url":"https://www.youtube.com/watch?v=Xk4HZfW6vK0&list=PLJN8Q2M8xECkvIbNFM30Bu91qbN92SXND&index=14","recommender":"老峰"}]},{"id":"r-100-2020-02-10","type":"report","title":"老司机 iOS 周报 #100 | 2020-02-10","issue":100,"date":"2020-02-10","year":2020,"path":"Reports/2020/#100-2020.02.10.md","url":"Reports/2020/%23100-2020.02.10.md","excerpt":"Enumerating elements in ForEach：本文介绍了如何通过 SwiftUI 的 ForEach 来遍历展示列表，并对列表元素进行编号。作者记录了对这部分代码进行重构优化的整个过程，使用了 key-path-based 写法让代码变得清晰易懂，是一份不错的学习优化代码的材料。；iOS中编写高效能结构体的7个要点：本文通过介绍在内存中一个结构体是如何被存放和使用的，来介绍在 iOS 中定义一个结构体有哪些需要注意的地","sections":[{"heading":"Enumerating elements in ForEach","url":"https://oleb.net/2020/foreach-enumerated/","recommender":"looping"},{"heading":"iOS中编写高效能结构体的7个要点","url":"https://www.jianshu.com/p/1369508e477d","recommender":"极速男孩"},{"heading":"2019年终总结","url":"https://mp.weixin.qq.com/s/VtWeOJj6SeQ7yzNL9ZMFPA","recommender":"含笑饮砒霜"},{"heading":"用 struct 还是 class？让 Swift-NIO 的开发者来告诉你","url":"https://www.dotconferences.com/2019/01/johannes-weiss-high-performance-systems-in-swift","recommender":"五子棋"},{"heading":"@","url":"https://nshipster.com/at-compiler-directives/","recommender":"EyreFree"},{"heading":"Binary Frameworks in Swift","url":"https://pspdfkit.com/blog/2018/binary-frameworks-swift","recommender":"四娘"},{"heading":"为什么 SwiftPM 的开发进度比 Cocoapods 慢那么多？","url":"https://artsy.github.io/blog/2018/12/21/why-is-swiftpm-taking-so-long/","recommender":"享耳先森"},{"heading":"再见，整洁代码（译）","url":"https://overreacted.io/zh-hans/goodbye-clean-code/","recommender":"JimQ"},{"heading":"TopLevelEncoder and TopLevelDecoder in Combine","url":"https://oleb.net/2020/topleveldecoder/","recommender":"anotheren"},{"heading":"Barber","url":"https://github.com/michaeleisel/barber","recommender":"老驴"},{"heading":"Pure-Swift-UI","url":"https://github.com/CodeSlicing/pure-swift-ui","recommender":"AidenRao"}]},{"id":"r-099-2020-01-13","type":"report","title":"老司机 iOS 周报 #99 | 2020-01-13","issue":99,"date":"2020-01-13","year":2020,"path":"Reports/2020/#99-2020.01.13.md","url":"Reports/2020/%2399-2020.01.13.md","excerpt":"Flutter 如何高效的 JSON 转 Model：由于 Flutter 禁用运行时反射，所以在 Flutter 中是没有 Mantle 等这类解析 JSON 的库。本文介绍了三种方式在 Flutter 中进行 JSON to Model :；Using Type Erasure to Build a Dependency Injecting Routing Framework in Swift：Swift 编译器的类型检查为 Swi","sections":[{"heading":"Flutter 如何高效的 JSON 转 Model","url":"https://juejin.im/post/5e12eb566fb9a0480b415de2","recommender":"CrazyCoderShi"},{"heading":"Using Type Erasure to Build a Dependency Injecting Routing Framework in Swift","url":"https://swiftrocks.com/using-type-erasure-to-build-a-dependency-injector-in-swift.html","recommender":"Damonwong"},{"heading":"静态拦截 iOS 对象方法调用的简易实现","url":"https://juejin.im/post/5e1280fae51d4540e47ca450","recommender":"Parsifal"},{"heading":"移动开发者的必知音视频基础知识","url":"https://juejin.im/post/5e12fe306fb9a0481467d399","recommender":"含笑饮砒霜"},{"heading":"Web 离线技术原理","url":"https://juejin.im/post/5cd4fda8f265da03a00febe1","recommender":"looping"},{"heading":"Turning Property Wrappers into Function Wrappers","url":"https://medium.com/flawless-app-stories/turning-property-wrappers-into-function-wrappers-2be3a49229f5","recommender":"老峰"},{"heading":"CONTINUOUS INTEGRATION USING GITHUB ACTIONS FOR IOS PROJECTS","url":"https://andreaslydemann.com/continuous-integration-using-github-actions-for-ios-projects/","recommender":"老驴"},{"heading":"从客户端角度窥探小程序架构","url":"https://juejin.im/post/5e0dfb8cf265da5d2076ef69","recommender":"莲叔"},{"heading":"为什么 TCP 协议有性能问题 · Why's THE Design?","url":"https://draven.co/whys-the-design-tcp-performance","recommender":"水水"},{"heading":"UINavigationBar 在 iOS 13 中的变动","url":"https://sarunw.com/posts/uinavigationbar-changes-in-ios13/","recommender":"AidenRao"},{"heading":"How to make an augmented reality decorating experience app with AR Quick Look","url":"https://engineering.nodesagency.com/categories/ios/2019/12/31/How-to-make-an-Augmented-Reality-decorating-experience-app-with-AR-Quick-Look","recommender":"张嘉夫"},{"heading":"为 iOS 审核操碎了心！用岩鼠提升 iOS 审核通过率吧","url":"https://mp.weixin.qq.com/s/Mgywz7KO1tDh8POS2Agnsw","recommender":"JimQ"},{"heading":"BetterCodable","url":"https://github.com/marksands/BetterCodable","recommender":"享耳先森"},{"heading":"《谷歌方法》","url":"https://book.douban.com/subject/33430445/"},{"heading":"[推荐订阅播客节目：`[weak self]`](https://weakself.dev/)","url":null,"recommender":"zvving"}]},{"id":"r-098-2020-01-06","type":"report","title":"老司机 iOS 周报 #98 | 2020-01-06","issue":98,"date":"2020-01-06","year":2020,"path":"Reports/2020/#98-2020.01.06.md","url":"Reports/2020/%2398-2020.01.06.md","excerpt":"RN 转小程序引擎 Alita 2.0 正式发布：基于 webpack 进行重构：近期 Alita 发布了基于 webpack 进行重构后的 2.0 版本，带来了诸多新特性，包括完善 npm 支持、包大小分析、一键小程序分包等等。Alita 本身侵入性很低，并不会对原有 ReactNative 开发方式造成太大影响。同时本文也从基本原理、2.0 版本新特性、性；How to use scroll view in Interface Bu","sections":[{"heading":"RN 转小程序引擎 Alita 2.0 正式发布：基于 webpack 进行重构","url":"https://mp.weixin.qq.com/s/ndr0rGmy456wUEaoOBR0_g","recommender":"looping"},{"heading":"How to use scroll view in Interface Builder / Storyboard (Xcode 11)","url":"https://fluffy.es/scrollview-storyboard-xcode-11/","recommender":"极速男孩"},{"heading":"SwiftUI learning curve in 2019","url":"https://swiftwithmajid.com/2019/12/31/swiftui-learning-curve-in-2019/","recommender":"xiaofei86"},{"heading":"手淘架构组最新实践 | iOS基于静态库插桩的⼆进制重排启动优化","url":"https://mp.weixin.qq.com/s/YDO0ALPQWujuLvuRWdX7dQ","recommender":"satanwoo"},{"heading":"APP 网络优化之 DNS 优化实践","url":"https://juejin.im/post/5e0d580b5188253a5c7d12fc","recommender":"Parsifal"},{"heading":"立志欲坚不欲锐 - 2019 年小结","url":"https://mp.weixin.qq.com/s/1OeqJ-JSLtIRWqP8wOZRjg","recommender":"J_Knight_"},{"heading":"MANAGE YOUR IOS RESOURCES TYPE-SAFELY WITH R.SWIFT","url":"https://andreaslydemann.com/manage-your-ios-resources-type-safely-with-r-swift/","recommender":"Damonwong"},{"heading":"CocoaPods 1.9 新特性","url":"https://mp.weixin.qq.com/s/QJfLha9GmubfHjhnzQm9Fg","recommender":"EyreFree"},{"heading":"9to5mac 年度回顾：Apple 在 2019 年全年发布的所有产品","url":"https://mp.weixin.qq.com/s/ShqUgoMpfoS9BFwBeDO2VQ","recommender":"张嘉夫"},{"heading":"Debugging with Swift Combine Framework","url":"https://www.vadimbulavin.com/debugging-with-combine-swift-framework/","recommender":"zvving"},{"heading":"向现有应用添加 Flutter","url":"https://mp.weixin.qq.com/s/DckZviEm6P1cNC1oZBvXKw","recommender":"CrazyCoderShi"},{"heading":"Publish","url":"https://github.com/johnsundell/publish","recommender":"四娘"},{"heading":"AppHost","url":"https://github.com/pluosi/app-host","recommender":"JimQ"}]},{"id":"r-097-2019-12-30","type":"report","title":"老司机 iOS 周报 #97 | 2019-12-30","issue":97,"date":"2019-12-30","year":2019,"path":"Reports/2019/#97-2019.12.30.md","url":"Reports/2019/%2397-2019.12.30.md","excerpt":"Updating Apps that Use Web Views：如果你还在使用 ， Apple 已经给你下了最后通牒。自 2020 年 4 月起，使用 的新应用将无法提交到 App Store；自 2020 年 12 月起，相关旧应用也将无法提交更新。赶紧计划迁移到 吧。；Clean Architecture and MVVM on iOS：本文介绍了如何在 iOS 中使用 MVVM 架构，MVVM 各个部分如何在 iOS 中发挥作用","sections":[{"heading":"Updating Apps that Use Web Views","url":"https://developer.apple.com/news/?id=12232019b","recommender":"anotheren"},{"heading":"Clean Architecture and MVVM on iOS","url":"https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3","recommender":"极速男孩"},{"heading":"系列文章：多地图源业务向地图控件开发思路","url":"https://juejin.im/post/5e01c75c51882512766f4cf0","recommender":"享耳先森"},{"heading":"用户端智能的应用实践","url":"http://blog.cnbang.net/tech/3643/","recommender":"莲叔"},{"heading":"你的 App 在 iOS 13 上被卡死了吗？","url":"https://mp.weixin.qq.com/s/W_AqP8cQy3d5QCMJ8Nzftw","recommender":"Parsifal"},{"heading":"UserDefaults Access via Property Wrappers Is Worse Than You Might Think","url":"https://christiantietze.de/posts/2019/12/userdefaults-property-wrappers/","recommender":"老峰"},{"heading":"No space left on device: Testing low storage scenarios","url":"https://www.avanderlee.com/debugging/no-space-left-on-device/","recommender":"Parsifal"},{"heading":"Proxyman：网络调试工具","url":"https://proxyman.io","recommender":"Jimq"},{"heading":"R.swift","url":"https://github.com/mac-cain13/R.swift","recommender":"zvving"},{"heading":"HomeKit Accessory Development Kit (ADK)","url":"https://github.com/apple/HomeKitADK","recommender":"老驴"},{"heading":"KeyedCodable","url":"https://github.com/dgrzeszczak/KeyedCodable","recommender":"四娘"},{"heading":"Hippy","url":"https://github.com/Tencent/Hippy","recommender":"looping"}]},{"id":"r-096-2019-12-23","type":"report","title":"老司机 iOS 周报 #96 | 2019-12-23","issue":96,"date":"2019-12-23","year":2019,"path":"Reports/2019/#96-2019.12.23.md","url":"Reports/2019/%2396-2019.12.23.md","excerpt":"iOS 微信编译速度优化分享：作者首先列举了调研过的，目前已有的编译速度优化方案，然后分享了微信使用的编译速度优化方案：；Flutter: 首个面向环境计算打造的 UI 平台：文章中写道，在这个新兴世界中，大家关注的焦点也开始从单一设备转向环境——一个允许您随时随地获取服务和软件的环境。我们将其称为环境计算 (ambient computing)。；React Native 在美团外卖客户端的实践：MRN（Meituan React N","sections":[{"heading":"iOS 微信编译速度优化分享","url":"https://mp.weixin.qq.com/s/-wgBhE11xEXDS7Hqgq3FjA","recommender":"J_Knight_"},{"heading":"Flutter: 首个面向环境计算打造的 UI 平台","url":"https://mp.weixin.qq.com/s/ItRWmXPKt81tKLLTWoJqEQ","recommender":"邦Ben"},{"heading":"React Native 在美团外卖客户端的实践","url":"https://mp.weixin.qq.com/s/9wv4uHg51EELU0yoIFQw8A","recommender":"looping"},{"heading":"Swift API Availability","url":"https://nshipster.com/available/","recommender":"xiaofei86"},{"heading":"百度 APP iOS 暗黑模式适配的完美解决方案","url":"https://mp.weixin.qq.com/s/QOPCCIC-PbmUtuq2XUS34g","recommender":"张嘉夫"},{"heading":"iOS 开发调试概览","url":"https://www.cnblogs.com/kenshincui/p/11953536.html","recommender":"红纸"},{"heading":"iOS 项目技术还债之路《二》IAP 掉单优化","url":"https://juejin.im/post/5df64beff265da33e97fcd2f","recommender":"anotheren"},{"heading":"亮剑 - Stinger 是如何在速度上吊打 Aspects 的","url":"https://juejin.im/post/5df6e5c96fb9a016301d9255","recommender":"JimQ"},{"heading":"聊聊 Symbol","url":"https://github.com/LeoMobileDeveloper/Blogs/blob/master/Compiler/unstanding-symbol.md"},{"heading":"Objective-C Direct Methods","url":"https://nshipster.com/direct/","recommender":"AidenRao"},{"heading":"PodfilelockToPng","url":"https://github.com/Orange-W/PodfilelockToPng","recommender":"EyreFree"},{"heading":"SwipeCellKit","url":"https://github.com/SwipeCellKit/SwipeCellKit","recommender":"老峰"},{"heading":"flutter dart 私有仓库","url":"https://github.com/bytedance/unpub","recommender":"CrazyCoderShi"},{"heading":"推荐一款 Postman 的开源替代品： Postwoman","url":"https://mp.weixin.qq.com/s/8viBJ46-5-POvMftNfY-Eg","recommender":"水水"}]},{"id":"r-095-2019-12-16","type":"report","title":"老司机 iOS 周报 #95 | 2019-12-16","issue":95,"date":"2019-12-16","year":2019,"path":"Reports/2019/#95-2019.12.16.md","url":"Reports/2019/%2395-2019.12.16.md","excerpt":"Flutter 1.12 重磅发布：支持 Web 与 macOS：随着 Flutter Interact 的落幕，Flutter 1.12 稳定版本如期而至，此次不仅完成了成吨的 issues 修复 (关闭了 5303 个 issue，合并了来自 484 个贡献者的 5950 个 PR)，而且带来诸多新功能和优化.；App Store Connect 的部分功能将于 12 月 23 日 - 27 日暂停使用：一年一度的美国长假又来了，A","sections":[{"heading":"Flutter 1.12 重磅发布：支持 Web 与 macOS","url":"https://mp.weixin.qq.com/s/-ZNHZWoNZj1P9dcAIRpbyg","recommender":"CrazyCoderShi"},{"heading":"App Store Connect 的部分功能将于 12 月 23 日 - 27 日暂停使用","url":null},{"heading":"Lightweight API design in Swift","url":"https://www.swiftbysundell.com/articles/lightweight-api-design-in-swift/","recommender":"zvving"},{"heading":"用故事说透 HTTPS","url":"https://mp.weixin.qq.com/s/MfvUuitrF8MN16nxyZNB8A","recommender":"J_Knight_"},{"heading":"The Advanced Guide to UserDefaults in Swift","url":"https://www.vadimbulavin.com/advanced-guide-to-userdefaults-in-swift/","recommender":"老峰"},{"heading":"iOS 图片内存优化","url":"https://juejin.im/post/5ddc8258518825734f2b8eb2","recommender":"EyreFree"},{"heading":"Quick tip: clearing your app’s launch screen cache on iOS","url":"https://rambo.codes/ios/quick-tip/2019/12/09/clearing-your-apps-launch-screen-cache-on-ios.html","recommender":"Jimq"},{"heading":"如何对 iOS 启动阶段耗时进行分析","url":"https://www.jianshu.com/p/c0c4f19d317f","recommender":"五子棋"},{"heading":"Pecker","url":"https://github.com/woshiccm/Pecker","recommender":"张嘉夫"},{"heading":"NativeConnect","url":"https://nativeconnect.app/blog/official-launch/","recommender":"anotheren"},{"heading":"Diagnostics","url":"https://github.com/WeTransfer/Diagnostics","recommender":"老驴"},{"heading":"超甜的 Swift 初始化语法糖 - Then","url":"https://github.com/devxoul/Then","recommender":"水水"}]},{"id":"r-094-2019-12-09","type":"report","title":"老司机 iOS 周报 #94 | 2019-12-09","issue":94,"date":"2019-12-09","year":2019,"path":"Reports/2019/#94-2019.12.09.md","url":"Reports/2019/%2394-2019.12.09.md","excerpt":"Flutter Interact 2019 即将到来！全球同步直播最先了解新动态：Flutter Interact 将在 12 月 11 日于纽约布鲁克林举办，聚焦于跨平台打造精美体验。现场提供同声传译的直播服务，对 Flutter 感兴趣的小伙伴不要错过！；不同平台操作体验的差异和适配：flutter 在 iOS 和 Android 当中不同的适配效果，包括不同的手势，控件效果和字体图表等。；开发企业级移动APP，Flutter准备好","sections":[{"heading":"Flutter Interact 2019 即将到来！全球同步直播最先了解新动态","url":"https://mp.weixin.qq.com/s/28hbpByPwjSNETO0W8b4GQ","recommender":"zvving"},{"heading":"不同平台操作体验的差异和适配","url":"https://mp.weixin.qq.com/s/Ze4m95HeFoUXoP7FLbHcmQ","recommender":"极速男孩"},{"heading":"开发企业级移动APP，Flutter准备好了吗？","url":"https://mp.weixin.qq.com/s/M8x44Fb0NdLlr0TfKo_1wA","recommender":"CrazyCoderShi"},{"heading":"纷争再起：Flutter-UI 绘制解析","url":"https://juejin.im/post/5c866cf6f265da2de165d89d","recommender":"四娘"},{"heading":"​Flutter 沙龙回顾 | 如何缩减接近 50% 的 Flutter 包体积","url":"https://mp.weixin.qq.com/s/Ls3cDcqjlyOX80PXUO0wRw","recommender":"老驴"},{"heading":"Key​Value​Pairs","url":"https://nshipster.com/keyvaluepairs/","recommender":"xiaofei86"},{"heading":"Making Swift code extensible through plugins","url":"https://www.swiftbysundell.com/articles/making-swift-code-extensible-through-plugins/","recommender":"EyreFree"},{"heading":"Vision Framework: Working with Text and Image Recognition in iOS 13","url":"https://www.appcoda.com/animal-recognition-vision-framework/","recommender":"张嘉夫"},{"heading":"Faster way to download and install Xcode","url":"https://blog.kulman.sk/faster-way-to-download-and-install-xcode/","recommender":"JimQ"},{"heading":"NXDrawKit","url":"https://github.com/Nicejinux/NXDrawKit","recommender":"老峰"},{"heading":"LEEAlert","url":"https://github.com/lixiang1994/LEEAlert","recommender":"looping"}]},{"id":"r-093-2019-12-02","type":"report","title":"老司机 iOS 周报 #93 | 2019.12.02","issue":93,"date":"2019-12-02","year":2019,"path":"Reports/2019/#93-2019.12.02.md","url":"Reports/2019/%2393-2019.12.02.md","excerpt":"美团外卖前端容器化演进实践：容器化和动态化是目前大前端业务开发中最绕不开的两个命题。尤其是在产品架构已经相对成熟，业务侧的需求逐步过渡到精细化运营之后，往往随之而来的就是单个页面承载大量功能，并由不同的团队负责，代码也部署在不同的仓库，这给业务开发的效果、质量的把控都带来的新的挑战。本文介绍的美团提单页就是；了解 SIMD 指令：SIMD 是一种常见的利用单指令完成多数据量处理的计算方式。本文给出了基于 Xcode 环境的实践的 SIM","sections":[{"heading":"美团外卖前端容器化演进实践","url":"https://mp.weixin.qq.com/s/SAuKvlB0Bfj7dRIBzkhO8w","recommender":"莲叔"},{"heading":"了解 SIMD 指令","url":"http://satanwoo.github.io/2019/12/01/SIMD-1/","recommender":"五子棋"},{"heading":"天罗地网？ iOS卡顿监控实战（开源）","url":"https://juejin.im/post/5db65fe0e51d452a1e58f37c","recommender":"EyreFree"},{"heading":"How Swift Achieved Dynamic Linking Where Rust Couldn't","url":"https://gankra.github.io/blah/swift-abi/","recommender":"四娘"},{"heading":"技术文章配图指南","url":"https://draveness.me/sketch-and-sketch","recommender":"享耳先森"},{"heading":"HTTP/2 的学习实践和翻译","url":"https://github.com/halfrost/Halfrost-Field","recommender":"老峰"},{"heading":"Secret Management on iOS","url":"https://nshipster.com/secrets/"},{"heading":"LookinLoader","url":"https://github.com/creantan/LookinLoader","recommender":"张嘉夫"},{"heading":"SwiftPM Catalog","url":"https://zeezide.com/en/products/swiftpmcatalog/","recommender":"xiaofei86"},{"heading":"Commitizen","url":"https://github.com/commitizen/cz-cli","recommender":"AidenRao"},{"heading":"MyLinearLayout","url":"https://github.com/youngsoft/MyLinearLayout"},{"heading":"Siren","url":"https://github.com/ArtSabintsev/Siren","recommender":"looping"},{"heading":"xcconfigs for Universal Frameworks","url":"https://github.com/mrackwitz/xcconfigs","recommender":"极速男孩"}]},{"id":"r-092-2019-11-25","type":"report","title":"老司机 iOS 周报 #92 | 2019.11.25","issue":92,"date":"2019-11-25","year":2019,"path":"Reports/2019/#92-2019.11.25.md","url":"Reports/2019/%2392-2019.11.25.md","excerpt":"​Flutter 智能闹钟挑战赛约你来战！：是不是学了 Flutter 却无处练手？机会来了！Google 联合 Google Assistant，联想，一起搞了这个智能闹钟挑战赛，用 Flutter 为联想智能音箱开发一个智能闹钟功能，不仅能让你练手 Flutter， 更能赢得最高大奖：一台顶配的 iMac Pro 哦。；Command-line argument parsing using Swift Package Manager","sections":[{"heading":"​Flutter 智能闹钟挑战赛约你来战！","url":"https://mp.weixin.qq.com/s/mp2XxbP1jfsayw6oVEjb2Q","recommender":"老驴"},{"heading":"Command-line argument parsing using Swift Package Manager's SPMUtility module","url":"https://rderik.com/blog/command-line-argument-parsing-using-swift-package-manager-s/","recommender":"looping"},{"heading":"Thread Sanitizer explained: Data Races in Swift","url":"https://www.avanderlee.com/swift/thread-sanitizer-data-races/","recommender":"EyreFree"},{"heading":"Flutter 应用性能优化最佳实践","url":"https://mp.weixin.qq.com/s/2CbtwcyKlmB2u2c02gDP0w","recommender":"CrazyCoderShi"},{"heading":"自定义WKWebView显示内容（一）","url":"https://juejin.im/post/5dc41b44e51d456e824cf137","recommender":"J_Knight_"},{"heading":"Message-ID and Mail.app Deep Linking on iOS and macOS","url":"https://nshipster.com/message-id/","recommender":"四娘"},{"heading":"iOS Deferred Deep Link","url":"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","recommender":"老峰"},{"heading":"NSCopying uses in Swift","url":"https://swiftrocks.com/nscopying-nszone-uses-in-swift.html","recommender":"极速男孩"},{"heading":"Flutter 中文文档：使用 Mockito 模拟依赖关系","url":"https://mp.weixin.qq.com/s/e9orvqzdLmFwMXDVLUtcLw","recommender":"AidenRao"},{"heading":"自动切换输入法 - Mac","url":"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","recommender":"水水"},{"heading":"IBPCollectionViewCompositionalLayout","url":"https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout","recommender":"张嘉夫"},{"heading":"MagazineLayout","url":"https://github.com/airbnb/MagazineLayout","recommender":"zvving"}]},{"id":"r-091-2019-11-18","type":"report","title":"老司机 iOS 周报 #91 | 2019-11-18","issue":91,"date":"2019-11-18","year":2019,"path":"Reports/2019/#91-2019.11.18.md","url":"Reports/2019/%2391-2019.11.18.md","excerpt":"Apple Push Notification Service Update：近期苹果发布通知，将在 2020 年 11 月后不再支持基于二进制协议的 APNs，建议我们尽快把推送服务更新到基于 HTTP/2 的 API 上。关于 APNs 详细内容可查看官方文档 APNs Overview。；You Cannot Submit an Electron 6 (or 7) App to the Apple Store：开发者 David.","sections":[{"heading":"Apple Push Notification Service Update","url":"https://developer.apple.com/news/?id=11042019a","recommender":"looping"},{"heading":"You Cannot Submit an Electron 6 (or 7) App to the Apple Store","url":"https://david.dev/you-cannot-submit-an-electron-6-or-7-app-to-the-apple-store","recommender":"张嘉夫"},{"heading":"做一个高一致性、高性能的Flutter动态渲染，真的很难么？","url":"https://mp.weixin.qq.com/s/R6IxJqawwbmlWvlwb3ZXww","recommender":"CrazyCoderShi"},{"heading":"Swift 在 GAIA 平台云端一体化的探索","url":"https://mp.weixin.qq.com/s/7B2FDBZ_vnvswiYWjLih4Q","recommender":"莲叔"},{"heading":"Understanding the iOS 13 Scene Delegate","url":"https://www.donnywals.com/understanding-the-ios-13-scene-delegate/","recommender":"anotheren"},{"heading":"基于 SwiftSyntax 写一个命令行工具检测 Xcode 项目中不用的图片资源","url":"https://juejin.im/post/5dc2a969f265da4d2a432249","recommender":"anotheren"},{"heading":"iOS 程序员眼中的 Emoji","url":"https://juejin.im/post/5dc3b9a46fb9a04a95289a84","recommender":"zvving"},{"heading":"5 Reasons Why Apps Fail & How To Avoid Them","url":"https://simpleprogrammer.com/why-apps-fail","recommender":"老驴"},{"heading":"Flutter 性能分析","url":"https://mp.weixin.qq.com/s/VydPJnfEno0-yvGdS5P0Ug","recommender":"五子棋"},{"heading":"iShot 截图工具","url":"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","recommender":"含笑饮砒霜"},{"heading":"Topology","url":"https://github.com/le5le-com/topology","recommender":"Jimq"},{"heading":"xcdiff - A tool which helps you diff xcodeproj files","url":"https://github.com/bloomberg/xcdiff","recommender":"xiaofei86"},{"heading":"LDNetDiagnoService","url":"https://github.com/Lede-Inc/LDNetDiagnoService_IOS","recommender":"莲叔"},{"heading":"UIFontComplete","url":"https://github.com/Nirma/UIFontComplete","recommender":"anotheren"},{"heading":"FSPagerView","url":"https://github.com/WenchaoD/FSPagerView","recommender":"老峰"}]},{"id":"r-090-2019-11-11","type":"report","title":"老司机 iOS 周报 #90 | 2019-11-11","issue":90,"date":"2019-11-11","year":2019,"path":"Reports/2019/#90-2019.11.11.md","url":"Reports/2019/%2390-2019.11.11.md","excerpt":"用 Flutter 打包 iOS 应用的一些细节知识：本文向大家介绍 Flutter 的构建系统是如何将 Flutter 项目 (及其资源) 转换为 iOS 应用包的。可以直接使用 Flutter 工具生成，也可以使用自定义的 Xcode 或 Gradle 设置。 分析了 Flutter iOS 应用包中 Flutter.frame；Best resources for Advanced iOS Developer (Swift)：作者","sections":[{"heading":"用 Flutter 打包 iOS 应用的一些细节知识","url":"https://mp.weixin.qq.com/s/PsvVFoB91_jGzibFPIwnIw","recommender":"含笑饮砒霜"},{"heading":"Best resources for Advanced iOS Developer (Swift)","url":"https://medium.com/flawless-app-stories/best-resources-for-advanced-ios-developer-swift-ade30374593d","recommender":"AidenRao"},{"heading":"美团 iOS 端开源框架 Graver 在动态化上的探索与实践","url":"https://mp.weixin.qq.com/s/PD9hnWv8B32ZCYj1UokUBA","recommender":"老驴"},{"heading":"Device Identifiers and Fingerprinting on iOS","url":"https://nshipster.com/device-identifiers/","recommender":"JimQ"},{"heading":"Dart2.6正式版发布","url":"https://mp.weixin.qq.com/s/9xCrzEmwOf8P9MzpQ4COaQ","recommender":"CrazyCoderShi"},{"heading":"中文独立博客列表","url":"https://github.com/timqian/chinese-independent-blogs","recommender":"EyreFree"},{"heading":"cocoapods-static-swift-framework","url":"https://github.com/leavez/cocoapods-static-swift-framework"},{"heading":"Repeat - 轻量级定时器","url":"https://github.com/malcommac/Repeat","recommender":"五子棋"},{"heading":"Swift.org - Swift Numerics","url":"https://swift.org/blog/numerics/","recommender":"享耳先森"},{"heading":"SDWebImageSwiftUI","url":"https://github.com/SDWebImage/SDWebImageSwiftUI","recommender":"四娘"},{"heading":"5 iOS Libraries to Improve and Inspire Your UI","url":"https://medium.com/better-programming/5-ios-libraries-to-improve-and-inspire-your-ui-3a7c768a176c","recommender":"极速男孩"},{"heading":"Swiftly - Swift 5.1 references for busy coders","url":"https://swiftly.dev/","recommender":"水水"}]},{"id":"r-089-2019-11-04","type":"report","title":"老司机 iOS 周报 #89 | 2019-11-04","issue":89,"date":"2019-11-04","year":2019,"path":"Reports/2019/#89-2019.11.04.md","url":"Reports/2019/%2389-2019.11.04.md","excerpt":"SSWG Annual Update：本文是 SSWG (Swift Server Work Group) 小组向我们分享的他们在去年设定的工作目标上的最新进展。文章一开始介绍了他们的工作方式，即通过一个叫做 孵化过程（Incubation Process） 的机制，或流程（类似 Swift Evolution）来保；iOS 13.2 为何杀 App 这么频繁以及什么是 wakeup：升级 iOS 13.2 后微信在后台频繁被杀给大量用","sections":[{"heading":"SSWG Annual Update","url":"https://swift.org/blog/sswg-update/","recommender":"looping"},{"heading":"iOS 13.2 为何杀 App 这么频繁以及什么是 wakeup","url":"https://imtx.me/archives/2809.html","recommender":"zvving"},{"heading":"Packages 的开发和提交","url":"https://mp.weixin.qq.com/s/sDstU5YqwFHzbMxPAfbkvw","recommender":"CrazyCoderShi"},{"heading":"Draft Proposal: Swift PM Package Resources","url":"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","recommender":"享耳先森"},{"heading":"MetricKit","url":"https://nshipster.com/metrickit/","recommender":"AidenRao"},{"heading":"macOS 内核之从 I/O Kit 电量管理开始 | 枫言枫语","url":"https://justinyan.me/post/3961","recommender":"莲叔"},{"heading":"iOS 调试 Rust","url":"https://juejin.im/post/5db06e03e51d452a284c0d92","recommender":"EyreFree"},{"heading":"Mac下通过Apple Configurator 2获取ipa包","url":"https://juejin.im/post/5c6e87af51882523f02666a6","recommender":"含笑饮砒霜"},{"heading":"闲鱼前端基于serverless的一种多端开发解决方案","url":"https://mp.weixin.qq.com/s/VLsVTe4ZyOJ9rNyVf5aXyg","recommender":"极速男孩"},{"heading":"SwiftSyntax 详解","url":"https://juejin.im/post/5dac6d3ef265da5b741514b0","recommender":"老峰"},{"heading":"Announcing the pod merge plugin for Cocoapods!","url":"https://swiftier.co/2019-10-17/announcing-cocoapods-pod-merge","recommender":"四娘"},{"heading":"InjectionIII","url":"https://github.com/johnno1962/InjectionIII","recommender":"EyreFree"},{"heading":"dirtrace - 终极文件夹内容占比查看工具","url":"https://mp.weixin.qq.com/s/BJF35SFlM7oU8mvT8duBRg","recommender":"水水"}]},{"id":"r-088-2019-10-28","type":"report","title":"老司机 iOS 周报 #88 | 2019-10-28","issue":88,"date":"2019-10-28","year":2019,"path":"Reports/2019/#88-2019.10.28.md","url":"Reports/2019/%2388-2019.10.28.md","excerpt":"浅谈移动工程师跨界机器学习之路：移动开发工程师，尤其是 iOS 开发，到底有没有人要，堪称是技术界的薛定谔的猫问题。但从另一方面看，移动开发的市场大幅降温、回归理性也是事实。本文作者是近期新加入老司机编辑@五子棋大佬，来自于手淘的 MNN 团队（MNN 是手淘开发的移动端 AI 前向计算框架），结合自己的经历，；Swift 5.2 将使用新的诊断框架：可能是大家最经常在 Swift 看到的编译错误，它很准确地描述了问题，但却对于解决问题","sections":[{"heading":"浅谈移动工程师跨界机器学习之路","url":"http://satanwoo.github.io/2019/10/27/MNN1/","recommender":"莲叔"},{"heading":"Swift 5.2 将使用新的诊断框架","url":"https://juejin.im/post/5dac17efe51d4524d6748831","recommender":"四娘"},{"heading":"The Scene Delegate In Xcode 11 And iOS 13","url":"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","recommender":"张嘉夫"},{"heading":"Chris Lattner 讲述 Swift 起源故事","url":"https://juejin.im/post/5daaf962f265da5b6a16aa87","recommender":"老峰"},{"heading":"iOS 开发请您面向未来学习","url":"https://juejin.im/post/5da6d14ae51d4524b601b78a","recommender":"EyreFree"},{"heading":"SwiftUI Layout System | Alexander Grebenyuk","url":"https://kean.github.io/post/swiftui-layout-system","recommender":"四娘"},{"heading":"小程序底层实现原理及思考","url":"https://mp.weixin.qq.com/s/T6Mcu24Cmih-E_VCUo3PEQ","recommender":"老驴"},{"heading":"如何只用 Swift 写一款句子阅读 App","url":"https://www.iweslie.com/index.php/archives/219/","recommender":"JimQ"},{"heading":"Swift​UI Previews on macOS Catalina and Xcode 11","url":"https://nshipster.com/swiftui-previews/","recommender":"J_Knight_"},{"heading":"看到这篇启动优化，让你的App有顺滑无比的启动速度~~","url":"https://juejin.im/post/5cff0ada6fb9a07edc0b4c3c","recommender":"极速男孩"},{"heading":"Type-safe User Defaults","url":"https://danieltull.co.uk//blog/2019/10/09/type-safe-user-defaults/","recommender":"zvving"},{"heading":"IOSSecuritySuite -  An advanced and easy-to-use platform security & anti-tampering library","url":"https://github.com/securing/IOSSecuritySuite","recommender":"五子棋"},{"heading":"MNN -  A lightweight deep neural network inference engine","url":"https://github.com/alibaba/MNN","recommender":"五子棋"},{"heading":"bytedance/AWERTL · GitHub","url":"https://github.com/bytedance/AWERTL/blob/master/README.md","recommender":"kyo"}]},{"id":"r-087-2019-10-21","type":"report","title":"老司机 iOS 周报 #87 | 2019-10-21","issue":87,"date":"2019-10-21","year":2019,"path":"Reports/2019/#87-2019.10.21.md","url":"Reports/2019/%2387-2019.10.21.md","excerpt":"Transporter Now Available on the Mac App Store：Xcode 11 中 Apple 移除了 Application Loader，导致如果你需要上传 ipa 或 pkg 只能使用 Archive 功能或者必须依赖 Xcode 10.3 或更早版本的 Application Loader。现在，Transporter 作为替代品，；前端从 0-1 学习：由知识小集团队 Lefe 发起的前端小课，","sections":[{"heading":"Transporter Now Available on the Mac App Store","url":"https://developer.apple.com/news/?id=10152019a","recommender":"anotheren"},{"heading":"前端从 0-1 学习","url":"https://juejin.im/post/5d9fc32f5188256c6d51dae6","recommender":"张嘉夫"},{"heading":"Flutter in action 闲鱼技术最佳实践","url":"https://mp.weixin.qq.com/s/RzvJeT_w69oZJmS9JHGBCg","recommender":"CrazyCoderShi"},{"heading":"Objective-C objc_msgSend 方法的新原型","url":"https://zhuanlan.zhihu.com/p/86358529","recommender":"五子棋"},{"heading":"Flutter 浪潮下的音视频研发探索","url":"https://mp.weixin.qq.com/s/GqoAMeuv1VRDpWT65YMzsQ","recommender":"含笑饮砒霜"},{"heading":"如何在 Flutter 上实现高性能的动态模板渲染","url":"https://mp.weixin.qq.com/s/fX6DtXYtKw0hFqf7t---eA","recommender":"老峰"},{"heading":"React Native App : White Label 101","url":"https://medium.com/flawless-app-stories/react-native-white-label-101-163c1967c12a","recommender":"looping"},{"heading":"macOS 内核之 hw.epoch 是个什么东西？ | 枫言枫语","url":"https://justinyan.me/post/3935","recommender":"四娘"},{"heading":"XcodeCleaner-SwiftUI","url":"https://github.com/waylybaye/XcodeCleaner-SwiftUI","recommender":"水水"},{"heading":"lldb-symbolic","url":"https://github.com/luoqisheng/lldb-symbolic"},{"heading":"Impact - A crash detection and recording library","url":"https://github.com/ChimeHQ/Impact","recommender":"xiaofei86"},{"heading":"ASCollectionView - A SwiftUI port of UICollectionView","url":"https://github.com/apptekstudios/ASCollectionView","recommender":"享耳先森"},{"heading":"NEKit - A toolkit for Network Extension Framework","url":"https://github.com/zhuhaow/NEKit","recommender":"EyreFree"}]},{"id":"r-086-2019-10-14","type":"report","title":"老司机 iOS 周报 #86 | 2019-10-14","issue":86,"date":"2019-10-14","year":2019,"path":"Reports/2019/#86-2019.10.14.md","url":"Reports/2019/%2386-2019.10.14.md","excerpt":"Twitter 重新上架 macOS 客户端：10 月 11 日，Twitter 重新上架了经过 Project Catalyst 重写后的 Twitter for Mac 客户端。新版 Twitter 客户端支持拖拽、深色模式、多窗口浏览以及快捷键操作等功能。；Swift 的字符串为什么这么难用？：Swift 的字符串的设计可以说是 Swift** 中最难以理解的语法之一了。不过，我们周报的小伙伴 @kemchenj 同学写了一篇通俗","sections":[{"heading":"Twitter 重新上架 macOS 客户端","url":"https://apps.apple.com/us/app/twitter-for-mac/id1482454543?mt=12","recommender":"张嘉夫"},{"heading":"Swift 的字符串为什么这么难用？","url":"https://kemchenj.github.io/2019-10-07/","recommender":"Damonwong"},{"heading":"iOS 端 h5 页面秒开优化实践","url":"https://juejin.im/post/5d8da122f265da5b5a7209fa","recommender":"莲叔"},{"heading":"The Simple Life(cycle) of a SwiftUI View","url":"https://medium.com/flawless-app-stories/the-simple-life-cycle-of-a-swiftui-view-95e2e14848a2","recommender":"老驴"},{"heading":"Reducing iOS storyboard merge hell","url":"https://medium.com/flawless-app-stories/ios-storyboard-merge-hell-b4cbb2e57dfc","recommender":"J_Knight_"},{"heading":"iOS 13","url":"https://nshipster.com/ios-13/","recommender":"老峰"},{"heading":"Alternatives to protocols in Swift","url":"https://www.swiftbysundell.com/articles/alternatives-to-protocols-in-swift/","recommender":"四娘"},{"heading":"重磅|庖丁解牛之——Flutter for Web","url":"https://mp.weixin.qq.com/s/krR2XsDXvakMlZWbV-VvSg","recommender":"邦Ben"},{"heading":"A Comprehensive Guide to All 120+ Settings URLs Supported by iOS and iPadOS 13.1","url":"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","recommender":"享耳先森"},{"heading":"Reverse Engineering Swift Applications","url":"https://github.com/iOS-Reverse-Engineering-Dev/Swift-Apps-Reverse-Engineering/blob/master/Reverse%20Engineering%20Swift%20Applications.pdf","recommender":"极速男孩"},{"heading":"基于 NSProxy 开发的支持数据绑定、事件绑定的库","url":"https://github.com/ghwghw4/GICDataBinding","recommender":"含笑饮砒霜"},{"heading":"Flutter 动画组件","url":"https://juejin.im/post/5d9c701e6fb9a04e187c9799?from=timeline&isappinstalled=0","recommender":"CrazyCoderShi"},{"heading":"Yaap: Yet Another (Swift) Argument Parser","url":"https://github.com/hartbit/Yaap","recommender":"anotheren"},{"heading":"xcderiveddata","url":"https://github.com/NSHipster/xcderiveddata","recommender":"Jimq"},{"heading":"ggtalk | 互联网公司的开发流程","url":"https://talk.swift.gg/47?from=timeline&isappinstalled=0","recommender":"ggtalk"}]},{"id":"r-085-2019-09-30","type":"report","title":"老司机 iOS 周报 #85 | 2019-09-30","issue":85,"date":"2019-09-30","year":2019,"path":"Reports/2019/#85-2019.09.30.md","url":"Reports/2019/%2385-2019.09.30.md","excerpt":"Swift Release Process：Swift 宣布接下来的 5.2 版本会专注于提升性能。；开源 React Native 组件库 beeshell 2.0 发布：近期美团发布了 React Native 组件库 beeshell 2.0，共计开源 38（33 个组件与 5 个工具）个功能。同时本文也对这套组件的系统设计和方案实现进行了详细的讲解，并描述了这套工具在测试和开发调试上的探索，最后也列出了他们对组件库开源建设的长期","sections":[{"heading":"Swift Release Process","url":"https://swift.org/blog/5-2-release-process/","recommender":"四娘"},{"heading":"开源 React Native 组件库 beeshell 2.0 发布","url":"https://mp.weixin.qq.com/s/5XgNTQdBm4QxiStj8dFtHg","recommender":"looping"},{"heading":"iOS 实践检查清单","url":"https://github.com/Binlogo/iOS-Practice-Checklist","recommender":"Parsifal"},{"heading":"将 flutter_web 迁移到 flutter1.9+","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/1671","recommender":"邦Ben"},{"heading":"Flutter 无痕埋点","url":"https://juejin.im/post/5d8c6d40f265da5b633cc5a2","recommender":"CrazyCoderShi"},{"heading":"Apple Push Notification Device Tokens","url":"https://nshipster.com/apns-device-tokens/","recommender":"享耳先森"},{"heading":"Flutter Face Detection","url":"https://medium.com/flutter-community/flutter-face-detection-ac18e3e2211f","recommender":"老驴"},{"heading":"iOS 13 适配要点总结","url":"https://juejin.im/post/5d8af88ef265da5b6e0a23ac","recommender":"anotheren"},{"heading":"Xcode 11 初体验","url":"https://juejin.im/post/5d8b0b6951882502c5533e9b","recommender":"J_Knight_"},{"heading":"SwiftNIO —— Swift 版的 Netty","url":"https://juejin.im/post/5d774b2ce51d453b5c121948","recommender":"xiaofeu86"},{"heading":"Swift Concurrency Manifesto 中文翻译","url":"https://gist.github.com/yxztj/7744e97eaf8031d673338027d89eea76","recommender":"极速男孩"},{"heading":"一个 delegate 被声明为强引用又被悄悄地改掉了","url":"https://twitter.com/chockenberry/status/1171102488205787141?s=20","recommender":"JimQ"},{"heading":"WCCgiMock - 客户端模拟网络回包工具介绍","url":"https://juejin.im/post/5d834380e51d4561ea1a9514","recommender":"红纸"},{"heading":"一种查看 Block 中引用的所有外部对象的实现方法","url":"https://juejin.im/post/5d7e3b8de51d4561ac7bcd5f","recommender":"looping"},{"heading":"我开发了一个 SwiftUI 库，将 CSS 引入 iOS 开发","url":"https://mp.weixin.qq.com/s/I0HMHBBzhxsKj528mUqXmg","recommender":"Damonwong"},{"heading":"ggtalk | 从石油到 iOS，听听思琦的转行经历","url":"https://talk.swift.gg/45?from=timeline&isappinstalled=0","recommender":"Parsifal"}]},{"id":"r-084-2019-09-23","type":"report","title":"老司机 iOS 周报 #84 | 2019-09-23","issue":84,"date":"2019-09-23","year":2019,"path":"Reports/2019/#84-2019.09.23.md","url":"Reports/2019/%2384-2019.09.23.md","excerpt":"《WWDC19 内参》专栏免费开放啦：《WWDC19 内参》是 iOS 三大组织（老司机 iOS 周报、SwiftGG 翻译组、知识小集），一起联名发起的一个小专栏，这个专栏集结了三大组织内的一线 iOS 工程师，为你深度解读 WWDC19 中那些值得关注的 Session。上周 iOS 13 正式推送，如何在 iO；Flutter 1.9 正式发布：在谷歌为中国开发者举办的最高级别会议 Google Developer Days 的第","sections":[{"heading":"《WWDC19 内参》专栏免费开放啦","url":"https://xiaozhuanlan.com/wwdc19?rel=7579246804","recommender":"老峰"},{"heading":"Flutter 1.9 正式发布","url":"https://mp.weixin.qq.com/s/A58tTlb4jeJ3qyPdSiDVMA","recommender":"CrazyCoderShi"},{"heading":"iOS 13 APNS Device Token 兼容问题","url":"https://info.umeng.com/detail?id=174&&cateId=1","recommender":"享耳先森"},{"heading":"RxSwiftWidgets: Declarative Development for UIKit","url":"https://medium.com/better-programming/introducing-rxswiftwidgets-f7a81bc54fe1","recommender":"zvving"},{"heading":"小程序底层实现原理及一些思考","url":"https://mp.weixin.qq.com/s/EbO7Wp6s29X9YliA2M-iCg","recommender":"Damonwong"},{"heading":"Google Engineering Practices Documentation","url":"https://github.com/google/eng-practices","recommender":"张嘉夫"},{"heading":"GitHub Actions 入门教程","url":"http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html","recommender":"红纸"},{"heading":"App Store Review Guidelines -- Sign in with Apple","url":"https://developer.apple.com/app-store/review/guidelines/?from=groupmessage&isappinstalled=0#sign-in-with-apple","recommender":"极速男孩"},{"heading":"WWDC 2019: 机器学习移动端的峥嵘初现 Core ML 3.0","url":"https://www.jianshu.com/p/eed7dd1d266b","recommender":"莲叔"},{"heading":"WWDC 2019: 机器学习新工具 Create ML App","url":"https://www.jianshu.com/p/a5ca26d296ba","recommender":"莲叔"},{"heading":"技术面试最后反问面试官的话","url":"https://github.com/yifeikong/reverse-interview-zh","recommender":"AidenRao"},{"heading":"iOS13 适配","url":"https://juejin.im/post/5d745f8af265da03b5746fa0","recommender":"J_Knight_"},{"heading":"Dio 3.0发布，支持Flutter Web 和 Http/2.0","url":"https://juejin.im/post/5d822aefe51d4561cf15e07e?utm_source=gold_browser_extension","recommender":"邦Ben"},{"heading":"在 Xcode 11 中创建一个不带有 storyboard 的项目的方法有些新变化","url":"https://www.youtube.com/watch?v=Htn4h51BQsk","recommender":"含笑饮砒霜"}]},{"id":"r-083-2019-09-09","type":"report","title":"老司机 iOS 周报 #83 | 2019-09-09","issue":83,"date":"2019-09-09","year":2019,"path":"Reports/2019/#83-2019.09.09.md","url":"Reports/2019/%2383-2019.09.09.md","excerpt":"App Store Connect warning: UIWebView API deprecation：上月（8月）底陆续有人在打包上传到 App Store 时收到苹果审核的反馈邮件，提到他们将会停止接收还在使用 UIWebView API 的应用，希望开发者在下次提交的时候处理好这个问题。同时在 GitHub 上观察到有使用 UIWebView 的大部分主流开源库也收到了开发者；从 Flutter Go 到 Flutter Go ","sections":[{"heading":"App Store Connect warning: UIWebView API deprecation","url":"https://forum.ionicframework.com/t/app-store-connect-warning-uiwebview-api-deprecation/172063/3","recommender":"looping"},{"heading":"从 Flutter Go 到 Flutter Go web - 手把手带你轻松玩转 Flutter-web（一）","url":"https://juejin.im/post/5d6a9456e51d4561cc25f080","recommender":"极速男孩"},{"heading":"在闲鱼实习做 Flutter 是什么感受？","url":"https://mp.weixin.qq.com/s/DVl6s3EE5pKMoE-qltsK3A","recommender":"老峰"},{"heading":"Should you write your app in SwiftUI?","url":"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","recommender":"水水"},{"heading":"iOS调试Block引用对象无法被释放的一个小技巧","url":"https://juejin.im/post/5d70655e518825618e67ad63","recommender":"J_Knight_"},{"heading":"马蜂窝视频编辑框架设计及在 iOS 端的业务实践","url":"https://mp.weixin.qq.com/s/-GGbakkEe7dmC23HT0k3ow","recommender":"莲叔"},{"heading":"Dark Mode on i​OS 13","url":"https://nshipster.com/dark-mode/","recommender":"红纸"},{"heading":"历时五天用 SwiftUI 做了一款 APP，阿里工程师如何做的？","url":"https://mp.weixin.qq.com/s/QgDSuTFjwFlXzhksfgmkIQ","recommender":"四娘"},{"heading":"The Curious Case of the Core Data Crash","url":"https://blog.iconfactory.com/2019/08/the-curious-case-of-the-core-data-crash","recommender":"anotheren"},{"heading":"在 Flutter 中如何把报错信息通过服务上传","url":"https://mp.weixin.qq.com/s/foCab1u5je34MdMeb2_-2w","recommender":"CrazyCoderShi"},{"heading":"RxSwift异步事件追踪定位工具的研发历程","url":"https://mp.weixin.qq.com/s/h48jcWghZBysU0-0gH8bog","recommender":"AidenRao"},{"heading":"Unused code cleanup in iOS projects","url":"https://www.onswiftwings.com/unused-code-cleanup/","recommender":"zvving"},{"heading":"KKJSBridge","url":"https://github.com/karosLi/KKJSBridge","recommender":"享耳先森"},{"heading":"TTAnalyzeLoadTime","url":"https://github.com/huakucha/TTAnalyzeLoadTime","recommender":"张嘉夫"},{"heading":"LookinServer","url":"https://github.com/QMUI/LookinServer","recommender":"Jimq"},{"heading":"ggtalk | 没事刷刷算法","url":"https://talk.swift.gg/41?from=timeline&isappinstalled=0","recommender":"AidenRao"}]},{"id":"r-082-2019-09-02","type":"report","title":"老司机 iOS 周报 #82 | 2019-09-02","issue":82,"date":"2019-09-02","year":2019,"path":"Reports/2019/#82-2019.09.02.md","url":"Reports/2019/%2382-2019.09.02.md","excerpt":"苹果秋季发布会将在北京时间 9 月 11 日凌晨 1 点举办：一年一度的苹果秋季发布会的时间终于落定了，将于 9 月 11 日凌晨 1 点开始。你可以到 Apple 官网，也可以上腾讯视频、爱奇艺、优酷、哔哩哔哩等多个平台观看，不用到现场，通通都是前排的待遇。；重磅！滴滴跨端框架 Chameleon 1.0 正式发布：Chameleon (简写 CML ) 是滴滴开发团队历时三年打磨的一套跨端解决方案, 最近终于发布了 1.0 版本。C","sections":[{"heading":"苹果秋季发布会将在北京时间 9 月 11 日凌晨 1 点举办","url":"https://mp.weixin.qq.com/s/EWItcscmIAhRsAoBRD70Qg"},{"heading":"重磅！滴滴跨端框架 Chameleon 1.0 正式发布","url":"https://mp.weixin.qq.com/s/kl9JwiS5_IHIZUAW-hPJBQ","recommender":"CrazyCoderShi"},{"heading":"基于 Mach-O 文件的静态链接的分析","url":"https://juejin.im/post/5d527867f265da03ed1946d2","recommender":"含笑饮砒霜"},{"heading":"Code Review 最佳实践","url":"https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666544605&idx=1&sn=56fe6b058f31d888e9df6509f97d06ca","recommender":"享耳先森"},{"heading":"Xcode Hacks to Make Your Life Easier","url":"https://medium.com/better-programming/xcode-hacks-cf32434cbc2","recommender":"老峰"},{"heading":"The power of Environment in SwiftUI","url":"https://mecid.github.io/2019/08/21/the-power-of-environment-in-swiftui/","recommender":"小非86"},{"heading":"A Swift YogaKit Guide to Flexbox","url":"https://medium.com/swlh/a-swift-yogakit-guide-to-flexbox-fec74e1bffaf","recommender":"小非86"},{"heading":"避免 iOS 组件依赖冲突的小技巧","url":"https://juejin.im/post/5d6723d5e51d453b386a6351","recommender":"J_Knight_"},{"heading":"YYText 源码剖析：CoreText 与异步绘制","url":"https://www.jianshu.com/p/b9ac1b5d8f01","recommender":"红纸"},{"heading":"独立开发者账号被封与解封回顾","url":"https://github.com/cyanzhong/apple-terminated-my-dev-account/blob/master/LOOK_BACK_CN.md","recommender":"anotheren"},{"heading":"BlockHook with Invocation(2)","url":"http://yulingtianxia.com/blog/2019/08/11/BlockHook-with-Invocation-2/","recommender":"[BlockHook](https"},{"heading":"CombineX","url":"https://github.com/luoxiu/CombineX","recommender":"zvving"},{"heading":"Flutter 通用基础库 flutter_luakit_plugin","url":"https://juejin.im/post/5c34597651882523d3200c98","recommender":"邦Ben"}]},{"id":"r-081-2019-08-26","type":"report","title":"老司机 iOS 周报 #81 | 2019-08-26","issue":81,"date":"2019-08-26","year":2019,"path":"Reports/2019/#81-2019.08.26.md","url":"Reports/2019/%2381-2019.08.26.md","excerpt":"Modular Architecture in iOS：在大型项目中，经常会有这样的场景：我们明明只修改了一部分代码，却把整个工程编译了一次。在这篇文章里作者通过使用 Cocoapods 实现模块化，将每部分模块编译为 Framework 动态库，宿主 App 依赖这些模块,从而实现模块化，文章给出了具体的操作过程，以及示例感兴趣的读；UIDocument From Scratch：UIDocument 是苹果提供给我们方便的管理文档的","sections":[{"heading":"Modular Architecture in iOS","url":"https://medium.com/flawless-app-stories/a-modular-architecture-in-swift-aafd9026aa99","recommender":"老峰"},{"heading":"UIDocument From Scratch","url":"https://www.raywenderlich.com/1809473-uidocument-from-scratch?utm_campaign=rw-weekly-issue-231&utm_medium=email&utm_source=rw-weekly&__s=mppzsrcqwzmhtwhkt6vh","recommender":"极速男孩"},{"heading":"知识小集官网上线啦！","url":"https://mp.weixin.qq.com/s/kOwf_xJOXHi2EIdj72N7eg"},{"heading":"App Store Today editorial stories are now available on the web in full","url":"https://9to5mac.com/2019/08/15/app-store-today-web-browser/","recommender":"张嘉夫"},{"heading":"加载速度提升 15%，携程对 RN 新一代 JS 引擎 Hermes 的调研","url":"https://mp.weixin.qq.com/s/BOeuLoZjCdi61P_MhaJT0g","recommender":"looping"},{"heading":"基于 Mach-O 符号重排减少缺页中断次数来提升 iOS App 启动速度的可行性分析","url":"https://juejin.im/post/5d5a05255188251f4705fb8b","recommender":"Jimq"},{"heading":"MTFlexbox 自动化埋点探索","url":"https://mp.weixin.qq.com/s/aJcboLm5MYiGW-QC8AHHyQ","recommender":"红纸"},{"heading":"Future-Proof Your Data Persistence","url":"https://cutecoder.org/programming/future-proof-data-persistence/","recommender":"老驴"},{"heading":"lldb 入坑指北（2）-​ 15行代码搞定二进制与源码映射","url":"https://mp.weixin.qq.com/s/Bc8AJe7qRi2ED-otK0qPRA","recommender":"莲叔"},{"heading":"The power of subscripts in Swift","url":"https://www.swiftbysundell.com/posts/the-power-of-subscripts-in-swift","recommender":"四娘"},{"heading":"iOS 的 Code Signing 体系","url":"https://juejin.im/post/5d3feaf7e51d4561e224a2a7","recommender":"水水"},{"heading":"通过 Signal handling（信号处理）获取任意线程调用栈","url":"https://juejin.im/post/5d5ab438f265da03af19d35b"},{"heading":"Why you should stop using Git rebase","url":"https://medium.com/@fredrikmorken/why-you-should-stop-using-git-rebase-5552bee4fed1","recommender":"享耳先森"},{"heading":"KakaJSON","url":"https://github.com/kakaopensource/KakaJSON","recommender":"AidenRao"},{"heading":"HackMan","url":"https://github.com/Cosmo/HackMan","recommender":"AidenRao"},{"heading":"CombineDataSources","url":"https://github.com/combineopensource/CombineDataSources","recommender":"zvving"},{"heading":"JXTheme","url":"https://github.com/pujiaxin33/JXTheme","recommender":"anotheren"},{"heading":"玩儿 Android flutter 版","url":"https://github.com/CCY0122/WanAndroid_Flutter","recommender":"CrazyCoderShi"}]},{"id":"r-080-2019-08-19","type":"report","title":"老司机 iOS 周报 #80 | 2019-08-19","issue":80,"date":"2019-08-19","year":2019,"path":"Reports/2019/#80-2019.08.19.md","url":"Reports/2019/%2380-2019.08.19.md","excerpt":"深入理解 iOS 事件机制：文章通过实例详细介绍 iOS 事件机制，主要包括以下内容：；Combine vs. RxSwift: Should you switch to Combine?：Apple 官宣了 Combine，让 Reactive 社区感觉异常振奋，各种分析文章层出不穷。Combine 的推出势必会加速响应式编程的流行，会的程序员越多那我们在工作中实际使用的机会也就越多。但另一方面，很多同学心中也会有这样一个问题，Com","sections":[{"heading":"深入理解 iOS 事件机制","url":"https://juejin.im/post/5d396ef7518825453b605afa#heading-24","recommender":"老峰"},{"heading":"Combine vs. RxSwift: Should you switch to Combine?","url":"https://quickbirdstudios.com/blog/combine-vs-rxswift/","recommender":"莲叔"},{"heading":"由「抖音二进制文件重排」想到的","url":"https://mp.weixin.qq.com/s/_IZOXjwaeSmRJ2tcpdd8kg","recommender":"zvving"},{"heading":"RxSwift 兼容 Combine 的讨论","url":"https://github.com/ReactiveX/RxSwift/issues/1999","recommender":"没故事的卓同学"},{"heading":"谁是 App 版本帝","url":"https://mp.weixin.qq.com/s/0qObc38K6idYXyTJRr6Bpw?scene=25#wechat_redirect","recommender":"红纸"},{"heading":"The (not so) hidden cost of sharing code between iOS and Android","url":"https://blogs.dropbox.com/tech/2019/08/the-not-so-hidden-cost-of-sharing-code-between-ios-and-android/","recommender":"老驴"},{"heading":"Create, Push, and Present Any View Controller in 1 LOC using Metaprogramming","url":"https://medium.com/@ivangoremykin/create-push-and-present-any-view-controller-in-1-loc-using-metaprogramming-33f673284d92","recommender":"xiaofei86"},{"heading":"iOS LLDB 中基于内存单指令 patch 实现反反调试","url":"http://iosre.com/t/ios-lldb-patch/15332","recommender":"J_Knight_"},{"heading":"技术人如何通过了解业务，获取晋升机会？","url":"https://mp.weixin.qq.com/s/o4CfgIcPibG_QxrsZ4x7sA","recommender":"水水"},{"heading":"Phantom types in Swift","url":"https://www.swiftbysundell.com/posts/phantom-types-in-swift","recommender":"四娘"},{"heading":"美团 iOS 工程 zsource 命令背后的那些事儿","url":"https://mp.weixin.qq.com/s/3qcv1NW4-ce87cvAS4Jsxg"},{"heading":"Catching Unsatisfiable Auto Layout Constraints in UITests on CircleCI","url":"https://instabug.com/blog/catch-unsatisfiable-auto-layout-constraints-uitest-circleci/","recommender":"looping"},{"heading":"YBTaskScheduler","url":"https://github.com/indulgeIn/YBTaskScheduler"},{"heading":"Performance @Scale 2019 recap","url":"https://engineering.fb.com/developer-tools/performance-scale-2019-recap/","recommender":"张嘉夫"},{"heading":"Flutter 的性能测试和理论","url":"https://mp.weixin.qq.com/s/mwaTZVdeceIT01DlGXWUsg","recommender":"CrazyCoderShi"}]},{"id":"r-079-2019-08-12","type":"report","title":"老司机 iOS 周报 #79 | 2019-08-12","issue":79,"date":"2019-08-12","year":2019,"path":"Reports/2019/#79-2019.08.12.md","url":"Reports/2019/%2379-2019.08.12.md","excerpt":"抖音研发实践：基于二进制文件重排的解决方案 App 启动速度提升超 15%：App 的启动速度通常是 App 给用户的第一印象，重要性不言而喻。除了传统的通过修改业务代码的方式，抖音 iOS 客户端团队，开拓性的发现通过修改代码在二进制文件的布局可以提高启动性能。；swift-corelibs-foundation Release Notes for Swift 5.x：//github.com/iblacksun)，@老驴：；7000","sections":[{"heading":"抖音研发实践：基于二进制文件重排的解决方案 App 启动速度提升超 15%","url":"https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q","recommender":"含笑饮砒霜"},{"heading":"swift-corelibs-foundation Release Notes for Swift 5.x","url":"https://github.com/apple/swift-corelibs-foundation/blob/master/Docs/ReleaseNotes_Swift5.md","recommender":"[@享耳先森](https"},{"heading":"7000 个未解决 issue，Flutter 看起来很好，用起来挺疼","url":"https://mp.weixin.qq.com/s/EAgzYQX5-4pu7HWaGwK7Ag","recommender":"CrazyCoderShi"},{"heading":"SwiftPreview","url":"https://forums.swift.org/t/pitch-standard-library-preview-package/27202"},{"heading":"SE-0261 Identifiable Protocol","url":"https://github.com/apple/swift-evolution/blob/master/proposals/0261-identifiable.md","recommender":"Damonwong"},{"heading":"CocoaPods 1.8 Beta is Here!","url":"http://blog.cocoapods.org/CocoaPods-1.8.0-beta/","recommender":"红纸"},{"heading":"Auto Layout: WTF to FTW","url":"https://www.rightpoint.com/rplabs/2019/06/wtf-auto-layout-for-ios-in-swift/","recommender":"looping"},{"heading":"Swift API-Digester","url":"https://github.com/apple/swift-nio/commit/07e7e01c76be20640ddc3770d7b16e87eedf20de","recommender":"享耳先森"},{"heading":"Matrix-iOS 耗电监控","url":"https://mp.weixin.qq.com/s/HS4DJDpCS6uppQ9WmVR_Tg","recommender":"JimQ"},{"heading":"Swift-MemoryLayout","url":"https://github.com/TannerJin/Swift-MemoryLayout","recommender":"四娘"},{"heading":"CombineCocoa","url":"https://github.com/freak4pc/CombineCocoa","recommender":"老峰"},{"heading":"CombineRxSwiftPerformance","url":"https://github.com/quickbirdstudios/CombineRxSwiftPerformance","recommender":"邦Ben"}]},{"id":"r-078-2019-08-05","type":"report","title":"老司机 iOS 周报 #78 | 2019.08.05","issue":78,"date":"2019-08-05","year":2019,"path":"Reports/2019/#78-2019.08.05.md","url":"Reports/2019/%2378-2019.08.05.md","excerpt":"swift-best-practices：随着 Swift 的稳定，越来越多的项目开始尝试 Swift 这门「新」的语言，当然会有一部分新手不太清楚如何正确的在项目中使用 Swift。swift-best-practices 就告诉了你答案。内容包括但不局限于这几点：基础 MVVM 结构、通用控制器类型、文档的编写等。；iOS 开发舆图：本文是来自戴铭的 iOS 开发全景图以及一些相关资料整理，成体系地罗列了 iOS 开发的知识点与技能","sections":[{"heading":"swift-best-practices","url":"https://github.com/Lickability/swift-best-practices"},{"heading":"iOS 开发舆图","url":"https://ming1016.github.io/2019/07/29/ios-map/","recommender":"老峰"},{"heading":"Deriving Reactive from Imperative: An Introduction to Duals","url":"https://jasdev.me/duals","recommender":"莲叔"},{"heading":"分析一个 App 需要的技术手段","url":"https://mp.weixin.qq.com/s/ZmDd3tOkHwSqCCsG7kfokQ","recommender":"含笑饮砒霜"},{"heading":"iOS Memory 内存详解","url":"https://juejin.im/post/5d3ee77ef265da039f1290b2#heading-2","recommender":"J_Knight_"},{"heading":"Rule-based logic in Swift","url":"https://www.swiftbysundell.com/posts/rule-based-logic-in-swift","recommender":"享耳先森"},{"heading":"Swift 5 之后 \"Method Swizzling\"？","url":"https://mp.weixin.qq.com/s/8z7A_-d0ZvvAJ3155DogvA","recommender":"四娘"},{"heading":"iOS Continuous Integration with GitLab CI, Fastlane & OTA Installation","url":"https://medium.com/flawless-app-stories/ios-continuous-integration-with-gitlab-ci-fastlane-and-ota-installation-from-gitlab-pages-f312e07ab06e","recommender":"水水"},{"heading":"Swift 5 for Android is here","url":"https://www.scade.io/download/?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=web"},{"heading":"SwiftUIX: An extension to the standard SwiftUI library.","url":"https://github.com/SwiftUIX/SwiftUIX","recommender":"张嘉夫"},{"heading":"apple_bleee","url":"https://github.com/hexway/apple_bleee","recommender":"anotheren"},{"heading":"用 Flutter 开发 iOS 应用","url":"https://www.bilibili.com/video/av61563879/?redirectFrom=h5","recommender":"CrazyCoderShi"}]},{"id":"r-077-2019-07-29","type":"report","title":"老司机 iOS 周报 #77 | 2019-07-29","issue":77,"date":"2019-07-29","year":2019,"path":"Reports/2019/#77-2019.07.29.md","url":"Reports/2019/%2377-2019.07.29.md","excerpt":"Flutter-Notebook：Flutter-Notebook 由 OpenFlutter 小组产出，包含了很多常规移动端开发的组件/效果实现, 在目录的最后还附上了一本 Flutter in Action, 着实为一份 Flutter 入门学习不可多得的资料:；What’s New in Natural Language APIs in iOS 13：去年，Apple 推出了 NaturalLanguage 框架，用于分析自然语言","sections":[{"heading":"Flutter-Notebook","url":"https://github.com/OpenFlutter/Flutter-Notebook/blob/master/README.md","recommender":"CrazyCoderShi"},{"heading":"What’s New in Natural Language APIs in iOS 13","url":"https://www.appcoda.com/natural-language-apis-ios-13/","recommender":"AidenRao"},{"heading":"Generalizing Swift code","url":"https://www.swiftbysundell.com/posts/generalizing-swift-code","recommender":"张嘉夫"},{"heading":"Flutter: the good, the bad and the ugly","url":"https://medium.com/asos-techblog/flutter-vs-react-native-for-ios-android-app-development-c41b4e038db9","recommender":"looping"},{"heading":"域名背后那些事","url":"https://leancloudblog.com/Domain-Name-Story-confirm/","recommender":"莲叔"},{"heading":"CAEmitter​Layer","url":"https://nshipster.com/caemitterlayer/","recommender":"J_Knight_"},{"heading":"Reducing Memory Footprint and OOM Terminations in iOS","url":"https://medium.com/flawless-app-stories/techniques-to-reduce-memory-footprint-and-oom-terminations-in-ios-a0f6bef38217","recommender":"红纸"},{"heading":"Managing background tasks with the new Task Scheduler in iOS 13","url":"https://medium.com/snowdog-labs/managing-background-tasks-with-new-task-scheduler-in-ios-13-aaabdac0d95b","recommender":"zvving"},{"heading":"Unused images and resources clean up in Xcode","url":"https://www.avanderlee.com/optimization/unused-images-clean-up/","recommender":"老峰"},{"heading":"Generate & Host your iOS Documentation","url":"https://medium.com/@jonathan2457/generate-host-your-ios-documentation-39e21b382ce8","recommender":"kyo"},{"heading":"Formatter - NSHisper","url":"https://nshipster.com/formatter/","recommender":"四娘"},{"heading":"免费又好用的 iOS UI 调试软件，Lookin 正式发布","url":"https://mp.weixin.qq.com/s/FlGfb02ZOv9YLwCfEwIsjA","recommender":"Parsifal"},{"heading":"DiffableDataSources","url":"https://ra1028.github.io/DiffableDataSources/","recommender":"享耳先森"},{"heading":"M80TableViewComponent","url":"https://github.com/xiangwangfeng/M80TableViewComponent","recommender":"anotheren"}]},{"id":"r-076-2019-07-22","type":"report","title":"老司机 iOS 周报 #76 | 2019-07-22","issue":76,"date":"2019-07-22","year":2019,"path":"Reports/2019/#76-2019.07.22.md","url":"Reports/2019/%2376-2019.07.22.md","excerpt":"Facebook 发布全新 JS 引擎！专注提高 React Native 应用的性能：React Native 作为老牌的跨端开发解决方案，在跨端开发技术栈中的地位一直稳如泰山，最近 Facebook 发布了全新的 JavaScript 引擎 - Hermes，其专注于提高 React Native 应用的性能，之前一直诟病 React Native 性能问题的同；SwiftUI：苹果的一次天才尝试：作者使用 SwiftUI 构建网易","sections":[{"heading":"Facebook 发布全新 JS 引擎！专注提高 React Native 应用的性能","url":"https://mp.weixin.qq.com/s/0KxLQjI0jWxSt7sLqkS6Hw","recommender":"CrazyCoderShi"},{"heading":"SwiftUI：苹果的一次天才尝试","url":"https://mp.weixin.qq.com/s/xcPBHcpPhgwoR2U7WpWoPA","recommender":"Parsifal"},{"heading":"[[译] 使用 Swift 5 构建 iOS 移动端群聊 App](https://juejin.im/post/5d2c6e846fb9a07ebb0564ae)","url":null,"recommender":"老峰"},{"heading":"Building a Trello-like iOS App with Drag & Drop API","url":"https://www.appcoda.com/drag-and-drop-api/","recommender":"张嘉夫"},{"heading":"KVO在不同的二进制中多个符号并存的Crash问题 | SatanWoo","url":"https://satanwoo.github.io/2017/09/11/KVO-CRASH/?nsukey=CGyordgRh0EV35bjBYi99dHiMuqF1xt%2BtRsP%2FuGBF7IlcF2xAPOWpoImKYOT%2FxRuycrPVoVq%2FAxxvVxVwandzgpmXxbcdacSBLOG2moVviVdV3iK1Wr6sfqIHRWSsJZHtiX5uyyn8g5bNuRNQVJ2ow7eT%2FLYHcfZOXOdcX8m0R5lQwwNwX7PanbfrnV1dPAmU2CwRfiaiYpGGCZYQCxmxg%3D%3D","recommender":"莲叔"},{"heading":"Swift5.0 的 Runtime 机制浅析","url":"https://juejin.im/post/5d29fb63e51d4510aa01159d","recommender":"AidenRao"},{"heading":"Better Storyboards with Xcode 11","url":"https://useyourloaf.com/blog/better-storyboards-with-xcode-11/","recommender":"J_Knight_"},{"heading":"如何写出让同事无法维护的代码？","url":"https://mp.weixin.qq.com/s/dHu36KMryF3HFPcMUXLnqA","recommender":"tom510230"},{"heading":"2019年最优秀的JIRA项目管理工具替代方案","url":"https://mp.weixin.qq.com/s/zYfBXRfjI4eLNK6BX6vY-Q","recommender":"anotheren"},{"heading":"SwiftUI-Cheat-Sheet","url":"https://github.com/SimpleBoilerplates/SwiftUI-Cheat-Sheet","recommender":"水水"},{"heading":"XCAssetsKit","url":"https://github.com/natmark/XCAssetsKit","recommender":"JimQ"},{"heading":"NSAttributedStringBuilder","url":"https://github.com/ethanhuang13/NSAttributedStringBuilder","recommender":"含笑饮砒霜"},{"heading":"Runtime","url":"https://github.com/wickwirew/Runtime","recommender":"四娘"}]},{"id":"r-075-2019-07-15","type":"report","title":"老司机 iOS 周报 #75 | 2019-07-15","issue":75,"date":"2019-07-15","year":2019,"path":"Reports/2019/#75-2019.07.15.md","url":"Reports/2019/%2375-2019.07.15.md","excerpt":"为什么Flutter是跨平台开发的终极之选：跨平台开发是当下最受欢迎、应用最广泛的框架之一。能实现跨平台开发的框架也五花八门，让人眼花缭乱。但目前最耀眼的非 Flutter 莫属。本文对 Flutter 进行了多个方面的分析，来阐述为何 Flutter 是目前跨平台开发的终极之选。；基于小程序技术栈的微信客户端跨平台实践：跨平台是今年热点，本文简单讲述了微信使用小程序技术栈的跨平台框架演进之路，并且先后通过 lvcpp 以及 flutt","sections":[{"heading":"为什么Flutter是跨平台开发的终极之选","url":"https://mp.weixin.qq.com/s/R0sk9CGPbBksSnWV9xtGSg","recommender":"CrazyCoderShi"},{"heading":"基于小程序技术栈的微信客户端跨平台实践","url":"https://mp.weixin.qq.com/s/V-H3pF9ytfXRhZG0PGIKsw","recommender":"莲叔"},{"heading":"Web 和移动端需要掌握的布局方式 - Flexbox","url":"https://mp.weixin.qq.com/s/WVqnmIbIkxsvBMhHydwHAg","recommender":"享耳先森"},{"heading":"关于iOS离屏渲染的深入研究","url":"https://zhuanlan.zhihu.com/p/72653360","recommender":"老峰"},{"heading":"[Swift vs Flutter - A side by side comparison for iOS development [Infographic]](https://blog.codemagic.io/flutter-vs-swift/)","url":null,"recommender":"张嘉夫"},{"heading":"iOS 自动化测试标签生成工具接入指南","url":"http://yulingtianxia.com/blog/2018/08/13/TBUIAutoTest-Usage/","recommender":"水水"},{"heading":"给 React Native 开发者的 Flutter 指南","url":"https://mp.weixin.qq.com/s/MyFjQJqojviYJuQKf5MsGA","recommender":"looping"},{"heading":"Swift Property Wrappers","url":"https://nshipster.com/propertywrapper/","recommender":"Damonwong"},{"heading":"UIStackView","url":"https://nshipster.com/uistackview/","recommender":"zvving"},{"heading":"UIKit equivalent in SwiftUI","url":"https://goshdarnswiftui.com/","recommender":"Parsifal"},{"heading":"Visual-Regular-Expression","url":"https://github.com/White-White/Visual-Regular-Expression","recommender":"含笑饮砒霜"},{"heading":"CocoaPods 历险 - Resolver 仲裁入口解析","url":"https://mp.weixin.qq.com/s/o-v41MlTAX2Oeg_BeSLKEw","recommender":"xiaofei86"},{"heading":"Swift-30-Projects/Project 04 - TodoTDD","url":"https://github.com/soapyigu/Swift-30-Projects/tree/master/Project%2004%20-%20TodoTDD","recommender":"Parsifal"}]},{"id":"r-074-2019-07-08","type":"report","title":"老司机 iOS 周报 #74 | 2019-07-08","issue":74,"date":"2019-07-08","year":2019,"path":"Reports/2019/#74-2019.07.08.md","url":"Reports/2019/%2374-2019.07.08.md","excerpt":"iOS 三大组织联名T恤，限时销售：//gd1.alicdn.com/imgextra/i2/38447709/O1CN01YCZQhR26oloQ4ciT0!!38447709.png400x400.jpg)；Design+Code 的 SwiftUI 教程限时优惠：//images.xiaozhuanlan.com/photo/2019/d585de14b83c09b02dfc77251164fe52.png)；Decode Row","sections":[{"heading":"iOS 三大组织联名T恤，限时销售","url":"https://m.tb.cn/h.e62VJCJ?sm=6bb793","recommender":"![](https"},{"heading":"Design+Code 的 SwiftUI 教程限时优惠","url":"https://h5.youzan.com/v2/goods/3eua57deaxury?dc_ps=2286991227876280320.200001&redirect_count=1","recommender":"![](https"},{"heading":"Decode Row & Column","url":"https://medium.com/@greg.perry/decode-row-column-8b88ad2d758c","recommender":"邦Ben"},{"heading":"Revisit iOS Autorelease 之不经意间可能被影响的优化","url":"https://satanwoo.github.io/2019/07/02/RevisitAutorelease/","recommender":"AidenRao"},{"heading":"全网最全 Flutter 与 React Native 深入对比分析","url":"https://juejin.im/entry/5d0bad4c5188257152111ed8","recommender":"tom510230"},{"heading":"360 移动端性能监控实践 QDAS-APM","url":"https://mp.weixin.qq.com/s/Vq0TDiLbexxBlqlf_lilnQ","recommender":"含笑饮砒霜"},{"heading":"iOS 开发：『Blocks』详尽总结 （二）底层原理","url":"https://juejin.im/post/5d14630ff265da1b725c1433","recommender":"老峰"},{"heading":"Using Sky Segmentation to create stunning background animations in iOS","url":"https://medium.com/flawless-app-stories/using-sky-segmentation-to-create-stunning-background-animations-in-ios-4b4b2548061","recommender":"kyo"},{"heading":"Rendering SwiftUI views to HTML","url":"https://worthdoingbadly.com/swiftui-html/","recommender":"J_Knight_"},{"heading":"Uber 使用 QUIC 协议优化 App 网络性能","url":"https://eng.uber.com/employing-quic-protocol/","recommender":"四娘"},{"heading":"Mocking a remote API in iOS","url":"https://medium.com/swlh/mocking-a-remote-api-in-ios-4376b0cab962","recommender":"xiaofei86"},{"heading":"知乎 iOS 客户端工程化工具 Venom","url":"https://www.jianshu.com/p/b65d7bb7fa32","recommender":"红纸"},{"heading":"做有温度又有生命的产品，专访色采团队","url":"https://mp.weixin.qq.com/s/GvECV6nKYpfNJJ86EJ3dIg","recommender":"[JimQ](https"},{"heading":"Flutter Studio, Version 2","url":"https://medium.com/@pmutisya/flutter-studio-version-2-41cce10fcf3d","recommender":"张嘉夫"},{"heading":"SwiftWebUI","url":"https://github.com/swiftwebui/SwiftWebUI","recommender":"Damonwong"},{"heading":"ValidatedPropertyKit","url":"https://github.com/SvenTiigi/ValidatedPropertyKit","recommender":"JimQ"},{"heading":"Burritos","url":"https://github.com/guillermomuntaner/Burritos","recommender":"Parsifal"},{"heading":"TGIF-iMatrix/MXFlutter: 基于JS的高性能Flutter动态化框架","url":"https://github.com/TGIF-iMatrix/MXFlutter","recommender":"tom510230"},{"heading":"Using Combine","url":"https://heckj.github.io/swiftui-notes/","recommender":"CrazyCoderShi"},{"heading":"字节跳动 2020 届提前批内推","url":null},{"heading":"常规内推","url":null}]},{"id":"r-073-2019-07-01","type":"report","title":"老司机 iOS 周报 #73 | 2019-07-01","issue":73,"date":"2019-07-01","year":2019,"path":"Reports/2019/#73-2019.07.01.md","url":"Reports/2019/%2373-2019.07.01.md","excerpt":"免费领取小专栏 -- WWDC2019 内参：WWDC2019 内参现已更新到 42 篇，以下是上周更新的文章，欢迎大家订阅学习~；Design+Code 的 SwiftUI 教程限时优惠：//images.xiaozhuanlan.com/photo/2019/d585de14b83c09b02dfc77251164fe52.png)；2019 年 Swift 和 Objective-C 开发者调查报告（JetBrains版）：最近知","sections":[{"heading":"免费领取小专栏 -- WWDC2019 内参","url":"https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51"},{"heading":"Design+Code 的 SwiftUI 教程限时优惠","url":"https://h5.youzan.com/v2/goods/3eua57deaxury?dc_ps=2286991227876280320.200001&redirect_count=1","recommender":"![](https"},{"heading":"2019 年 Swift 和 Objective-C 开发者调查报告（JetBrains版）","url":"https://mp.weixin.qq.com/s/0YBb9RKtvhJKLi5E9-8Cng","recommender":"xiaofei86"},{"heading":"0.3s 完成渲染！UC 信息流正文“闪开”优化实践","url":"https://www.infoq.cn/article/9UKos4Xh_6wL4Fh1FOGL","recommender":"aaaron7"},{"heading":"揭秘苹果应用审核内幕","url":"https://mp.weixin.qq.com/s/BCMyEWvMzuGcGhbkZao7uA","recommender":"老峰"},{"heading":"App Store 审核极限操作（2019.6 最新）","url":"https://xiaozhuanlan.com/topic/3571480296?from=timeline","recommender":"极速男孩007"},{"heading":"系列文章深度解读|SwiftUI 背后那些事儿","url":"https://mp.weixin.qq.com/s/ciiauLB__o-cXXfKn7lL1Q","recommender":"zvving"},{"heading":"GMTC2019 演讲实录|闲鱼基于 Flutter 的架构演进与创新","url":"https://mp.weixin.qq.com/s/-IN1D99TqpjKZRQTAbaOrQ","recommender":"Parsifal"},{"heading":"监控所有的 OC 方法耗时","url":"https://juejin.im/post/5d146490f265da1bc37f2065?utm_source=gold_browser_extension","recommender":"含笑饮砒霜"},{"heading":"BlockHook with Private Data","url":"http://yulingtianxia.com/blog/2019/06/19/BlockHook-with-Private-Data/","recommender":"Parsifal"},{"heading":"[[译]我第一次体验Kotlin Native](https://juejin.im/post/5d1716556fb9a07ef5624af8?utm_source=gold_browser_extension)","url":null,"recommender":"邦Ben"},{"heading":"How I negotiated a $300,000 job offer in Silicon Valley","url":"https://blog.usejournal.com/how-i-negotiated-a-software-engineer-offer-in-silicon-valley-f11590f5c656","recommender":"老驴"},{"heading":"WWDC session videos recap","url":"https://github.com/Blackjacx/WWDC","recommender":"红纸"},{"heading":"Dart | 什么是Mixin","url":"https://juejin.im/post/5bb204d3e51d450e4f38e2f6","recommender":"CrazyCoderShi"},{"heading":"About-SwiftUI","url":"https://github.com/Juanpe/About-SwiftUI","recommender":"[@水水]"},{"heading":"选一个好的背景让你的设计更出彩！","url":"https://mp.weixin.qq.com/s/5Q3Xb_IG3O2Lus05aY7zSQ","recommender":"邦Ben"},{"heading":"字节跳动 2020 届提前批内推","url":null},{"heading":"常规内推","url":null}]},{"id":"r-072-2019-06-24","type":"report","title":"老司机 iOS 周报 #72 | 2019-06-24","issue":72,"date":"2019-06-24","year":2019,"path":"Reports/2019/#72-2019.06.24.md","url":"Reports/2019/%2372-2019.06.24.md","excerpt":"免费领取小专栏 -- WWDC2019 内参：WWDC2019 专栏由「iOS 周报」、「SwiftGG 翻译组」和「知识小集」共同发起，我们招集了30多位优秀的同学，共同把 WWDC2019 上优质的内容进行解读。目前已解读了包含必看 14 篇，SwiftUI 5 篇文章以及推荐 17 篇文章，以下是部分目录，欢迎大家订阅；CocoaPods 1.7.2 - Master Repo CDN is Finalized!：近期发布了 1.","sections":[{"heading":"免费领取小专栏 -- WWDC2019 内参","url":"https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51"},{"heading":"CocoaPods 1.7.2 - Master Repo CDN is Finalized!","url":"http://blog.cocoapods.org/CocoaPods-1.7.2/","recommender":"享耳先森"},{"heading":"Flutter 最新进展与未来展望","url":"https://mp.weixin.qq.com/s/dC2C1jpDrQSsip6wjiejBw","recommender":"CrazyCoderShi"},{"heading":"SwiftUI or Flutter ?","url":"https://juejin.im/post/5d05b45bf265da1bcc193ff4","recommender":"邦Ben"},{"heading":"iOS Code Review - Health check of your Swift code","url":"https://benoitpasquier.com/code-review-health-check-of-swift-code/","recommender":"莲叔"},{"heading":"【译】如何正确选型，React Native 还是 Native？","url":"https://mp.weixin.qq.com/s/J-6EKH4fOroPS8RMsC9CJg","recommender":"looping"},{"heading":"SwiftyGPIO","url":"https://github.com/uraimo/SwiftyGPIO","recommender":"四娘"},{"heading":"SwiftUI Gestures, Blend Modes and 3D Transform","url":"https://m.youtube.com/watch?v=js1qFgJS67Q","recommender":"张嘉夫"}]},{"id":"r-071-2019-06-17","type":"report","title":"老司机 iOS 周报 #71 | 2019-06-17","issue":71,"date":"2019-06-17","year":2019,"path":"Reports/2019/#71-2019.06.17.md","url":"Reports/2019/%2371-2019.06.17.md","excerpt":"iOS 13 Preview：在 WWDC 2019 上苹果发布了全新的 iOS 13 版本：；Why Did Apple Reject My App? Ex-Head of App Store Review Explains：App Store 审核团队的前负责人讨论了为什么应用程序被拒绝，Apple 和 开发人员之间的竞争以及 WWDC 的规划。；SWIFTUI BY EXAMPLE：WWDC 最受瞩目的莫过于的 SwiftUI 了","sections":[{"heading":"iOS 13 Preview","url":"https://www.apple.com/ios/ios-13-preview/","recommender":"极速男孩007"},{"heading":"Why Did Apple Reject My App? Ex-Head of App Store Review Explains","url":"https://www.bloomberg.com/news/articles/2019-05-28/why-did-apple-reject-my-app-ex-head-of-app-store-review-explains","recommender":"anotherene"},{"heading":"SWIFTUI BY EXAMPLE","url":"https://www.hackingwithswift.com/quick-start/swiftui","recommender":"邦Ben"},{"heading":"Thoughts on SwiftUI","url":"https://mackuba.eu/2019/06/14/thoughts-on-swiftui/","recommender":"zvving"},{"heading":"Will Combine kill RxSwift?","url":"https://medium.com/flawless-app-stories/will-combine-kill-rxswift-64780a150d89","recommender":"Damonwong"},{"heading":"WWDC 2019","url":"https://nshipster.com/wwdc-2019/"},{"heading":"First impressions of SwiftUI","url":"https://www.cocoawithlove.com/blog/swiftui.html","recommender":"olddonkey"},{"heading":"一招教你解决 FlutterPlatformViews 内存泄露问题","url":"https://mp.weixin.qq.com/s/2CRirw1hxjJDD6e2d8xodQ","recommender":"CrazyCoderShi"},{"heading":"How To Adopt Dark Mode In Your iOS App","url":"https://www.fivestars.blog/code/ios-dark-mode-how-to.html","recommender":"J_Knight_"},{"heading":"Property wrappers to remove boilerplate code in Swift","url":"https://www.avanderlee.com/swift/property-wrappers/","recommender":"享耳先森"},{"heading":"Swift Combine 入门导读","url":"https://icodesign.me/posts/swift-combine/","recommender":"老峰"},{"heading":"新晋网红 SwiftUI —— 淘宝带你初体验","url":"https://mp.weixin.qq.com/s/x_jFcKeXSbtdK0CnfayFsw"},{"heading":"Solving-ambiguous-constraints-without-rerunning-your-app","url":"https://mar.codes/2019-05-28/Solving-ambiguous-constraints-without-rerunning-your-app","recommender":"jinmq"},{"heading":"WWDC 2019 Session Notes","url":"https://github.com/Blackjacx/WWDC"},{"heading":"RxCombine","url":"https://github.com/freak4pc/RxCombine","recommender":"四娘"},{"heading":"RxSwift to Combine Cheatsheet","url":"https://github.com/freak4pc/rxswift-to-combine-cheatsheet","recommender":"Damonwong"},{"heading":"Swift-Docker Slim Images","url":"https://github.com/apple/swift-docker/pull/140","recommender":"张嘉夫"},{"heading":"SwiftUI Hooks","url":"https://github.com/unixzii/SwiftUI-Hooks","recommender":"looping"},{"heading":"MovieSwiftUI","url":"https://github.com/Dimillian/MovieSwiftUI","recommender":"邦Ben"}]},{"id":"r-070-2019-06-03","type":"report","title":"老司机 iOS 周报 #70 | 2019-06-03","issue":70,"date":"2019-06-03","year":2019,"path":"Reports/2019/#70-2019.06.03.md","url":"Reports/2019/%2370-2019.06.03.md","excerpt":"『SwiftOldDriver 精选』调价至 1 元：『SwiftOldDriver 精选』是周报编辑去年做的一个付费专栏，内容是编辑们自己的原创或译文，总共 20 余篇。现在正式以一元价格开放，保留一元售价而不完全免费只是为了减少无脑订阅导致的一系列麻烦事儿~望谅解。；iPhone 蜂窝网络下载限制提升到 200M：iPhone 蜂窝网络下载限制从 150M 提升到了 200M，上次调整还是在 2017 年 9 月 从 100M 提升","sections":[{"heading":"『SwiftOldDriver 精选』调价至 1 元","url":"https://xiaozhuanlan.com/olddriver-selection"},{"heading":"iPhone 蜂窝网络下载限制提升到 200M","url":"https://9to5mac.com/2019/05/31/apple-iphone-cellular-limit-increased/","recommender":"JimQ"},{"heading":"开启 Cocoapods 新选项，加快项目索引速度","url":"https://kemchenj.github.io/2019-05-31/","recommender":"红纸"},{"heading":"Preparing a code base for WWDC","url":"https://wwdcbysundell.com/2019/preparing-a-code-base/"},{"heading":"腾讯新闻前端团队：Flutter Web 初体验","url":"https://mp.weixin.qq.com/s/AlTtvrsRWRLxAbJbs-Y8XA","recommender":"CrazyCoderShi"},{"heading":"Ordered Collection Diffing","url":"https://thoughtbot.com/blog/ordered-collection-diffing","recommender":"anotheren"},{"heading":"Migrating to Codable from a third party parsing library","url":"https://medium.com/@elenipapanikolo/migrating-to-codable-from-a-third-party-parsing-library-fd85298ef5a2","recommender":"极速男孩007"},{"heading":"Understanding Compilers – featuring Swift!","url":"https://www.prolificinteractive.com/2019/05/18/understanding-compilers-featuring-swift/","recommender":"莲叔"},{"heading":"Refactoring iOS app with Coordinator Pattern for Navigation","url":"https://medium.com/swift2go/refactoring-ios-app-with-coordinator-pattern-for-navigation-alfian-losari-50081bfa7a4a","recommender":"老驴"},{"heading":"技术清谈【008期】【代号：超人】","url":"https://github.com/ChenYilong/iOSInterviewQuestions/issues/124","recommender":"小T"},{"heading":"深入了解 Swift 中的初始化（Initialization）","url":"https://juejin.im/post/5ceb82056fb9a07efe2d9aab","recommender":"四娘"},{"heading":"Stride - 跨平台的 Swift IDE","url":"https://github.com/pmacro/Stride","recommender":"含笑饮砒霜"},{"heading":"launchaco","url":"https://www.launchaco.com","recommender":"张嘉夫"},{"heading":"XCTAssertAutolayout","url":"https://github.com/tarunon/XCTAssertAutolayout","recommender":"jimq"}]},{"id":"r-069-2019-05-27","type":"report","title":"老司机 iOS 周报 #69 | 2019-05-27","issue":69,"date":"2019-05-27","year":2019,"path":"Reports/2019/#69-2019.05.27.md","url":"Reports/2019/%2369-2019.05.27.md","excerpt":"WWDC19 Schedule：WWDC 2019 已临近，特此献上日程表以供各位进行提前查阅。 （另外推荐一款 macOS 下的观看应用 WWDC。）；给 iOS 开发者的 Flutter 指南：作为一名 iOS 原生开发，如何更好的进入 Flutter？该文通过类比 iOS 开发中的概念来解释 Flutter 相关的内容，都是一些相当常见的基础内容，非常适合入门。Flutter 的热加载其实提供很好的入门试错体验，毕竟，你只需要保存","sections":[{"heading":"WWDC19 Schedule","url":"https://developer.apple.com/wwdc19/schedule/#!/","recommender":"红纸"},{"heading":"给 iOS 开发者的 Flutter 指南","url":"https://mp.weixin.qq.com/s?__biz=MzUyMjg5NTI3NQ==&mid=2247483737&idx=1&sn=dd55f91bce2fd947a9951488ce39558b&chksm=f9c5ab9dceb2228bc0136d2e7b8155e84e87d6123d0e919e35ed013388c02752adbe67c48679&scene=21#wechat_redirect","recommender":"邦Ben"},{"heading":"UIButton: Padding Between Image and Text","url":"https://noahgilmore.com/blog/uibutton-padding/","recommender":"极速男孩007"},{"heading":"Improving your Swift code using value objects","url":"https://www.hackingwithswift.com/articles/188/improving-your-swift-code-using-value-objects","recommender":"含笑饮砒霜"},{"heading":"@autoreleasepool uses in 2019 Swift","url":"https://swiftrocks.com/autoreleasepool-in-2019-swift.html","recommender":"xiaofei86"},{"heading":"Building a NFC Scanner App with CoreNFC in Swift","url":"https://medium.com/appcoda-tutorials/building-nfc-product-scanner-ios-app-with-corenfc-alfian-losari-5da0365bcde5","recommender":"享耳先森"},{"heading":"Using Codable to make enums with associated values even more powerful","url":"https://blog.natanrolnik.me/codable-enums-associated-values","recommender":"zvving"},{"heading":"Empty Strings in Swift","url":"https://useyourloaf.com/blog/empty-strings-in-swift/","recommender":"[@JimQ](https"},{"heading":"OOM 与内存","url":"http://sindrilin.com/2019/05/23/oom_and_memory.html","recommender":"looping"},{"heading":"i18ns.com","url":"https://i18ns.com/zh/index.html","recommender":"张嘉夫"},{"heading":"Fledge","url":"https://github.com/mmcc007/fledge","recommender":"老峰"},{"heading":"Flutter4GitLab","url":"https://github.com/stefanJi/Flutter4GitLab","recommender":"CrazyCoderShi"}]},{"id":"r-068-2019-05-20","type":"report","title":"老司机 iOS 周报 #68 | 2019-05-20","issue":68,"date":"2019-05-20","year":2019,"path":"Reports/2019/#68-2019.05.20.md","url":"Reports/2019/%2368-2019.05.20.md","excerpt":"SE-0260 Library Evolution for Stable ABIs：目前 ABI 稳定的工作正在逐步收尾，Swift 5.0 达成的是标准库的 ABI 稳定。但这种 Module ABI 稳定的机制还没有提供给外部用户使用。；(SE-0253)Callable values of user-defined nominal types：Swift Evolution 最近通过的新的提案，（SE-0253）为 Swift 带","sections":[{"heading":"SE-0260 Library Evolution for Stable ABIs","url":"https://github.com/apple/swift-evolution/blob/master/proposals/0260-library-evolution.md","recommender":"四娘"},{"heading":"(SE-0253)Callable values of user-defined nominal types","url":"https://github.com/apple/swift-evolution/blob/master/proposals/0253-callable.md"},{"heading":"FlutterDartTips","url":"https://ibhavikmakwana.github.io/FlutterDartTips/","recommender":"olddonkey"},{"heading":"CocoaPods 1.7 新特性","url":"https://kangzubin.com/cocoapods-1.7/","recommender":"J_Knight_"},{"heading":"Image Resizing Techniques","url":"https://nshipster.com/image-resizing/","recommender":"邦Ben"},{"heading":"A Deep Dive Into Hero Widgets in Flutter","url":"https://medium.com/flutter-community/a-deep-dive-into-hero-widgets-in-flutter-d34f441eb026","recommender":"CrazyCoderShi"},{"heading":"基于协程的编程方式在移动端研发的思考及最佳实践","url":"https://mp.weixin.qq.com/s/DXj0-6YOwRcwQfsqB6CTTw"},{"heading":"Xcode Build Configuration Files","url":"https://nshipster.com/xcconfig/"},{"heading":"在闲鱼，我们如何用 Dart 做高效后端开发？","url":"https://mp.weixin.qq.com/s/jAD3hacFMVcOv9GnAfCFOw","recommender":"xiaofei86"},{"heading":"What to Expect From Marzipan","url":"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"},{"heading":"Run Swift in browsers","url":"https://swiftwasm.org/","recommender":"AidenRao"},{"heading":"Mango","url":"https://github.com/YPLiang19/Mango","recommender":"looping"},{"heading":"ui-fabric-ios","url":"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"},{"heading":"mathAI","url":"https://github.com/Roujack/mathAI","recommender":"莲叔"},{"heading":"ggtalk | 聊聊跨平台：Weex 尚能饭否？","url":"https://talk.swift.gg/30","recommender":"莲叔"}]},{"id":"r-067-2019-05-13","type":"report","title":"老司机 iOS 周报 #67 | 2019-05-13","issue":67,"date":"2019-05-13","year":2019,"path":"Reports/2019/#67-2019.05.13.md","url":"Reports/2019/%2367-2019.05.13.md","excerpt":"19 年老司机周报定制 T 恤上架啦：//user-gold-cdn.xitu.io/2019/5/9/16a9a4d3e9dca8ff?w=1000&h=668&f=jpeg&s=88292)；Google I/O for Flutter：伴随着 Google I/O 大会召开，Flutter 这几天又刷屏一波，一个好消息和一个坏消息：；MongoDB 宣布收购 Realm：MangoDB 宣布3900万美元的价格收购 Realm ，","sections":[{"heading":"19 年老司机周报定制 T 恤上架啦","url":"https://item.taobao.com/item.htm?id=592379266013","recommender":"只订做一批，错过不再有。![只要钱到位](https"},{"heading":"Google I/O for Flutter","url":"https://developers.googleblog.com/2019/05/Flutter-io19.html","recommender":"CrazyCoderShi"},{"heading":"MongoDB 宣布收购 Realm","url":"<https://realm.io/blog/mongodb-to-acquire-realm-the-future-is-bright/>","recommender":"xiaofei86"},{"heading":"泛型语法改进第一弹 —— Opaque Result Types","url":"https://kemchenj.github.io/2019-05-05/","recommender":"享耳先森"},{"heading":"What should I learn if I want to contribute to the Swift compiler?","url":"https://forums.swift.org/t/what-should-i-learn-if-i-want-to-contribute-to-the-swift-compiler/18144","recommender":"莲叔"},{"heading":"大侦探福老师——幽灵Crash谜踪案","url":"https://mp.weixin.qq.com/s/lmqeS6f3DSNsOJGywGsSsg","recommender":"邦Ben"},{"heading":"LLVM 编译器中的内置 (built-in) 函数","url":"https://juejin.im/post/5cce3955e51d453b440236ce","recommender":"looping"},{"heading":"What's new in RxSwift 5","url":"https://medium.com/@freak4pc/whats-new-in-rxswift-5-f7a5c8ee48e7","recommender":"olddonkey"},{"heading":"深入iOS系统底层之映像文件操作 API 介绍","url":"https://juejin.im/post/5c6a976ae51d451eb711a90f","recommender":"含笑饮砒霜"},{"heading":"百度App iOS工程化实践: EasyBox破冰之旅","url":"https://mp.weixin.qq.com/s/Oa52PvsHw8wS-OvYb3ArZg","recommender":"xiaofei86"},{"heading":"Sharing code between iOS and Android using J2ObjC","url":"https://medium.com/ubique-innovation/sharing-code-between-ios-and-android-using-j2objc-ecd6c4c247","recommender":"tom"},{"heading":"100-Days-Of-iOS-DataStructure-Algorithm","url":"https://github.com/renmoqiqi/100-Days-Of-iOS-DataStructure-Algorithm","recommender":"kyo"},{"heading":"搞事情之 Vapor 初探","url":"https://juejin.im/post/5ccc7d3fe51d453afc760317","recommender":"老峰"},{"heading":"SwiftKit","url":"https://github.com/SvenTiigi/SwiftKit","recommender":"张嘉夫"},{"heading":"Messier - 简单易用的Objective-C方法跟踪工具","url":"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","recommender":"红纸"},{"heading":"MaLiang - iOS 涂鸦库","url":"https://github.com/Harley-xk/MaLiang","recommender":"anotheren"}]},{"id":"r-066-2019-05-06","type":"report","title":"老司机 iOS 周报 #66 | 2019-05-06","issue":66,"date":"2019-05-06","year":2019,"path":"Reports/2019/#66-2019.05.06.md","url":"Reports/2019/%2366-2019.05.06.md","excerpt":"Flutter 豆瓣客户端：该开源库，对豆瓣客户端有一定的还原度，不过未实现部分也挺多，毕竟仅仅只是学习用途，暂时里面并没有用到更为复杂的 Rx 或者 Redux ，因此十分适合新手先上路。在学习 Flutter 的同学可以一看。；移动开发这十年：移动开发从诞生之日起，到现在已经过了十年时间，这篇文章是 InfoQ 邀请美团的藏成威老师回顾了移动开发技术的十年演变。笔者作为移动开发年限算比较久的老兵，有幸经历了其中大部分的浪潮。其中绝大","sections":[{"heading":"Flutter 豆瓣客户端","url":"https://github.com/kaina404/FlutterDouBan","recommender":"邦Ben"},{"heading":"移动开发这十年","url":"https://mp.weixin.qq.com/s/vcbHMtaJEkZhSgiRBST1YA","recommender":"莲叔"},{"heading":"Reducing FOOMs in the Facebook iOS app","url":"https://code.fb.com/ios/reducing-fooms-in-the-facebook-ios-app/","recommender":"zvving"},{"heading":"iOS App 安全加固方案调研","url":"https://mp.weixin.qq.com/s?__biz=MzI2NzI4MTEwNA==&mid=2247485642&idx=1&sn=dce8e7581d94c8d8d2b79366f6223161&chksm=ea807f75ddf7f663daf6776b0f5a98aeea2e735e08c3a5268fd00f45b5a893d0e8dbac03b0f8&mpshare=1&scene=23&srcid=%23rd","recommender":"红纸"},{"heading":"为什么需要 Reactive Programming？","url":"https://medium.com/@jasonyuh/%E5%85%B3%E4%BA%8Ereactive-programming-24a2cf28fffa","recommender":"Jason"},{"heading":"Architecturing an app with functional reactive programming","url":"https://www.welcometothejungle.co/fr/articles/functional-reactive-programming-architecture","recommender":"anotheren"},{"heading":"Optional, throws, Result, and async/await","url":"https://nshipster.com/optional-throws-result-async-await/","recommender":"xiaofei86"},{"heading":"Xcode10 New Build System And CocoaPods","url":"http://yuqiangcoder.com/2018/11/13/Xcode10-new-build-system-and-CocoaPods.html","recommender":"享耳先森"},{"heading":"Marzipanify","url":"https://github.com/steventroughtonsmith/marzipanify","recommender":"老峰"},{"heading":"手把手教你在 Flutter 项目优雅的使用 ORM 数据库","url":"https://juejin.im/post/5c45c72d6fb9a049d81c2b4c","recommender":"CrazyCoderShi"},{"heading":"NSFWDetector","url":"https://github.com/lovoo/NSFWDetector?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more","recommender":"张嘉夫"},{"heading":"InAppViewDebugger","url":"https://github.com/indragiek/InAppViewDebugger","recommender":"红纸"}]},{"id":"r-065-2019-04-29","type":"report","title":"老司机 iOS 周报 #65 | 2019-04-29","issue":65,"date":"2019-04-29","year":2019,"path":"Reports/2019/#65-2019.04.29.md","url":"Reports/2019/%2365-2019.04.29.md","excerpt":"『基于多重替换方式的 iOS 代码混淆方案』- 勘误：在 65 期，我们收录了『基于多重替换方式的 iOS 代码混淆方案』一文，后经读者反馈，我们发现这篇文章的内容存在严重的抄袭迹象。文中涉及到的混淆方案抄袭自 @kaich 的 codeobscure。目前该文章的在知乎和掘金上已经被删除，周报也在第一时间删掉了有争议的推荐内容。对；WWDC 2019 for developers: Siri, Marzipan and AR impr","sections":[{"heading":"『基于多重替换方式的 iOS 代码混淆方案』- 勘误","url":"https://www.v2ex.com/t/557888#reply88"},{"heading":"WWDC 2019 for developers: Siri, Marzipan and AR improvements, more","url":"https://9to5mac.com/2019/04/22/wwdc-developers-siri-marzipan/"},{"heading":"How to make Auto Layout more convenient in iOS","url":"https://medium.com/flawless-app-stories/how-to-make-auto-layout-more-convenient-in-ios-df3b42fed37f","recommender":"邦Ben"},{"heading":"RxSwift & MVVM - How to use RxTests to test your ViewModel","url":"https://benoitpasquier.com/how-to-use-rxtests-to-test-mvvm/","recommender":"Damonwong"},{"heading":"Conditional Compilation Part 1","url":"https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-1/","recommender":"四娘"},{"heading":"Flutter 实时视频渲染","url":"https://zhuanlan.zhihu.com/p/62821195","recommender":"CrazyCoderShi"},{"heading":"对职业发展的一些想法","url":"https://limboy.me/essay/2019/04/15/career.html"},{"heading":"How to run a single test in Xcode","url":"http://www.mokacoding.com/blog/running-one-test-in-xcode/","recommender":"老峰"},{"heading":"iOS 中的 Promise","url":"https://juejin.im/post/5cb6d1215188253fdd641c15","recommender":"四娘"},{"heading":"Preventing Infinite Loops in Swift Property Observers","url":"https://theswiftness.com/preventing-infinite-loops-in-swift-property-observers/","recommender":"张嘉夫"},{"heading":"如何画出一张合格的技术架构图？","url":"https://mp.weixin.qq.com/s/1hPZacqJuUeElyHiMxa9rw"},{"heading":"MTHawkeye","url":"https://github.com/meitu/MTHawkeye","recommender":"looping"},{"heading":"Swiftshield","url":"https://github.com/rockbruno/swiftshield","recommender":"oldonkey"},{"heading":"IkigaJSON","url":"https://github.com/Ikiga/IkigaJSON"},{"heading":"ggtalk | 聊聊我们的编程启蒙经历","url":"https://talk.swift.gg/27","recommender":"J_Knight_"}]},{"id":"r-064-2019-04-22","type":"report","title":"老司机 iOS 周报 #64 | 2019-04-22","issue":64,"date":"2019-04-22","year":2019,"path":"Reports/2019/#64-2019.04.22.md","url":"Reports/2019/%2364-2019.04.22.md","excerpt":"Designing Swift APIs：如何写出可读性更高的代码？本文提供一些示例：参数标签可以帮助我们定义清晰易读的 API，嵌套类型能提供辅助的上下文关系，强类型为代码增添必要的仪式感，可扩展的 API 设计能同时满足便捷调用和丰富定制。；Humble Asset Catalog：这两篇文章分别从各自的角度解释了在使用 Asset Catalogs 后，读取图片资源的速度变快的原因。；Let’s write Swift code ","sections":[{"heading":"Designing Swift APIs","url":"https://www.swiftbysundell.com/posts/designing-swift-apis","recommender":"zvving"},{"heading":"Humble Asset Catalog","url":"http://lingyuncxb.com/2019/04/14/HumbleAssetCatalog/","recommender":"looping"},{"heading":"Let’s write Swift code to intercept SSL Pinning HTTPS Requests","url":"https://medium.com/@kennethpoon/lets-write-swift-code-to-intercept-ssl-pinning-https-requests-12446303cc9d","recommender":"含笑饮砒霜"},{"heading":"干货 | 近万字长文详述携程大规模应用RN的工程化实践","url":"https://mp.weixin.qq.com/s?__biz=MjM5MDI3MjA5MQ==&mid=2697268025&idx=1&sn=2d197c4cf7a338246abe0d3111e16002","recommender":"Damonwong"},{"heading":"JSON as configuration files: please don’t","url":"https://arp242.net/weblog/json_as_configuration_files-_please_dont","recommender":"olddonkey"},{"heading":"Swift 5 Frozen enums","url":"https://useyourloaf.com/blog/swift-5-frozen-enums","recommender":"没故事的卓同学"},{"heading":"Asynchronous completion handlers with Result type","url":"https://mecid.github.io/2019/04/17/asynchronous-completion-handlers-with-result-type/","recommender":"邦Ben"},{"heading":"Improve your iOS team’s productivity by building features as frameworks","url":"https://medium.com/flawless-app-stories/improve-your-ios-teams-productivity-by-building-features-as-frameworks-9d2a64cbcab5","recommender":"老峰"},{"heading":"How to deploy a Swift backend on Amazon AWS","url":"https://medium.com/@gianpispi/how-to-deploy-a-swift-backend-on-amazon-aws-ea9213518c43","recommender":"小非86"},{"heading":"Disjoint-set union in C++ and Swift","url":"https://medium.com/flawless-app-stories/disjoint-set-union-data-structure-in-c-and-swift-a52703b01fcb"},{"heading":"Accio","url":"https://github.com/JamitLabs/Accio"},{"heading":"Markdown Playgrounds for Swift","url":"https://github.com/objcio/markdown-playgrounds","recommender":"莲叔"},{"heading":"深入了解 Flutter 的高性能图形渲染","url":"https://mp.weixin.qq.com/s/RNhdYtoQ8RQcjIXJReGZWA","recommender":"CrazyCoderShi"},{"heading":"ggtalk | 向架构进发","url":"https://talk.swift.gg/26","recommender":"J_Knight_"}]},{"id":"r-063-2019-04-15","type":"report","title":"老司机 iOS 周报 #63 | 2019-04-15","issue":63,"date":"2019-04-15","year":2019,"path":"Reports/2019/#63-2019.04.15.md","url":"Reports/2019/%2363-2019.04.15.md","excerpt":"T 沙龙 - 互联网寒冬来袭，移动开发者如何破局：2019 年上海第一次 T 沙龙将于 4 月 20 日下午 1 点 30 分在上海虹口区天水路 172 号金融街海伦中心 B 座准时举办，此次活动邀请到了来自饿了么、iTutorGroup、极光、以及看雪论坛的业界资深从业者为大家分享他们在移动端技术深度和广度上的实践和思考。希望；SwiftNIO 2.0 released：伴随着 Swift 5 的发布，SwiftNIO 也正式发布了 ","sections":[{"heading":"T 沙龙 - 互联网寒冬来袭，移动开发者如何破局","url":"https://www.bagevent.com/event/2546122"},{"heading":"SwiftNIO 2.0 released","url":"https://forums.swift.org/t/swiftnio-2/22136","recommender":"四娘"},{"heading":"Smoke Framework 1.0 released","url":"https://forums.swift.org/t/smoke-framework-1/22710","recommender":"享耳先森"},{"heading":"纯 Swift 项目 - Xib | Storyboard 多人协作技巧","url":"https://juejin.im/post/5c468f676fb9a049ed313183","recommender":"looping"},{"heading":"iOS app 秒开 H5 优化总结","url":"https://juejin.im/post/5c9c664ff265da611624764d","recommender":"折腾范儿_味精"},{"heading":"Building a dynamic modular iOS architecture","url":"https://medium.com/fluxom/building-a-dynamic-modular-ios-architecture-1b87dc31278b","recommender":"莲叔"},{"heading":"百度 App 网络深度优化系列（一）：DNS 优化","url":"https://www.infoq.cn/article/3QZ0o9Nmv*O0LoEPVRkN","recommender":"kyo"},{"heading":"Pure protocol factory for Interface Builder-based views","url":"https://blog.hal.codes/ib-constructible","recommender":"looping"},{"heading":"RunLoop 实战：实时卡顿监控","url":"https://juejin.im/post/5cacb2baf265da03904bf93b","recommender":"kyo"},{"heading":"Indeterminate Types chuwith Codable in Swift","url":"https://medium.com/makingtuenti/indeterminate-types-with-codable-in-swift-5a1af0aa9f3d","recommender":"极速男孩"},{"heading":"一篇文章读懂 HTTPS 及其背后的加密原理","url":"https://mp.weixin.qq.com/s/3gI8avaaaEaBJjOKitN7Fw","recommender":"J_Knight_"},{"heading":"Stubbing in pair with Swift compiler: a spy registration","url":"https://medium.com/flawless-app-stories/stubbing-in-pair-with-swift-compiler-a-spy-registration-bbfdc1cf87a1","recommender":"zvving"},{"heading":"optionals","url":"https://www.optionals.org","recommender":"张嘉夫"},{"heading":"onesignal","url":"https://onesignal.com/","recommender":"邦Ben"},{"heading":"Solutions to LeetCode by Swift","url":"<https://github.com/soapyigu/LeetCode-Swift>","recommender":"zvving"},{"heading":"Codextended","url":"https://github.com/JohnSundell/Codextended","recommender":"张嘉夫"},{"heading":"Brooklyn","url":"https://github.com/pedrommcarrasco/Brooklyn","recommender":"享耳先森"},{"heading":"SecureDefaults","url":"https://github.com/vpeschenkov/SecureDefaults","recommender":"小非86"},{"heading":"Swift 5.0 中文版官方文档","url":"https://swiftgg.gitbook.io/swift/swift-jiao-cheng","recommender":"老峰"},{"heading":"ggtalk | 三组织揭秘：知识小集 x iOS 周报 x SwiftGG","url":"https://talk.swift.gg/25","recommender":"Parsifal"}]},{"id":"r-062-2019-04-08","type":"report","title":"老司机 iOS 周报 #62 | 2019-04-08","issue":62,"date":"2019-04-08","year":2019,"path":"Reports/2019/#62-2019.04.08.md","url":"Reports/2019/%2362-2019.04.08.md","excerpt":"Can we do something for 996 programmers in China?：//996.icu/#/zh_CN) 在近来在国内互联网圈子里引发了不小的轰动，GitHub 上的仓库已经累计了 18w+ 的 star。而 Python 之父 Guido van Rossum 也同样关注着这个事件，早先就在推特上发声，而现在又在社区发起了一个讨论，希望能征集到；flutter_go：Flutter 自打发布以来一直是热","sections":[{"heading":"Can we do something for 996 programmers in China?","url":"https://zhuanlan.zhihu.com/p/61638339","recommender":"[996.ICU](https"},{"heading":"flutter_go","url":"https://github.com/alibaba/flutter-go?utm_source=gold_browser_extension","recommender":"CrazyCoderShi"},{"heading":"简单易懂 KVC 基础篇","url":"https://juejin.im/post/5c948d6a6fb9a070eb267a08","recommender":"JimQ"},{"heading":"小程序渲染架构设计","url":"https://mp.weixin.qq.com/s/D_7yvtEdwq8NM_tcb1YjMw","recommender":"折腾范儿_味精"},{"heading":"燃烧我的卡路里——Flutter 瘦内存、瘦包之图片渲染组件","url":"https://mp.weixin.qq.com/s/QwNMm0P2z7RGJ_xzhto1RQ","recommender":"tom510230"},{"heading":"运行时 Hook 所有 Block 方法调用的技术实现","url":"https://juejin.im/post/5ca0ca6e51882567e32fc44b","recommender":"含笑饮砒霜"},{"heading":"跨平台技术演进","url":"https://juejin.im/post/5ca1671651882567d41ebf6d","recommender":"aaaron7"},{"heading":"Swift Tip: Collection Protocols","url":"https://www.objc.io/blog/2019/03/26/collection-protocols/","recommender":"享耳先森"},{"heading":"A Glimpse into Generic Meta-Programming in Swift","url":"https://wezzard.com/post/2019/03/a-glimpse-into-generic-meta-programming-in-swift-d2cd","recommender":"老峰"},{"heading":"Introduction to Swift Keypaths","url":"https://appventure.me/guides/keypaths/complete_book.html","recommender":"极速男孩"},{"heading":"The Pragmatic Guide to Scalable Swift Architecture for 2019","url":"https://blog.usejournal.com/the-pragmatic-guide-to-scalable-swift-architecture-in-2019-dbe662f7f516","recommender":"四娘"},{"heading":"Everything you need to know about Loading Animations","url":"https://medium.com/flawless-app-stories/everything-you-need-to-know-about-loading-animations-10db7f9b61e","recommender":"张嘉夫"},{"heading":"cocoapods-binary","url":"https://github.com/leavez/cocoapods-binary","recommender":"小非86"},{"heading":"CIFilter.io (Core Image Filter Reference)","url":"https://noahgilmore.com/blog/cifilterio/","recommender":"anotheren"},{"heading":"Matrix for iOS/macOS","url":"https://github.com/tencent/matrix/tree/master/matrix/matrix-iOS","recommender":"J_Knight_"},{"heading":"objc_msgSend_hook","url":"https://github.com/czqasngit/objc_msgSend_hook","recommender":"红纸"},{"heading":"RoughSwift","url":"https://github.com/onmyway133/RoughSwift","recommender":"在等简历の邦Ben"},{"heading":"LVThemeKit","url":"https://github.com/lvpengwei/LVThemeKit/blob/master/README.md","recommender":"JimQ"}]},{"id":"r-061-2019-04-01","type":"report","title":"老司机 iOS 周报 #61 | 2019-04-01","issue":61,"date":"2019-04-01","year":2019,"path":"Reports/2019/#61-2019.04.01.md","url":"Reports/2019/%2361-2019.04.01.md","excerpt":"Swift 5 正式发布：Swift5 正式更新，官方提供了更新笔记说明，我们周报编辑团队的 @Tom 组织 @老老老老老老老驴，@小非86，@邦ben 和 @极速男孩 为大家做了第一手的翻译工作，方便大家了解这次对于 Swift 发展史很重要的迭代。；支付宝移动开发平台 mPaaS 正式向个人开发者开放：mPaaS 是支付宝移动开发所依赖的平台服务，它承载了支付宝这种超级 App 的日常迭代。过去半年左右的时间，mPaaS 持续向社区","sections":[{"heading":"Swift 5 正式发布","url":"https://mp.weixin.qq.com/s/-fLVdoTz3lT5Kxnea0-Avg"},{"heading":"支付宝移动开发平台 mPaaS 正式向个人开发者开放","url":"https://fw.alipay.com/alipaymarket/ability/AM010000000000002935/detail.htm"},{"heading":"Shortcuts 2.2 Brings New Apple Notes Actions, Travel Time Enhancements","url":"https://www.macstories.net/ios/shortcuts-2-2-brings-new-apple-notes-actions-travel-time-enhancements/"},{"heading":"代码自解释不是不写注释的理由","url":"https://www.infoq.cn/article/eQlxAX013D9h5b-B356Q","recommender":"代码注释通常有两种形式"},{"heading":"Swift 4.2 improves Hashable with a new Hasher struct","url":"https://www.hackingwithswift.com/articles/115/swift-4-2-improves-hashable-with-a-new-hasher-struct"},{"heading":"Swift, more elegant code: Typealias","url":"https://medium.com/@ahmadfayyas/swift-quick-elegant-code-typealias-8e6d59f07f32"},{"heading":"Flutter 实现原理及在马蜂窝的跨平台开发实践","url":"https://mp.weixin.qq.com/s/WBnj_6sOonjR9XUnB-wZPA"},{"heading":"VIPER best practices for iOS developers","url":"https://theswiftdev.com/2019/03/11/viper-best-practices-for-ios-developers/"},{"heading":"iOS 开发中的 Web 应用概述","url":"https://dequan1331.github.io/web-in-ios.html"},{"heading":"CodeHub#1 回顾 | 敏捷开发与动态更新在支付宝 App 内的实践","url":"https://mp.weixin.qq.com/s/eXzojM0lCaaCW4JxBaU6BQ"},{"heading":"What’s new in Swift 5.1","url":"https://www.hackingwithswift.com/articles/182/whats-new-in-swift-5-1"},{"heading":"Deep dive into Pattern matching with ~= operator","url":"https://mecid.github.io/2019/03/20/pattern-matching-operator/"},{"heading":"XcodeKit and Xcode Source Editor Extensions","url":"https://nshipster.com/xcode-source-extensions/"},{"heading":"How to implement service oriented architecture using swift","url":"https://itnext.io/service-oriented-architecture-in-swift-362dc454fc09"},{"heading":"通过异步生成 dSYM 实现极速打包","url":"https://github.com/bestswifter/blog/blob/master/articles/async-dsym.md"},{"heading":"LLDB 知多少","url":"https://juejin.im/post/5c8ca84ce51d456f43189dbd"},{"heading":"DevSwitch","url":"https://github.com/aaronpearce/DevSwitch"},{"heading":"flutter_flipperkit","url":"https://github.com/blankapp/flutter_flipperkit/blob/master/README.zh_CN.md"},{"heading":"ggtalk | 如何出版一本书","url":"https://talk.swift.gg/23"}]},{"id":"r-060-2019-03-25","type":"report","title":"老司机 iOS 周报 #60 | 2019-03-25","issue":60,"date":"2019-03-25","year":2019,"path":"Reports/2019/#60-2019.03.25.md","url":"Reports/2019/%2360-2019.03.25.md","excerpt":"3 月 27 日起上传 App Store 最低需须使用 iOS 12.1 SDK 编译：Apple 发布公告：请注意，自2019年3月27日起，iPhone 或 iPad 的所有新 App 和 App 更新（包括通用 App）都需要使用 iOS 12.1 SDK 构建并支持 iPhone XS Max 或 12.9 英寸 iPad Pro（第 3 代）。还需要提供这；Flutter 您需要知道的知识点：最近整理周报的时候发现关于 Fl","sections":[{"heading":"3 月 27 日起上传 App Store 最低需须使用 iOS 12.1 SDK 编译","url":"https://developer.apple.com/news/?id=03202019a"},{"heading":"Flutter 您需要知道的知识点","url":"https://mp.weixin.qq.com/s/4tdqptBIf4VHrjWmHeUKjA"},{"heading":"UIApplicationDelegate 中方法的调用顺序","url":"https://recoursive.com/2019/03/14/guide_uiapplicationdelegate_method_invocation_order/"},{"heading":"即将开源 | 让 Flutter 真正支持 View 级别的混合开发","url":"https://mp.weixin.qq.com/s/-vyU1JQzdGLUmLGHRImIvg"},{"heading":"如何构建具有多种 Cell 类型的表视图","url":"https://github.com/xitu/gold-miner/blob/master/TODO1/ios-how-to-build-a-table-view-with-multiple-cell-types.md"},{"heading":"UTF-8 String","url":"https://swift.org/blog/utf8-string/"},{"heading":"Mastering the VIPER architecture","url":"https://theswiftdev.com/2019/03/19/mastering-the-viper-architecture/"},{"heading":"Swift AVFoundation framework — Text-To-Speech tool","url":"https://blog.usejournal.com/swift-avfoundation-framework-text-to-speech-tool-f3e3bfc7ecf7"},{"heading":"Better tests for delegates","url":"http://www.mokacoding.com/blog/better-tests-for-delegates/"},{"heading":"CocoaPods 历险 - 总览","url":"https://www.desgard.com/cocoapods-1/"},{"heading":"Snail: An observables framework for Swift","url":"https://github.com/UrbanCompass/Snail"},{"heading":"swift-log","url":"https://github.com/apple/swift-log"},{"heading":"ggtalk | 区块链到底能干嘛？","url":"https://talk.swift.gg/22"}]},{"id":"r-059-2019-03-18","type":"report","title":"老司机 iOS 周报 #59 | 2019-03-18","issue":59,"date":"2019-03-18","year":2019,"path":"Reports/2019/#59-2019.03.18.md","url":"Reports/2019/%2359-2019.03.18.md","excerpt":"Help! My app freezes but no error appears：这是一篇非常有趣的关于 “入门 iOS 并发编程” 的文章。作者从一个新手容易碰到的 “界面卡死不响应了” 的问题入手，层层分析了这个问题产生的本质是 - UI 线程即主线程被耗时任务阻塞导致。如果你是一位以 iOS 为入门的新人开发者，这篇文章将能帮助你第一次认识到 iOS 中；WWDC 2019：一年一度的苹果生态开发者盛会又要来了。；Why usi","sections":[{"heading":"Help! My app freezes but no error appears","url":"https://fluffy.es/help-my-app-freezes/"},{"heading":"WWDC 2019","url":"https://developer.apple.com/wwdc19/"},{"heading":"Why using isEmpty is faster than checking count == 0","url":"https://www.hackingwithswift.com/articles/181/why-using-isempty-is-faster-than-checking-count-0"},{"heading":"Websites using Swift and AWS Lambda — Part 1","url":"https://www.jasonzurita.com/websites-using-swift-and-aws-lambda/"},{"heading":"Swift Localhost: Making XCUITest Great Again","url":"https://medium.com/quick-code/swift-localhost-making-xcuitest-great-again-115d93954cf1"},{"heading":"如何自建 Crash 平台","url":"https://www.xuyanlan.com/2019/01/14/iOS-crash-report/#more"},{"heading":"Linking Objective-C Code","url":"https://pewpewthespells.com//blog/objc_linker_flags.html"},{"heading":"一个在 Objective-C 和 Swift 中实现剖面导向编程的故事","url":"https://juejin.im/post/5c86be73f265da2dd94ce3b3"},{"heading":"PSPDFKit and Swift","url":"https://pspdfkit.com/blog/2019/swift-and-pspdfkit/"},{"heading":"Why we stopped using fastlane - Life in the slow lane","url":"https://silverhammermba.github.io/blog/2019/03/12/slowlane"},{"heading":"HTTPS 温故知新（一）— 开篇","url":"https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-begin.md"},{"heading":"开发小知识","url":"https://www.jianshu.com/p/5a4ba3c165b9"},{"heading":"最详细版本|UI2Code 智能生成 Flutter 代码——版面分析篇","url":"https://mp.weixin.qq.com/s/AkTgvv0EoydRmspEyfZNGg"},{"heading":"Flare-Swift","url":"https://github.com/2d-inc/Flare-Swift","recommender":"[Flare](https"},{"heading":"ggtalk | 聊聊跨平台：后起之秀 Flutter","url":"https://talk.swift.gg/21"}]},{"id":"r-058-2019-03-11","type":"report","title":"老司机 iOS 周报 #58 | 2019-03-11","issue":58,"date":"2019-03-11","year":2019,"path":"Reports/2019/#58-2019.03.11.md","url":"Reports/2019/%2358-2019.03.11.md","excerpt":"移动开发唱衰，iOS 开发者如何涅槃重生？：戴铭，绝对是 iOS 届的资深老司机，GMTC 全球大前端技术大会的专题出品人及讲师之一**，前滴滴出行技术专家，在组件化方案落地、工程动态化、大前端建设、应用开发阶段效率的提升、上线后各种难点问题的解决等方面的经验非常丰富。极客时间的品牌我一向比较认可，专栏品质很有保障，《iO；刚刚，阿里宣布开源 Flutter 应用框架 Fish Redux！：闲鱼团队是国内最早开始大规模使用 Flutt","sections":[{"heading":"移动开发唱衰，iOS 开发者如何涅槃重生？","url":"https://mp.weixin.qq.com/s/urSrDFbK35VYC8pihVlREg"},{"heading":"刚刚，阿里宣布开源 Flutter 应用框架 Fish Redux！","url":"https://mp.weixin.qq.com/s/8wVnL7OBzB8cbwo1vK6SRQ"},{"heading":"庖丁解牛！深入剖析 React Native 下一代架构重构","url":"https://mp.weixin.qq.com/s/dXZTqXOSi3fiOesDJ7gsFQ"},{"heading":"没有 AST, IDE 中的错误提示、自动补全、重构、语法检查......都玩不转了","url":"https://mp.weixin.qq.com/s/UYzwVRPFas6hwe2U7R0eIg"},{"heading":"How to integrate image recognition in iOS apps","url":"https://medium.com/capgemini-norway/how-to-integrate-image-recognition-in-ios-apps-6d660f37f75"},{"heading":"The Xcode Build System","url":"https://pewpewthespells.com//blog/xcode_build_system.html"},{"heading":"Swift Code Formatters","url":"https://nshipster.com/swift-format/"},{"heading":"从源码解析 Swift 弱引用","url":"https://zhuanlan.zhihu.com/p/58179258"},{"heading":"一步一步教你实现 iOS 音频频谱动画","url":"https://juejin.im/post/5c1bbec66fb9a049cb18b64c"},{"heading":"已开源|码上用它开始 Flutter 混合开发——FlutterBoost","url":"https://mp.weixin.qq.com/s/v-wwruadJntX1n-YuMPC7g"},{"heading":"How to build a simple tracker blocker for iOS","url":"https://medium.com/@nderkach/how-to-build-a-simple-tracker-blocker-for-ios-cc6c52a2d2d1"},{"heading":"Task-based concurrency in Swift","url":"https://www.swiftbysundell.com/posts/task-based-concurrency-in-swift"},{"heading":"Localization in Swift like a Pro","url":"https://gist.github.com/Dschee/700d28a34ad6d6a3c66885f592d99afd?utm_campaign=Indie+iOS+Focus+Weekly&utm_medium=rss&utm_source=Indie_iOS_Focus_Weekly_209"},{"heading":"XCSnippets","url":"https://github.com/dtaylor1701/XCSnippets"},{"heading":"MVVM-TemplateProject","url":"https://github.com/popei69/TemplateProject"},{"heading":"Nantes","url":"https://github.com/instacart/Nantes"},{"heading":"ggtalk | 如何（连续两次）获得 WWDC Scholarship","url":"https://talk.swift.gg/20"}]},{"id":"r-057-2019-03-04","type":"report","title":"老司机 iOS 周报 #57 | 2019-03-04","issue":57,"date":"2019-03-04","year":2019,"path":"Reports/2019/#57-2019.03.04.md","url":"Reports/2019/%2357-2019.03.04.md","excerpt":"#1 上周话题 | Swift ABI：读者 | @alexlee002: > > 新项目可能会优先选择 swift, 但得看对公司原有技术栈的依赖程度。ABI 稳定是一个里程碑，如果 OC 和 swift 相互调用能做到 Java 和 Kotlin 那样就更好。；#2 本周话题 | 协程：说起协程，很多人可能还比较陌生，它是一个 60 年代就已经提出概念，是一种在非抢占式多任务场景下生成可以在特定位置挂起和恢复执行入口的程序组件。；F","sections":[{"heading":"#1 上周话题 | Swift ABI","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183"},{"heading":"#2 本周话题 | 协程","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/1205"},{"heading":"Flutter 1.2 发布，带来全新的 Web 开发工具！","url":"https://mp.weixin.qq.com/s/gdKSJw05RPUSkLpeVlO6hg"},{"heading":"CocoaPods-1.6.0","url":"http://blog.cocoapods.org/CocoaPods-1.6.0-beta/"},{"heading":"阿里开源 iOS 协程开发框架 coobjc 源码分析","url":"https://mp.weixin.qq.com/s/Vy_fsn95dgag4KumpQPlTw"},{"heading":"Parallel Computation using MPS","url":"http://yulingtianxia.com/blog/2019/02/28/Parallel-Computation-using-MPS/"},{"heading":"UIView styling with functions","url":"https://felginep.github.io/2019-02-19/uiview-styling-with-functions"},{"heading":"Swift 5 Type Metadata 详解","url":"https://juejin.im/post/5c7513e7e51d451ac30154aa"},{"heading":"Using CLion as an IDE for Server-Side Swift Apps on Linux","url":"https://www.raywenderlich.com/9363-using-clion-as-an-ide-for-server-side-swift-apps-on-linux"},{"heading":"API Pollution in Swift Modules","url":"https://nshipster.com/swift-api-pollution/"},{"heading":"The perfect guide to AppStore search optimization (ASO)","url":"http://blog.rootshell.ir/2019/02/the-perfect-guide-to-appstore-search-optimization-aso/"},{"heading":"Flutter 与 iOS 原生 WebView 对比","url":"https://juejin.im/post/5c778d86e51d4506304ee348"},{"heading":"[[译] 用这些 iOS 技巧让你的 APP 性能更佳](https://juejin.im/post/5c6a0b6ef265da2de660f83f)","url":null},{"heading":"Frontend Workshop from HTML/CSS/JS to TypeScript/React/Redux","url":"https://github.com/Microsoft/frontend-bootcamp"},{"heading":"periphery","url":"https://github.com/peripheryapp/periphery"},{"heading":"chameleon","url":"https://github.com/didi/chameleon"},{"heading":"freeCodeCamp","url":"https://github.com/freeCodeCamp/freeCodeCamp"},{"heading":"iOS 开发者如何在互联网寒冬中杀出重围(付费内容)","url":"https://xiaozhuanlan.com/topic/7609328541"}]},{"id":"r-056-2019-02-25","type":"report","title":"老司机 iOS 周报 #56 | 2019-02-25","issue":56,"date":"2019-02-25","year":2019,"path":"Reports/2019/#56-2019.02.25.md","url":"Reports/2019/%2356-2019.02.25.md","excerpt":"关于 Swift ABI 稳定：迟到三年的 ABI 稳定终于要来了。；Swift 5.1 发布计划：Swift 团队近日在博客里更新了 5.1 的发布计划，这个版本的主要目标是达成 Module Stability，简单的说就是 Module 接口的向前兼容。；It’s time to stop using index(of:)：在 实现 - 增加 - 增加 - 改名 ，并且废弃原方法 - 改名 ，并且废弃原方法","sections":[{"heading":"关于 Swift ABI 稳定","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/1183"},{"heading":"Swift 5.1 发布计划","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/1161"},{"heading":"It’s time to stop using index(of:)","url":"https://www.hackingwithswift.com/articles/177/its-time-to-stop-using-index-of"},{"heading":"Swift5 新特性 @dynamicCallable 带来的动态魔法","url":null,"recommender":"一年前周报的第一期我们曾经提过"},{"heading":"架构师思维","url":"https://limboy.me/tech/2019/02/16/architect-mindset.html"},{"heading":"Behind the Proposal — SE-0200 Enhancing String Literals Delimiters to Support Raw Text","url":"https://swift.org/blog/behind-se-0200/"},{"heading":"Swift 5 Exclusivity Enforcement","url":"https://swift.org/blog/swift-5-exclusivity/"},{"heading":"How many apps use Swift in 2019?","url":"https://blog.andrewmadsen.com/post/182862756395/how-many-apps-use-swift-in-2019"},{"heading":"Painless UI Testing in iOS: Mocking the Network","url":"https://code.egym.de/painless-ui-testing-in-ios-part-1-mocking-the-network-ffbd6ab4809a"},{"heading":"Deep Diving React Native Debugging","url":"https://medium.com/@shaheenghiassy/deep-diving-react-native-debugging-ea406ed3a691"},{"heading":"分析一次有意思的需求——HTML 代码注入","url":"https://juejin.im/post/5c6f949b51882562260d37fa"},{"heading":"How I failed 39 interviews and what I’ve learned","url":"https://medium.com/flawless-app-stories/how-i-failed-39-interviews-and-what-ive-learned-515c8e6c4b53"},{"heading":"Demystifying UIKit Spring Animations","url":"https://medium.com/ios-os-x-development/demystifying-uikit-spring-animations-2bb868446773"},{"heading":"Swift 5 字符串插值之美","url":"https://swift.gg/2019/02/21/the-beauty-of-swift-5-string-interpolation/"},{"heading":"唯品会 iOS 代码覆盖率的应用实践","url":"https://mp.weixin.qq.com/s/mTXMbm0c-nCWZ8v8D1-QAA"},{"heading":"Introducing the sourcekitd Stress Tester","url":"https://swift.org/blog/sourcekitd-stress-tester/"},{"heading":"MicroKernel","url":"https://github.com/mrriddler/MicroKernel"},{"heading":"Aiolos","url":"https://github.com/IdeasOnCanvas/Aiolos"},{"heading":"EasyTransitions","url":"https://github.com/marcosgriselli/EasyTransitions"},{"heading":"Swift Community Podcast #3 - Result Type, Character Literals and Swift Evolution","url":"https://www.swiftcommunitypodcast.org/episodes/3"},{"heading":"ggtalk | 2019 准备学什么新技术？","url":"https://talk.swift.gg/18"}]},{"id":"r-055-2019-02-18","type":"report","title":"老司机 iOS 周报 #55","issue":55,"date":"2019-02-18","year":2019,"path":"Reports/2019/#55-2019.02.18.md","url":"Reports/2019/%2355-2019.02.18.md","excerpt":"TLS 1.3 in iOS：在 iOS 12.2 中，iOS 系统默认开启了对 TLS 1.3 的支持，使用 Network Framework 以及 NSURLSession 的开发者都可以使用 TLS 1.3 来建立更安全的网络连接了。；iOS 12.2. beta PWA update：在 iOS 12.2 beta 上 PWA 的能力也得到了小部分更新，由PWA打开外部网站会通过 SFSafariViewController ","sections":[{"heading":"TLS 1.3 in iOS","url":"https://mailarchive.ietf.org/arch/msg/tls/5QjzTilqjomSyzENtgfaAqQOhbA"},{"heading":"iOS 12.2. beta PWA update","url":"https://twitter.com/mhartington/status/1089292031548145666?s=21"},{"heading":"了解和分析 iOS Crash Report","url":"https://juejin.im/post/5c5edb37e51d457f926d2290"},{"heading":"iOS 原生级别后台下载详解","url":"https://juejin.im/post/5c4ed0b0e51d4511dc730799"},{"heading":"ABI Stability and More","url":"https://swift.org/blog/abi-stability-and-more/"},{"heading":"浅谈团队管理最佳实践","url":"https://jingwei.link/2019/02/05/team-management-methodology.html"},{"heading":"制作一个 Mac APP：XcodeExtension","url":"https://juejin.im/post/5c53f32be51d457fbe226fdd"},{"heading":"使用 OCLint 自定义 MVVM 规则","url":"http://yulingtianxia.com/blog/2019/01/27/MVVM-Rules-for-OCLint/"},{"heading":"如何看待软件开发？","url":"https://halfrost.com/halfrost_2018/"},{"heading":"Objective-C 单向数据流方案","url":"https://wereadteam.github.io/2017/09/30/reflow/"},{"heading":"移动开发的罗曼蒂克消亡史","url":"https://mp.weixin.qq.com/s/2xBnlmESZjq7UTtcfzqhcA"},{"heading":"ios-developer-tools","url":"https://github.com/LeoMobileDeveloper/ios-developer-tools"},{"heading":"DoraemonKit","url":"https://github.com/didi/DoraemonKit"},{"heading":"Path.swift","url":"https://github.com/mxcl/Path.swift"},{"heading":"Facebook 开源图像处理库 Spectrum，优化移动端图像生成","url":"https://www.infoq.cn/article/uF0d_ZuzxgaI3SFJm34d?utm_source=weibo&utm_medium=infoq&utm_campaign=newinfoq&utm_content=0203"},{"heading":"效果丰富的分类切换组件：JXSegmentedView (Swift版)","url":"https://github.com/pujiaxin33/JXSegmentedView"},{"heading":"The Architecture of Open Source Applications","url":"http://www.aosabook.org/en/index.html"}]},{"id":"r-054-2019-01-28","type":"report","title":"老司机 iOS 周报 #54 | 2019-01-28","issue":54,"date":"2019-01-28","year":2019,"path":"Reports/2019/#54-2019.01.28.md","url":"Reports/2019/%2354-2019.01.28.md","excerpt":"老司机翻车现场：一个业余程序员组织如何收到滴滴的侵权通知：2019 年 1 月 23 日，这是一个值得所有老司机编辑铭记的日子，我们收到了来自滴滴法务团队的侵权通知。虽然我们完全不是一个实体组织，也毫无商业性质可言，和滴滴更不在一个行业，Logo 的颜色也完全不同。但是滴滴认为我们从 18 年 1 月开始使用的 Logo 和他们在 18；Swift 5 Release Notes for Xcode 10.2 beta：万众期待中，Sw","sections":[{"heading":"老司机翻车现场：一个业余程序员组织如何收到滴滴的侵权通知","url":"https://mp.weixin.qq.com/s/9-vbYu71fPTxpGAv8EL_6w"},{"heading":"Swift 5 Release Notes for Xcode 10.2 beta","url":"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"},{"heading":"Upcoming Changes for Organization Teams","url":"https://developer.apple.com/support/teams/"},{"heading":"Server-provided animations in iOS apps","url":"https://badootech.badoo.com/server-provided-animations-in-ios-apps-b51ce63beff3"},{"heading":"A RunLoop for your Swift script","url":"https://alejandromp.com/blog/2019/01/19/a-runloop-for-your-swift-script"},{"heading":"2018，我们的组件化实施之路","url":"https://juejin.im/post/5c39b9a8e51d457cb97b944a"},{"heading":"React Native vs Kotlin Multiplatform. How the Future of Multiplatform Development Will Look Like?","url":"https://www.netguru.com/codestories/react-native-vs-kotlin-multiplatform"},{"heading":"Flutter vs React Native: A Developer’s Perspective","url":"https://medium.com/flawless-app-stories/flutter-vs-react-native-a-developers-perspective-8914ca240a89"},{"heading":"How to use the coordinator pattern in iOS apps","url":"https://www.hackingwithswift.com/articles/71/how-to-use-the-coordinator-pattern-in-ios-apps"},{"heading":"Xcode tips and tricks – part two","url":"https://www.hackingwithswift.com/articles/168/xcode-tips-and-tricks-part-two"},{"heading":"WKWebView 实现浏览历史恢复","url":"https://oldoldb.com/2019/01/16/Session-restoration/"},{"heading":"细说 iOS 代码签名","url":"http://xelz.info/blog/2019/01/11/ios-code-signature/"},{"heading":"Clear and searchable logging in Swift with OSLog","url":"https://www.lordcodes.com/posts/clear-and-searchable-logging-in-swift-with-oslog"},{"heading":"以流的形式执行 Multipart 请求","url":"https://swift.gg/2019/01/21/streaming-multipart-requests/"},{"heading":"Using protocols as composable extensions","url":"https://mecid.github.io/2019/01/17/using-protocols-as-composable-extensions/"},{"heading":"使用 Flutter 一年后，这是我得到的经验","url":"https://mp.weixin.qq.com/s/FmK0RMCNNJe68Aq7tOUROA"},{"heading":"UIKitSwiftDSL","url":"https://github.com/mecid/UIKitSwiftDSL"},{"heading":"flutter-go","url":"https://github.com/alibaba/flutter-go"},{"heading":"habbit","url":"https://github.com/lzyy/habbit"},{"heading":"swift-algorithm-club-cn","url":"https://github.com/andyRon/swift-algorithm-club-cn"},{"heading":"ggtalk | 广义跳槽论：简洁明了的方法论","url":"https://talk.swift.gg/13"}]},{"id":"r-053-2019-01-21","type":"report","title":"老司机 iOS 周报 #53 | 2019-01-21","issue":53,"date":"2019-01-21","year":2019,"path":"Reports/2019/#53-2019.01.21.md","url":"Reports/2019/%2353-2019.01.21.md","excerpt":"热修复、生态、混合工程 | Flutter 2019 产品路线图正式公布：Flutter 的 2019 产品线路图已正式公布，热修复、生态、混合工程，可谓精确打击现有的痛处。特别是热更新，不过更多细节要等到今年的 Google I/O 大会。；Functional networking in Swift：一篇非常不错的、手把手教学的 Swift 函数式编程教程。通过使用 Swift 的函数式特性以及 Future 和 Promise 的","sections":[{"heading":"热修复、生态、混合工程 | Flutter 2019 产品路线图正式公布","url":"https://mp.weixin.qq.com/s/nRAF7g3Faz5SvsPJ1A98Iw"},{"heading":"Functional networking in Swift","url":"https://www.swiftbysundell.com/posts/functional-networking-in-swift"},{"heading":"关于 Flutter Layout 你应该知道的","url":"https://limboy.me/tech/2019/01/11/flutter-layout.html"},{"heading":"Xcode tips and tricks – part one","url":"https://www.hackingwithswift.com/articles/166/xcode-tips-and-tricks-part-one"},{"heading":"swift-sh","url":"https://nshipster.com/swift-sh/"},{"heading":"High Performance Numeric Programming with Swift: Explorations and Reflections","url":"https://www.fast.ai/2019/01/10/swift-numerics/"},{"heading":"客户端单周发版下的多分支自动化管理与实践","url":"https://tech.meituan.com/2019/01/10/traffic-git-branch-management.html"},{"heading":"【译】Language Server Protocol","url":"https://swift.gg/2019/01/15/nshipster-language-server-protocol/"},{"heading":"iOS 拾遗——为什么必须在主线程操作 UI","url":"https://juejin.im/post/5c406d97e51d4552475fe178"},{"heading":"React Native 工程中 TSLint 静态检查工具的探索之路","url":"https://mp.weixin.qq.com/s/H3GW43s1aOup2J2VQHpqjg"},{"heading":"Generate & Host your iOS Documentation","url":"https://medium.com/@jonathan2457/generate-host-your-ios-documentation-39e21b382ce8"},{"heading":"不同 WKWebView 之间实现浏览状态隔离","url":"https://oldoldb.com/2019/01/12/Session-isolation/"},{"heading":"OBJECT SERIALIZATION IN IOS","url":"https://dmtopolog.com/object-serialization-in-ios/"},{"heading":"「Keep 设计开发语言」实践与思考","url":"https://mp.weixin.qq.com/s/z880jdHhHeJhMjA6GJAaYQ"},{"heading":"Bagel","url":"https://github.com/yagiz/Bagel"},{"heading":"awesome-mac","url":"https://github.com/jaywcjlove/awesome-mac"},{"heading":"ggtalk | 狭义跳槽论：面试官，大厂新人和准备起跳的某 C","url":"https://talk.swift.gg/12"},{"heading":"Swift Community Podcast #1","url":"https://www.swiftcommunitypodcast.org/episodes/1"},{"heading":"一起来开发泊学 App 吧","url":"https://boxueio.com/path/let-us-build-and-launch-a-forum"}]},{"id":"r-052-2019-01-14","type":"report","title":"老司机 iOS 周报 #52 | 2019-01-14","issue":52,"date":"2019-01-14","year":2019,"path":"Reports/2019/#52-2019.01.14.md","url":"Reports/2019/%2352-2019.01.14.md","excerpt":"GitHub 宣布创建私有仓库免费且不限量：微软在今年 6 月收购了 GitHub，而在半年后，它给广大开发者带来了第一个福音 - 私有仓库转为免费且不限量。但值得一提的是，私有仓库目前最多仅支持 3 个协作者，如果超过 3 个，仍然需要购买付费服务。；Flutter 示范应用现已开源 — 万物起源 (The History of Everything)：在本月初举办的 Flutter Live 活动上，Flutter 团队向大家展示了","sections":[{"heading":"GitHub 宣布创建私有仓库免费且不限量","url":"https://blog.github.com/2019-01-07-new-year-new-github/"},{"heading":"Flutter 示范应用现已开源 — 万物起源 (The History of Everything)","url":"https://mp.weixin.qq.com/s/GwBlb4SM2BusWC_bfVL8gA"},{"heading":"他们的 2018 年总结","url":null},{"heading":"It Looks Like You Are Trying to Use a Framework","url":"https://www.bignerdranch.com/blog/it-looks-like-you-are-trying-to-use-a-framework/"},{"heading":"The Complete Guide to iOS and Swift Job Interviews","url":"https://www.hackingwithswift.com/articles/157/the-complete-guide-to-ios-and-swift-job-interviews"},{"heading":"开发者如何突破那被限制的视野","url":"https://juejin.im/post/5c37022d51882523ea6de697"},{"heading":"为什么我觉得 Flutter 短期内不会流行但依然选择学习它","url":"https://limboy.me/essay/2019/01/07/is-flutter-the-future.html"},{"heading":"Swift: memory leak gotcha with 'weak self'","url":"https://blog.haloneuro.com/swift-memory-leak-gotcha-with-weak-self-67293d5bc060"},{"heading":"The iOS Menu","url":"https://codea.io/blog/the-ios-menu/"},{"heading":"State Restoration Tutorial: Getting Started","url":"https://www.raywenderlich.com/1395-state-restoration-tutorial-getting-started"},{"heading":"ARKit Pods — SCNPath","url":"https://medium.com/@maxxfrazer/arkit-pods-scnpath-d4b491803019"},{"heading":"Swift Import Declarations","url":"https://nshipster.com/import/"},{"heading":"[[NSMutableAttributedString initWithData:options:documentAttributes:error] 崩溃分析](https://www.jianshu.com/p/184a57f12c6e)","url":null},{"heading":"Why is there a \"lag\" in iOS gesture detection near the edges of the screen?","url":"https://blog.kulman.sk/why-ios-gestures-lag-at-the-screen-edges/"},{"heading":"App thinning checklist","url":"https://oldoldb.com/2019/01/09/App-thinning-checklist/"},{"heading":"饿了么物流移动端业务可用性监控体系建设","url":"https://juejin.im/post/5c3577e0f265da616c65ca80"},{"heading":"Implenting Promises in Swift","url":"https://felginep.github.io/2019-01-06/implementing-promises-in-swift"},{"heading":"How to read Apple’s developer documentation","url":"https://www.hackingwithswift.com/articles/167/how-to-read-apples-developer-documentation"},{"heading":"The Many Offline Options for iOS Apps","url":"https://medium.com/device-blogs/the-many-offline-options-for-ios-apps-2922c9b3bff3"},{"heading":"iOS 模拟器录屏工具","url":"https://github.com/alexp2ad/record-ios-simulator"},{"heading":"CoreML-in-ARKit","url":"https://github.com/hanleyweng/CoreML-in-ARKit"},{"heading":"iOS 混合开发库（GICXMLLayout）","url":"https://juejin.im/post/5bfce9d56fb9a04a102ef8ba"},{"heading":"一起来开发泊学 App 吧","url":"https://boxueio.com/path/let-us-build-and-launch-a-forum"},{"heading":"Teahour.fm | #94 与 Hawstein 和左程云聊算法和数据结构","url":"http://teahour.fm/2019/01/02/algo-with-hawstein-and-chengyun.html"},{"heading":"ggtalk | 创业那点事：逆流而上的泊学","url":"https://talk.swift.gg/11"}]},{"id":"r-051-2019-01-09","type":"report","title":"老司机 iOS 周报 #51 | 2019-01-07","issue":51,"date":"2019-01-09","year":2019,"path":"Reports/2019/#51-2019.01.09.md","url":"Reports/2019/%2351-2019.01.09.md","excerpt":"iOS 靠谱内推专题：号外号外~这里有一份靠谱的 iOS 内推职位列表，希望能给大家在这个裁员寒冬带来一点暖意。；Understanding Xcode Build System：本文介绍了 的各个部分，帮助我们提升对于 Xcode 编译的基础知识。很多的包体积减少方案也是基于这个基础知识之上，对于 iOS 开发人员来说很有必要了解；OCEval - 动态执行 ObjectiveC 的热修复方案：苹果在18年多次对基于 runtime ","sections":[{"heading":"iOS 靠谱内推专题","url":"https://www.yuque.com/iosalliance/article/bhutav"},{"heading":"Understanding Xcode Build System","url":"http://www.vadimbulavin.com/xcode-build-system/"},{"heading":"OCEval - 动态执行 ObjectiveC 的热修复方案","url":"https://juejin.im/post/5c24a8396fb9a049d5198dfc"},{"heading":"[[App 探索] JSBox 中幽灵触发器的实现原理探索](https://juejin.im/post/5c2c16b66fb9a049e12a4f0e)","url":null},{"heading":"10w+ 字详解 Runtime","url":"https://github.com/DeveloperErenLiu/RuntimePDF"},{"heading":"技术年货：美团技术沙龙合辑大放送——85 个演讲，70+ 小时视频","url":"https://mp.weixin.qq.com/s/wamJkpq3HWpKsBc3okqUwg"},{"heading":"How to use raw strings in Swift 5","url":"https://www.hackingwithswift.com/articles/162/how-to-use-raw-strings-in-swift"},{"heading":"iOS 性能优化之计算多行 Label 高度的新方法","url":"https://mp.weixin.qq.com/s?__biz=MzU3NTY3MTQzMg==&mid=2247484307&idx=1&sn=06d33d349ab6019b25a268f316ce7eb9&chksm=fd1ede74ca6957628d59c222767105b54fcd57b9efb085e868dae995fcd46d50e4023d4e0d7c&mpshare=1&scene=23&srcid=0103uUtd8RIuQxhWoWbXEcTh#rd"},{"heading":"Swift CoreNFC as quick as possible","url":"https://medium.com/@myrickchow32/swift-corenfc-as-quick-as-possible-79544796cd0a"},{"heading":"[[译] 色彩无障碍性产品设计指南](https://juejin.im/post/5c2c233d6fb9a049bd4266b7)","url":null},{"heading":"少数派 2018 年终盘点以及编辑推荐","url":"https://sspai.com/page/2018#page1"},{"heading":"AssetImportKit","url":"https://github.com/eugenebokhan/AssetImportKit"},{"heading":"Mach-O Kit","url":"https://github.com/DeVaukz/MachO-Kit"},{"heading":"DynamicJSON","url":"https://github.com/saoudrizwan/DynamicJSON"},{"heading":"ggtalk | 创业那点事：普通开发者的回忆、反思和迷茫","url":"https://talkorigin.swift.gg/10"},{"heading":"Typed Notifications","url":"https://talk.objc.io/episodes/S01E27-typed-notifications-part-1"}]},{"id":"r-050-2019-01-02","type":"report","title":"老司机 iOS 周报 #50 | 2019-01-02","issue":50,"date":"2019-01-02","year":2019,"path":"Reports/2019/#50-2019.01.02.md","url":"Reports/2019/%2350-2019.01.02.md","excerpt":"我们一周岁了~：这是周报成立一周年的第 50 期，也是我们新年的第 1 期。过去 2018 年里，在编辑团队的努力和大家的支持下，我们达成了以下几点小成就：；老司机周报x知识小集xSwiftGG：iOS 内推职位召集：最近很多公司的裁员的消息相信大家都有所耳闻，与此同时也有不少公司逆势而上在持续招聘技术人员。因此我们三大组织决定牵头收集一些可靠的招聘，元旦结束后在我们的资讯发布渠道上发布 iOS 内推职位专题文章。；The Layer ","sections":[{"heading":"我们一周岁了~","url":"https://github.com/SwiftOldDriver/iOS-Weekly"},{"heading":"老司机周报x知识小集xSwiftGG：iOS 内推职位召集","url":"https://juejin.im/post/5c22deebe51d451a6b513aa3"},{"heading":"The Layer Cake","url":"https://medium.com/flutter-community/the-layer-cake-widgets-elements-renderobjects-7644c3142401"},{"heading":"Advanced UIView shadow effects using shadowPath","url":"https://www.hackingwithswift.com/articles/155/advanced-uiview-shadow-effects-using-shadowpath"},{"heading":"A guide to writing your own iOS CI/CD integration script","url":"https://medium.com/appssemble/a-guide-to-writing-your-own-ios-ci-cd-integration-script-186be1b99575","recommender":"[Fastlane](https"},{"heading":"ISO-8601, YYYY, yyyy, and why your year may be wrong","url":"https://ericasadun.com/2018/12/25/iso-8601-yyyy-yyyy-and-why-your-year-may-be-wrong/"},{"heading":"系统学习 iOS 动画之一：视图动画","url":"https://juejin.im/post/5c246b8a518825644e62434e"},{"heading":"函数式编程 - 酷炫 Applicative（应用函子）Swift 描述","url":"https://juejin.im/post/5c1d3bae5188252a9412e71b"},{"heading":"『译』Hacking Hit Tests","url":"https://swift.gg/2018/12/27/hacking-hit-tests/"},{"heading":"How to test iOS networking code the easy way","url":"https://www.hackingwithswift.com/articles/153/how-to-test-ios-networking-code-the-easy-way"},{"heading":"Building an Interactive Voice App Using Custom Siri Shortcuts in iOS 12","url":"https://medium.com/appcoda-tutorials/building-custom-siri-shortcut-intent-ui-extension-to-display-remote-data-alfian-losari-efe891a44a70"},{"heading":"GitHub Actions: Continuous Delivery of Swift Packages","url":"https://shashikantjagtap.net/github-actions-continuous-delivery-of-swift-packages/"},{"heading":"深入浅出 iOS 编译","url":"https://blog.csdn.net/Hello_Hwc/article/details/85226147"},{"heading":"SwiftRewriter - Swift code formatter using SwiftSyntax","url":"https://github.com/inamiy/SwiftRewriter"},{"heading":"Shapeshift","url":"https://github.com/JohnSundell/Shapeshift"},{"heading":"Woodpecker","url":"https://itunes.apple.com/cn/app/woodpecker/id1333548463?mt=12"},{"heading":"Code Friend","url":"https://github.com/qvcodefriend/CodeFriend"},{"heading":"USB Keyboard","url":"https://github.com/everettjf/USBKeyboard"},{"heading":"woza","url":"https://github.com/woza-lab/woza"},{"heading":"Stinger","url":"https://github.com/Assuner-Lee/Stinger"},{"heading":"LeetCodeAnimation","url":"https://github.com/MisterBooo/LeetCodeAnimation"},{"heading":"ggtalk | 创业那点事：听莲叔和羊叔回忆峥嵘岁月","url":"https://talk.swift.gg/9"}]},{"id":"r-049-2018-12-24","type":"report","title":"老司机 iOS 周报 #49 | 2018-12-24","issue":49,"date":"2018-12-24","year":2018,"path":"Reports/2018/#49-2018.12.24.md","url":"Reports/2018/%2349-2018.12.24.md","excerpt":"周报支持邮件订阅啦！：在接下来的周报发布中，我们将会采用 GitHub 最新的 GitHub Release 特性进行，读者朋友们可以到我们 GitHub 主页 点击 watch -> 选择 Release only 订阅。之后每期周报发布，你 GitHub 账号关联的邮箱就会收到我们的发布邮件。；Cydia 商店宣布关闭：对 iOS 越狱有这些影响：；我从写技术博客中收获到了什么：相信不少程序员都有写博客/文章的习惯，或者正计划写，因","sections":[{"heading":"周报支持邮件订阅啦！","url":"https://github.com/SwiftOldDriver/iOS-Weekly#订阅周报"},{"heading":"Cydia 商店宣布关闭","url":"https://www.ithome.com/html/iphone/400752.htm"},{"heading":"我从写技术博客中收获到了什么","url":"https://knightsj.github.io/2018/12/03/我从写技术博客中收获到了什么%20-%20J_Knight_/"},{"heading":"从零开始学基于 ARKit 的 Unity3d 游戏开发系列","url":"https://zhuanlan.zhihu.com/p/32224102"},{"heading":"TikTok（抖音国际版）逆向，全球的小姐姐们，我来啦!","url":"https://juejin.im/post/5c19a38ae51d453e0a209256?utm_source=gold_browser_extension"},{"heading":"Mocking With Protocols in Swift","url":"https://www.bignerdranch.com/blog/mocking-with-protocols-in-swift/"},{"heading":"Data-Driven Table Views","url":"http://www.vadimbulavin.com/data-drive-table-views/"},{"heading":"Optimizing Images","url":"https://www.swiftjectivec.com/optimizing-images/"},{"heading":"How to convert your Xcode plugins to Xcode extensions","url":"https://medium.freecodecamp.org/how-to-convert-your-xcode-plugins-to-xcode-extensions-ac90f32ae0e3"},{"heading":"美团开源 Graver 框架：用“雕刻”诠释 iOS 端 UI 界面的高效渲染","url":"https://tech.meituan.com/waimai_graver.html"},{"heading":"Image Analysis Solutions for Mobile Apps","url":"https://www.netguru.co/codestories/image-analysis-solutions-for-mobile-apps"},{"heading":"Improving code testability with Swift protocols","url":"https://medium.com/flawless-app-stories/solving-dependencies-in-swift-9ee6ad4a8941"},{"heading":"How to Add a Recent Items Folder to Your Mac's Dock","url":"https://www.macrumors.com/how-to/how-to-add-a-recent-items-folder-to-your-macs-dock/"},{"heading":"iWeChat - 通过逆向还原和探索微信","url":"https://github.com/lefex/iWeChat"},{"heading":"ggtalk | 和 Cee 聊聊如何拿 Google Offer","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/997"}]},{"id":"r-048-2018-12-17","type":"report","title":"老司机 iOS 周报 #48 | 2018-12-17","issue":48,"date":"2018-12-17","year":2018,"path":"Reports/2018/#48-2018.12.17.md","url":"Reports/2018/%2348-2018.12.17.md","excerpt":"解密 Runloop：很显然， 是一个很熟悉的名词，熟悉到每次面试都会碰到有人问你，请说说你对 的理解。 是开源的，因此本文作者通过精简后的源码示例来解释 的基本执行顺序。；一个 Demo 入门 Flutter：最近，已经有许多的公司开场尝试使用 Flutter 进行开发。就在前两天，Google 刚刚在北京举办了 Flutter Live 大会，可以说，Flutter 的生态已经越来越庞大。今年，如果对 Flutter 还是一无所知的","sections":[{"heading":"解密 Runloop","url":"https://mp.weixin.qq.com/s?__biz=MzI5MjEzNzA1MA==&mid=2650264704&idx=1&sn=c32d676f7c8a7803ac795442cd5fc377&chksm=f40685b5c3710ca3c2dc022e6703d3fd5e66545977c9e9fdc63ee71714123f8698639fe6f0a2"},{"heading":"一个 Demo 入门 Flutter","url":"https://limboy.me/tech/2018/12/07/flutter-demo.html"},{"heading":"A modular analytics layer in Swift","url":"https://www.lordcodes.com/posts/a-modular-analytics-layer-in-swift"},{"heading":"Seemingly Impossible Swift Programs","url":"https://www.fewbutripe.com/2018/12/05/seemingly-impossible.html"},{"heading":"使用 Metal 和 Core ML 评价照片质量","url":"http://yulingtianxia.com/blog/2018/11/30/Photo-Assessment/"},{"heading":"Why should we use Swift over Objective-C?","url":"https://medium.com/@chungbkhn87/why-should-we-use-swift-over-objective-c-78b71725e63f"},{"heading":"Strategy pattern in Swift","url":"https://medium.com/flawless-app-stories/strategy-pattern-in-swift-1462dbddd9fe"},{"heading":"Using errors as control flow in Swift","url":"https://www.swiftbysundell.com/posts/using-errors-as-control-flow-in-swift"},{"heading":"Xcode UI Testing Cheat Sheet","url":"https://www.hackingwithswift.com/articles/148/xcode-ui-testing-cheat-sheet"},{"heading":"质量监控-图片减包","url":"http://www.sindrilin.com/2018/12/11/image_subtraction.html"},{"heading":"Metal 专辑","url":"https://www.jianshu.com/c/ac17a2f93445"},{"heading":"【AR 开发】ARKit 和 ARCore 功能对照表与定位场景总结","url":"https://zhuanlan.zhihu.com/p/47839718"},{"heading":"Animations in iOS: 30 beautiful examples","url":"https://medium.com/flawless-app-stories/animations-in-ios-30-beautiful-examples-80cb2663c559"},{"heading":"Kingfisher 5.0 发布","url":"https://github.com/onevcat/Kingfisher/releases/tag/5.0.0"},{"heading":"Swift 官方 Docker 镜像","url":"https://github.com/apple/swift-docker"},{"heading":"Functional Swift Conference 2018","url":"http://2018.funswiftconf.com/"},{"heading":"ggtalk | 要不要买 HHKB？我问了七位用户，听听他们怎么说","url":"https://talk.swift.gg/7"},{"heading":"MVC is Not Your Problem - Joachim Kurz - UIKonf18","url":"https://www.youtube.com/watch?v=A1vzcxR-Ss0"}]},{"id":"r-047-2018-12-10","type":"report","title":"老司机 iOS 周报 #47 | 2018-12-10","issue":47,"date":"2018-12-10","year":2018,"path":"Reports/2018/#47-2018.12.10.md","url":"Reports/2018/%2347-2018.12.10.md","excerpt":"Result 类型将加入标准库：Result 类型经历了一整个月的讨论终于决定加入标准库，预计 Swift 5 就能完成实现，这次的提案关注的人非常多，经历了两次修改三次讨论才最终通过。；Flutter 1.0 正式版: Google 的便携 UI 工具包：万众瞩目的 Flutter 1.0 终于正式发布，从我们首次看到 Flutter 的 Beta 测试版，到如今的 1.0 正式版，总共经过了 9 个多月。Flutter 的高性能跨平","sections":[{"heading":"Result 类型将加入标准库","url":"https://forums.swift.org/t/accepted-with-modifications-se-0235-add-result-to-the-standard-library/18603"},{"heading":"Flutter 1.0 正式版: Google 的便携 UI 工具包","url":"https://mp.weixin.qq.com/s/hCIN42OMmmc6HkOveegwWQ"},{"heading":"Dependency Injection on iOS — part 1-4","url":"https://medium.com/@fernandodelrio/dependency-injection-on-ios-part-1-4-8847f302b3d9"},{"heading":"iOS App冷启动治理：来自美团外卖的实践","url":"https://mp.weixin.qq.com/s/jN3jaNrvXczZoYIRCWZs7w"},{"heading":"如何提高工作效率 - 自动化篇","url":"https://juejin.im/post/5bfac61ee51d454af013a900"},{"heading":"iOS 内存管理的那些事儿","url":"https://juejin.im/post/5c0744f6e51d45598b76f481?utm_source=gold_browser_extension"},{"heading":"Rethinking Design Patterns in Swift: State Pattern","url":"https://khawerkhaliq.com/blog/swift-design-patterns-state-pattern/"},{"heading":"技术人的成长","url":"https://xiaozhuanlan.com/topic/8719460352"},{"heading":"Category：从底层原理研究到面试题分析","url":"https://juejin.im/post/5c0332ba6fb9a049d4418cac?utm_source=gold_browser_extension"},{"heading":"iOS: ARM64不定函数传参问题调试剖析","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/950"},{"heading":"【译】Swift 中的面向协议编程：是否优于面向对象编程？","url":"https://swift.gg/2018/12/03/pop-vs-oop/"},{"heading":"Swift Protocols: Tips and Tricks","url":"https://www.hackingwithswift.com/articles/138/swift-protocols-tips-and-tricks"},{"heading":"8 Useful Swift Extensions","url":"https://www.hackingwithswift.com/articles/141/8-useful-swift-extensions"},{"heading":"simctl","url":"https://nshipster.com/simctl/"},{"heading":"Swift Program Distribution with Homebrew","url":"https://nshipster.com/homebrew/"},{"heading":"与 JOSE 战斗的日子 - 写给 iOS 开发者的密码学入门手册","url":"https://onevcat.com/2018/12/jose-3/"},{"heading":"Publish Your Flutter App on macOS","url":"https://feather-apps.com/"},{"heading":"ggtalk | 聊聊 Swift 这四年（下）","url":"http://talk.swift.gg/6"}]},{"id":"r-046-2018-12-03","type":"report","title":"老司机 iOS 周报 #46 | 2018-12-03","issue":46,"date":"2018-12-03","year":2018,"path":"Reports/2018/#46-2018.12.03.md","url":"Reports/2018/%2346-2018.12.03.md","excerpt":"Apple 举办编程一小时活动：在 12 月 1 日至 14 日期间，Apple 将在全国的 Apple Store 零售店举办「编程一小时」活动，现在已开放报名。你将有机会从编程基础知识入手，用 Swift 语言写代码，为机器人编程。也许这一小时的课程，将开启你对编程一生的热爱。；App Store Connect Holiday Schedule：因圣诞假期，App Store 将在 12 月 23 日至 27 日停止应用审核。；A","sections":[{"heading":"Apple 举办编程一小时活动","url":"https://www.apple.com/cn/today/collection/hourofcode/"},{"heading":"App Store Connect Holiday Schedule","url":"https://developer.apple.com/news/?id=11272018"},{"heading":"Animations are assets: using Core Animation archives on iOS","url":"https://rambo.codes/ios/2018/11/11/animations-are-assets.html"},{"heading":"iOS 12 Password Tools: Improving User Security and Experience","url":"https://www.raywenderlich.com/7162-ios-12-password-tools-improving-user-security-and-experience"},{"heading":"Extending optionals in Swift","url":"https://www.swiftbysundell.com/posts/extending-optionals-in-swift"},{"heading":"When to use UserDefaults, Keychain, or Core Data","url":"https://fluffy.es/persist-data/"},{"heading":"A Comparison of Swift and Kotlin Languages","url":"https://www.raywenderlich.com/6754-a-comparison-of-swift-and-kotlin-languages"},{"heading":"手把手教你给企业微信 Mac 客户端去除水印","url":"https://zhaoxinyu.me/2018-11-24-crack-wew/"},{"heading":"Evaluating SwiftSyntax for use in SwiftLint","url":"https://www.jpsim.com/evaluating-swiftsyntax-for-use-in-swiftlint/"},{"heading":"解读 App Store 审核黑箱政策 —— 远没有你想象的那么邪恶","url":"https://juejin.im/post/5bfd2ae7f265da61141c4bf7?utm_source=gold_browser_extension"},{"heading":"ReadyForBAT - iOS 面试准备之思维导图","url":"https://github.com/MisterBooo/ReadyForBAT"},{"heading":"Komondor - Git Hooks for Swift projects","url":"https://github.com/orta/Komondor"},{"heading":"appstoreconnect-swift-sdk","url":"https://github.com/AvdLee/appstoreconnect-swift-sdk"},{"heading":"ggtalk | 聊聊 Swift 这四年（上）","url":"http://talk.swift.gg/5"}]},{"id":"r-045-2018-11-26","type":"report","title":"老司机 iOS 周报 #45 | 2018-11-26","issue":45,"date":"2018-11-26","year":2018,"path":"Reports/2018/#45-2018.11.26.md","url":"Reports/2018/%2345-2018.11.26.md","excerpt":"Hades：移动端静态分析框架：本文介绍了大众点评基于 Objective-C 的代码静态分析工具 Hades 的研发经验，重点解决了以下痛点： - 开发成本高，收益有限，研发参与积极性不够。 - 针对局部代码分析，跨编译单元以及全局性分析较难。 - 增量分析困难，CI 静态检查效率低下。 - 工具性较强，大部；Swift Development with Visual Studio Code：Swift 在早些时候宣布将支持 LSP（","sections":[{"heading":"Hades：移动端静态分析框架","url":"https://tech.meituan.com/hades.html"},{"heading":"Swift Development with Visual Studio Code","url":"https://nshipster.com/vscode/"},{"heading":"Xcode and LLDB Advanced Debugging Tutorial","url":"https://medium.com/@fadiderias/xcode-and-lldb-advanced-debugging-tutorial-part-1-31919aa149e0"},{"heading":"A taste of MVVM and Reactive paradigm","url":"https://medium.com/flawless-app-stories/a-taste-of-mvvm-and-reactive-paradigm-5288a819cca1"},{"heading":"实用的可选项（Optional）扩展","url":"https://swift.gg/2018/11/19/useful-optional-extensions/"},{"heading":"Stubbing in pair with Swift compiler","url":"https://medium.com/@londeix/stubbing-in-pair-with-swift-compiler-c951770a295b"},{"heading":"关于 performSelector:afterDelay: 的一个坑及思考","url":"https://juejin.im/post/5bee9218e51d4520b7711fc8"},{"heading":"函数式编程 - 有趣的 Monoid（单位半群）","url":"https://www.jianshu.com/p/f935e54faad3"},{"heading":"Unit testing retain cycles","url":"https://paul-samuels.com/blog/2018/11/20/unit-testing-retain-cycles/"},{"heading":"Self-sizing Table View Cells","url":"https://www.raywenderlich.com/8549-self-sizing-table-view-cells"},{"heading":"Extending optionals in Swift","url":"https://www.swiftbysundell.com/posts/extending-optionals-in-swift"},{"heading":"Swift Async Operations at Your Command","url":"https://tworingsoft.com/blog/2018/11/19/swift-async-operations-at-your-command.html"},{"heading":"关于 Swift defer 的正确使用","url":"https://onevcat.com/2018/11/defer/"},{"heading":"30-seconds-of-swift-code","url":"https://github.com/elizabethsiegle/30-seconds-of-swift-code"},{"heading":"LINE SDK for iOS Swift","url":"https://github.com/line/line-sdk-ios-swift"}]},{"id":"r-044-2018-11-19","type":"report","title":"老司机 iOS 周报 #44 | 2018-11-19","issue":44,"date":"2018-11-19","year":2018,"path":"Reports/2018/#44-2018.11.19.md","url":"Reports/2018/%2344-2018.11.19.md","excerpt":"Implementing features with ReactiveFeedback：本文作者通过一个实例演示来介绍他们团队写的单向数据流应用框架 ReactiveFeedback。由于作者所在团队用的是 ，所以他们就基于 自己实现了一套类似 的框架。；Docker ❤️ Swift & Vapor：Docker 作为近几年来服务端最重要的技术创新之一，解决了无数配置与运维的噩梦。而另一边，Server-side Swift 的蓬勃发","sections":[{"heading":"Implementing features with ReactiveFeedback","url":"https://ilya.puchka.me/implementing-features-with-reactivefeedback/"},{"heading":"Docker ❤️ Swift & Vapor","url":"https://theswiftdev.com/2018/11/15/docker-loves-swift-and-vapor/"},{"heading":"Assertions in Production","url":"https://medium.com/device-blogs/assertions-in-production-e587fef5bfbc"},{"heading":"Avoiding race conditions in Swift","url":"https://www.swiftbysundell.com/posts/avoiding-race-conditions-in-swift"},{"heading":"What's .self, .Type and .Protocol? Understanding Swift Metatypes","url":"https://swiftrocks.com/whats-type-and-self-swift-metatypes.html"},{"heading":"用 Swift 解读 React/React Native: Part 1 - React Element & React Component","url":"https://tech.glowing.com/cn/react-native-explained-in-swift-part-1-element-and-component/"},{"heading":"Mirror / Custom​Reflectable / Custom​Leaf​Reflectable","url":"https://nshipster.com/mirror/"},{"heading":"分析实现-倒计时设计","url":"http://sindrilin.com/2018/01/06/count_down_design.html"},{"heading":"在 Flutter 中嵌入 Native 组件的正确姿势是...","url":"https://www.jianshu.com/p/82bb88d1ffe5"},{"heading":"Custom​Playground​Display​Convertible","url":"https://nshipster.com/customplaygrounddisplayconvertible/"},{"heading":"Debugging a subtle Swift bug that will make you facepalm","url":"https://www.jessesquires.com/blog/debugging-subtle-swift-bug-facepalm/"},{"heading":"支付宝客户端架构解析：iOS 客户端启动性能优化初探","url":"https://mp.weixin.qq.com/s/ewYBMdqrjVJUthRxkFW_3g"},{"heading":"Commander","url":"https://github.com/devedbox/Commander"},{"heading":"Code Friend","url":"https://qvcodefriend.github.io"},{"heading":"\"Promises everywhere\", with special guest Max Howell","url":"https://www.swiftbysundell.com/podcast/36"}]},{"id":"r-043-2018-11-12","type":"report","title":"老司机 iOS 周报 #43 | 2018-11-12","issue":43,"date":"2018-11-12","year":2018,"path":"Reports/2018/#43-2018.11.12.md","url":"Reports/2018/%2343-2018.11.12.md","excerpt":"From Swift To C++：来自微信团队的周报编辑芒果最新出炉的一篇文章。这篇文章按照编程范式（programming paradigm）来组织脉络，从一个客户端工程师的角度来品味和对比这 Swift 和 C++ 两门语言。如果你也在或者即将同时把 Swift 和 C++ 当做主流编程语言，那么这篇文章你绝；适用于触控问题的 iPhone X 显示屏模块更换计划：号外！号外！继“降频门”事件引起的 218 元换电池服务后，苹果又","sections":[{"heading":"From Swift To C++","url":"https://xiaozhuanlan.com/topic/7216403859"},{"heading":"适用于触控问题的 iPhone X 显示屏模块更换计划","url":"https://www.apple.com/cn/support/iphone-x-display-module-replacement-program/"},{"heading":"Language Server Protocol","url":"https://nshipster.com/language-server-protocol/"},{"heading":"Tricks & treats to make UI testing less terrifying","url":null,"recommender":"[part1](https"},{"heading":"Stephen King's Advice To Software Developers","url":"https://www.mokacoding.com/blog/stephen-king-advice-to-software-developers/"},{"heading":"How to remove duplication from Swift tests with helper functions","url":"https://www.mokacoding.com/blog/how-to-remove-duplication-from-swift-tests-with-helper-functions/"},{"heading":"Keeping your code clean","url":"https://www.netguru.co/codestories/keeping-your-code-clean"},{"heading":"String’s ABI and UTF-8","url":"https://forums.swift.org/t/string-s-abi-and-utf-8/17676"},{"heading":"Result\\<T\\> 还是 Result\\<T, E: Error\\>","url":"https://onevcat.com/2018/10/swift-result-error/"},{"heading":"KVC/KVO 总结","url":"https://juejin.im/post/5be25b256fb9a04a0279d217"},{"heading":"Category 特性在 iOS 组件化中的应用与管控","url":"https://mp.weixin.qq.com/s/5ucpVa6ku4b9_pfMP9CqlQ"},{"heading":"Void","url":"https://nshipster.com/void/"},{"heading":"Swift Tip: Lightweight Observation","url":"https://www.objc.io/blog/2018/11/06/lightweight-observation/"},{"heading":"Swift 5 and ABI stability","url":"https://theswiftdev.com/2018/11/06/swift-5-and-abi-stability/"},{"heading":"【译】给 iOS 开发者介绍 Flutter","url":"http://ie8384.com/blog/index.php/archives/1603/"},{"heading":"Photopea: advanced image editor","url":"https://www.photopea.com"},{"heading":"手机上的抓包神器 Stream","url":"https://itunes.apple.com/cn/app/stream/id1312141691?mt=8&ct=appshare-cn"},{"heading":"另一款轻量级的 UI 实时调试工具 - Sherlock","url":"https://sherlock.inspiredcode.io/"},{"heading":"SmartBaby","url":"https://itunes.apple.com/us/app/smartbaby/id1438971945?mt=12"},{"heading":"AloeStackView","url":"https://github.com/airbnb/AloeStackView"},{"heading":"LEARN TALKS AWESOME CONFERENCE AND MEETUP TALK","url":"https://learntalks.com/"},{"heading":"Flutter 免费视频教程第一季：开发环境搭建","url":"https://juejin.im/post/5be3d54cf265da611d6624d3"}]},{"id":"r-042-2018-11-05","type":"report","title":"老司机 iOS 周报 #42 | 2018-11-05","issue":42,"date":"2018-11-05","year":2018,"path":"Reports/2018/#42-2018.11.05.md","url":"Reports/2018/%2342-2018.11.05.md","excerpt":"北美软件工程师面试简单介绍：好多同学都比较好奇北美的软件工程的面试和国内的有什么不同，具体情况又是如何的，这篇小专栏就简单的给大家介绍了一下北美的 Software Engineer 的面试情况，有兴趣的不妨读一读了解一下。；App Store Connect API Now Available：WWDC 2018 中苹果提及了 App Store Connect 将迎来一次比较大的更新，其中有两个内容比较受国内开发者关注 - Test","sections":[{"heading":"北美软件工程师面试简单介绍","url":"https://xiaozhuanlan.com/topic/4263189057"},{"heading":"App Store Connect API Now Available","url":"https://developer.apple.com/news/?id=11022018"},{"heading":"支付宝客户端架构解析：iOS 容器化框架初探","url":"https://mp.weixin.qq.com/s/KGDD-Qe1TLzIVlDIEzM25g"},{"heading":"The power of key paths in Swift","url":"https://www.swiftbysundell.com/posts/the-power-of-key-paths-in-swift"},{"heading":"Protocol Oriented Programming(POP) in Swift: Is it better than Object Oriented Programming(OPP)?","url":"https://www.appcoda.com/pop-vs-oop/"},{"heading":"React Native 重构路线图发布！","url":"https://mp.weixin.qq.com/s/-BXsXp0HnrGMS3CLLvfEtQ"},{"heading":"Speeding Up Custom Script Phases","url":"https://indiestack.com/2014/12/speeding-up-custom-script-phases/"},{"heading":"Running Other Apps' Siri Shortcuts Through Deep Links in Swift","url":"https://swiftrocks.com/running-other-apps-siri-shortcuts-through-deep-links-in-swift.html"},{"heading":"Let's Set Up Your iOS Environments","url":"https://robots.thoughtbot.com/let-s-setup-your-ios-environments"},{"heading":"Text Kit Tutorial: Getting Started","url":"https://www.raywenderlich.com/5960-text-kit-tutorial-getting-started?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more"},{"heading":"【基本功】深入剖析Swift性能优化","url":"https://mp.weixin.qq.com/s/U95QmOOjeXkk-yC23cuZCQ"},{"heading":"One Quick Way to Drastically Reduce your iOS App’s Download Size","url":"https://medium.com/@michael.eisel/one-trick-to-drastically-reduce-your-ios-apps-downlsize-ae68aad0d369"},{"heading":"深入理解 Autolayout 与列表性能 -- 背锅的 Cassowary 和偷懒的 CPU","url":"https://juejin.im/post/5bd5a546f265da0af033cee6"},{"heading":"Class written in Swift","url":"http://yulingtianxia.com/blog/2018/10/28/Class-written-in-Swift/"},{"heading":"Specializing protocols in Swift","url":"https://www.swiftbysundell.com/posts/specializing-protocols-in-swift"},{"heading":"iOS Project Template","url":"https://github.com/messeb/ios-project-template"},{"heading":"Eliminate Unused Swift Code","url":"https://peripheryapp.com"},{"heading":"CodyFire","url":"https://github.com/MihaelIsaev/CodyFire"}]},{"id":"r-041-2018-10-29","type":"report","title":"老司机 iOS 周报 #41 | 2018-10-29","issue":41,"date":"2018-10-29","year":2018,"path":"Reports/2018/#41-2018.10.29.md","url":"Reports/2018/%2341-2018.10.29.md","excerpt":"[[译] Swift 标准库源码阅读指南](https://xiaozhuanlan.com/topic/8732549601)：对于 Swift 开发者来说，Swift 标准库的开源可以说是很值得高兴的事情，因为我们可以在标准库中学到很多优秀的设计以及了解具体的实现逻辑。当然，很多人可能和我一样，不知道如何在本地搭建一个可编译的 Swift 标准库。这篇文章就提供了一个很通俗易懂的教程，如果你对阅读源码感；iOS 内存管理研究：来自周","sections":[{"heading":"[[译] Swift 标准库源码阅读指南](https://xiaozhuanlan.com/topic/8732549601)","url":null},{"heading":"iOS 内存管理研究","url":"https://medium.com/@jasonyuh/ios-%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E7%A0%94%E7%A9%B6-9bf37fc209c6"},{"heading":"iOS 系统中导航栏的转场解决方案与最佳实践","url":"https://mp.weixin.qq.com/s/CQ-uUJuX-nlPrM_tHBdbNQ"},{"heading":"iOS UI Automation Tests at Babylon","url":"http://ilya.puchka.me/ios-ui-automation-tests-at-babylon/"},{"heading":"【QCon2018】Flutter & Dart三端一体化开发","url":"https://juejin.im/post/5bcd470e6fb9a05d2469f723"},{"heading":"Flutter瘦身大作战","url":"https://juejin.im/post/5bd2ac975188252928653585?utm_source=gold_browser_extension"},{"heading":"从爬虫攻击者角度谈客户端 API 安全设计","url":"https://mp.weixin.qq.com/s/yv9Ph_8pzej3Wasbsc-fXQ"},{"heading":"Best strategies for configuring multiple environments in Xcode projects","url":"https://kenb.us/best-strategies-for-configuring-multiple-environments-in-xcode-projects"},{"heading":"将 75000 行原生 iOS 应用程序移植到 Flutter 后，结果太惊讶！","url":"https://www.toutiao.com/i6615151835814560264/?tt_from=dingtalk&utm_campaign=client_share&wxshare_count=2&from=timeline&timestamp=1540228468&app=news_article&utm_source=dingtalk&isappinstalled=0&iid=42369912095&utm_medium=toutiao_ios&dtshare_count=1&group_id=6615151835814560264&pbid=6615388314311558670","recommender":"原文"},{"heading":"Building an iOS App Without Xcode’s Build System","url":"https://medium.com/@vojtastavik/building-an-ios-app-without-xcodes-build-system-d3e5ca86d30d"},{"heading":"从汇编代码探究 NSClassFromString 实现","url":"https://xiaozhuanlan.com/topic/5781026934"},{"heading":"Swift​Syntax","url":"https://nshipster.com/swiftsyntax/","recommender":"[libSyntax](https"},{"heading":"Dealing with Swift toolchain","url":"https://blog.krzyzanowskim.com/2018/10/11/dealing-with-a-swift-toolchain/"},{"heading":"Using PromiseKit","url":"https://agostini.tech/2018/10/08/using-promisekit/"},{"heading":"通过 internal 隐藏内部属性","url":"https://holko.pl/2018/10/08/internal-modifier/"},{"heading":"从Xcode10不再支持libstdc++说起","url":"https://juejin.im/post/5bcff7b1f265da0adc1909e7"},{"heading":"[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)","url":null},{"heading":"iOSLocalizationEditor","url":"https://github.com/igorkulman/iOSLocalizationEditor"}]},{"id":"r-040-2018-10-22","type":"report","title":"老司机 iOS 周报 #40 | 2018-10-22","issue":40,"date":"2018-10-22","year":2018,"path":"Reports/2018/#40-2018.10.22.md","url":"Reports/2018/%2340-2018.10.22.md","excerpt":"New LSP language service supporting Swift and C-family languages for any editor and platform：这应该是过去一周 Swift 社区最大的新闻，Apple 将主导一个新的开源项目，来为其在 Xcode 生态中的 Swift 和 C family 的语言添加 LSP 的支持，这意味着之后在 VS Code 上写 Swift 也能享受自动完成，定义跳转等","sections":[{"heading":"New LSP language service supporting Swift and C-family languages for any editor and platform","url":"https://forums.swift.org/t/new-lsp-language-service-supporting-swift-and-c-family-languages-for-any-editor-and-platform/17024"},{"heading":"Photoshop for iPad hands-on: an exclusive look","url":"https://www.theverge.com/2018/10/15/17969754/adobe-photoshop-apple-ipad-creative-cloud"},{"heading":"SwiftOldDriver 精选： Diff 算法在 iOS 中的应用(一)","url":"https://xiaozhuanlan.com/topic/6921308745"},{"heading":"Xcode 10 Library Tips","url":"https://useyourloaf.com/blog/xcode-10-library-tips/"},{"heading":"拍照聚焦和曝光，AVFoundation 简明教程","url":"https://juejin.im/post/5bc2123ee51d450e6c75157d"},{"heading":"Unleashing the power of asset catalogs and bundles on iOS","url":"https://rambo.codes/ios/2018/10/03/unleashing-the-power-of-asset-catalogs-and-bundles-on-ios.html"},{"heading":"Tricky UIViewController transition animations","url":"https://medium.com/rosberryapps/tricky-uiviewcontroller-transition-animations-59131b540b33"},{"heading":"揭秘Flutter Hot Reload（原理篇）","url":"https://juejin.im/post/5bc80ef7f265da0a857aa924"},{"heading":"Time​Interval, Date, and Date​Interval","url":"https://nshipster.com/timeinterval-date-dateinterval/"},{"heading":"Panda - 基于 Swift 的 Autolayout 实现","url":"https://github.com/nangege/Panda"}]},{"id":"r-039-2018-10-15","type":"report","title":"老司机 iOS 周报 #39 | 2018-10-15","issue":39,"date":"2018-10-15","year":2018,"path":"Reports/2018/#39-2018.10.15.md","url":"Reports/2018/%2339-2018.10.15.md","excerpt":"Swift in 2018：JetBrains 针对 Swift 编程生态做了一个调查。结果显示只使用 Swift 的开发者占比 54%，混编的占 16%。83% 的 Swift 开发者在使用 4.0 或者以上的 Swift 版本。；仅 23 天，iOS 12 安装率超过 50%：iOS 12 推出仅 23 天装机量超过 50%，而 iOS 11 达到这个成绩用了超过一个月。相比 iOS 11 发布后的 bug 满天飞，iOS 12 的","sections":[{"heading":"Swift in 2018","url":"https://www.jetbrains.com/research/devecosystem-2018/swift-objc"},{"heading":"仅 23 天，iOS 12 安装率超过 50%","url":"https://9to5mac.com/2018/10/06/ios-12-now-installed-on-50-of-devices-outpacing-ios-11/"},{"heading":"质量监控 - 卡顿检测","url":"https://juejin.im/post/5bb09795f265da0ac84946e0"},{"heading":"It’s wrappers all the way down","url":"https://oleb.net/2018/lastindex-reversed/"},{"heading":"如何实现可以获取最小值的栈？","url":"https://mp.weixin.qq.com/s/tLaRUCEgtQwoFdELZlcsZA"},{"heading":"[[译] 揭秘 iOS 布局](https://sq.163yun.com/blog/article/200743376636538880)","url":null},{"heading":"iOS Memory Deep Dive","url":"https://www.jianshu.com/p/dad9f27e412e"},{"heading":"Access Control Management with Swift","url":"https://medium.com/ios-os-x-development/access-control-management-with-swift-cc3c3d68cbc3"},{"heading":"How to Write Clean Code","url":"https://medium.com/quick-code/how-to-write-clean-code-bbcf35ac1aef"},{"heading":"On Learning to Code (for 2019)","url":"https://medium.com/coderbyte/on-learning-to-code-for-2019-aa086284a218"},{"heading":"JSDebugger 一款iOS的动态调试器","url":"https://github.com/SatanWoo/JSDebugger"},{"heading":"Sizes","url":"https://github.com/marcosgriselli/Sizes"},{"heading":"smoke-framework","url":"https://github.com/amzn/smoke-framework?utm_source=gold_browser_extension"},{"heading":"Logan","url":"https://github.com/Meituan-Dianping/Logan"},{"heading":"NSSpain","url":"https://vimeo.com/nsspain"},{"heading":"SwiftConf '18","url":"https://www.youtube.com/playlist?list=PLgUjQUYKwG_hkD2ZcfAs7bTZwbEtAnNFs"}]},{"id":"r-038-2018-10-08","type":"report","title":"老司机 iOS 周报 #38 | 2018-10-08","issue":38,"date":"2018-10-08","year":2018,"path":"Reports/2018/#38-2018.10.08.md","url":"Reports/2018/%2338-2018.10.08.md","excerpt":"TestFlight 开始支持邀请链接：在今年的 WWDC 中，苹果就已经透露将在下半年推出 TestFlight 的公开链接邀请功能，现在这个功能已经正式开放。；Apple’s use of Swift in iOS 12：iOS 中使用 swift 的地方在持续增加，在 iOS 12 中包含 swift 的库相比 iOS 11 增加了一倍。；Swift 5.0 Release Process：Swift5.0 离我们越来越近了，了解","sections":[{"heading":"TestFlight 开始支持邀请链接","url":"https://developer.apple.com/news/?id=09262018a"},{"heading":"Apple’s use of Swift in iOS 12","url":"https://blog.timac.org/2018/0924-state-of-swift-ios12/"},{"heading":"Swift 5.0 Release Process","url":"https://swift.org/blog/5-0-release-process/"},{"heading":"iOS 上修改私有方法的几种方式解析","url":"https://xiaozhuanlan.com/topic/1278405369"},{"heading":"Mirror 的工作原理","url":"https://swift.org/blog/how-mirror-works/"},{"heading":"AR Face Tracking Tutorial for iOS: Getting Started","url":"https://www.raywenderlich.com/5491-ar-face-tracking-tutorial-for-ios-getting-started"},{"heading":"Why #if DEBUG Conditional Should Be Avoided in Library Code","url":"http://holko.pl/2018/09/24/compilation-directives-in-libraries/"},{"heading":"[[译] Metal 渲染管线教程](https://juejin.im/post/5b9dbd76e51d450e877f3780)","url":null},{"heading":"beeshell：开源的 React Native 组件库","url":"https://mp.weixin.qq.com/s/c1WId0Rr4m7hUOa2HDGnXg"},{"heading":"从 FE 视角看大前端","url":"https://zhuanlan.zhihu.com/p/45421800"},{"heading":"UIField​Behavior","url":"https://nshipster.com/uifieldbehavior/"},{"heading":"巧妙实现 debugOnly 函数","url":"https://kemchenj.github.io/2018-09-24/"},{"heading":"Bloom Filters and Swift 4.2","url":"http://khanlou.com/2018/09/bloom-filters/"},{"heading":"驴妈妈客户端频道页模块化设计思路","url":"https://juejin.im/post/5bad0632f265da0ab41e62fe"},{"heading":"INSIDE AUDIOKIT SYNTH ONE: A BRIEF TOUR FOR DEVELOPERS","url":"https://audiokitpro.com/inside-audiokit-synth-one/"},{"heading":"代码评审的不可能三角","url":"https://juejin.im/post/5ba99fa35188255c8138f4d2"},{"heading":"利用函数组合提升代码可维护性","url":"https://iweiyun.github.io/2018/10/03/func-compose/"},{"heading":"MMKV 中的简单 LRU 缓存（LRUCache）","url":"https://mp.weixin.qq.com/s/KbUHec1_sMiV1S5V-9QxlQ"},{"heading":"Migrating to Unified Logging, Swift Edition","url":"https://www.bignerdranch.com/blog/migrating-to-unified-logging-swift-edition/"},{"heading":"andreamazz/SubtleVolume","url":"https://github.com/andreamazz/SubtleVolume"},{"heading":"一定要会的Sketch设计方法和工作流","url":"https://boxueio.com/series/sketch-basics"}]},{"id":"r-037-2018-09-24","type":"report","title":"老司机 iOS 周报 #37 | 2018-09-24","issue":37,"date":"2018-09-24","year":2018,"path":"Reports/2018/#37-2018.09.24.md","url":"Reports/2018/%2337-2018.09.24.md","excerpt":"Swift 4.2 正式发布：Swift 4.2 正式发布。我们可以通过 WWDC 2018 的 Session What’s New in Swift 快速了解新特性。Ole Begemann 总结的 Playground 也方便我们上手试验把玩。；一本走心的 JS-Native 交互电子书：知识小集团队 @lefe_x @halohily 同学潜心著作的一本学习 JS-Native 交互的电子书，这个专题旨在能够帮助更多的同学掌握 ","sections":[{"heading":"Swift 4.2 正式发布","url":"https://swift.org/blog/swift-4-2-released/"},{"heading":"一本走心的 JS-Native 交互电子书","url":"https://juejin.im/post/5ba03ea25188255c3f6bcc8c"},{"heading":"微信开源基于 mmap 内存映射的 key-value 组件 MMKV","url":"https://github.com/Tencent/MMKV"},{"heading":"Swift for TensorFlow, First Class Machine Learning in Swift","url":"https://xiaozhuanlan.com/topic/6123854970"},{"heading":"[[译]SE-0206 Hashable 加强](https://xiaozhuanlan.com/topic/1470362958)","url":null},{"heading":"这次 swift 大会分享准备的幻灯片和 demo","url":"https://www.jianshu.com/p/57331c22d788"},{"heading":"Facebook 工作体验之绩效考核","url":"https://mp.weixin.qq.com/s/eJ1ue5l5f0W1jvZ4unJJkA"},{"heading":"员工之间可不可以讨论工资收入？","url":"http://mrpeak.cn/blog/salary-share/"},{"heading":"深入浅出 Swift Numerics","url":"https://github.com/xwu/xwu-swift-numerics"},{"heading":"FastImageCache 原理","url":"https://mp.weixin.qq.com/s/5rgQjokaUduSuiPKbJIudw"},{"heading":"iOS 12 JS 数组 Bug，可能带来互联网风波，附解决方案","url":"https://juejin.im/post/5ba1c129e51d450e6237da01"},{"heading":"Capturing Self with Swift 4.2","url":"https://benscheirman.com/2018/09/capturing-self-with-swift-4-2"},{"heading":"Adding Padding To A Stack View","url":"https://useyourloaf.com/blog/adding-padding-to-a-stack-view/"},{"heading":"Async/await in Swift unit tests","url":"https://www.swiftbysundell.com/posts/asyncawait-in-swift-unit-tests"},{"heading":"What I Learned Making 5 ARKit Prototypes","url":"https://medium.com/@nathangitter/what-i-learned-making-five-arkit-prototypes-7a30c0cd3956"},{"heading":"2018 Google 开发者大会现场纪要","url":"https://juejin.im/post/5ba5b94ae51d4527ed0023dc"},{"heading":"What’s new in Swift 5.0","url":"https://www.hackingwithswift.com/articles/126/whats-new-in-swift-5-0"},{"heading":"i​OS 12","url":"https://nshipster.com/ios-12/"},{"heading":"操作系统是如何管理内存的","url":"http://limboy.me/tech/2018/09/14/os-memory.html"},{"heading":"Xcode 10 小技巧： NSData 的 popover 里可以直接下载内容","url":"https://twitter.com/weichsel/status/1042794107259764736"},{"heading":"2018 中国 Swift 开发者大会源文件，包括 pdf 和源工程文件","url":"https://github.com/atConf/atswift-2018-resources"},{"heading":"Awesome README","url":"https://github.com/matiassingers/awesome-readme"},{"heading":"Designing and Developing for Siri Shortcuts","url":"http://blog.maxrudberg.com/post/178153402778/designing-and-developing-for-siri-shortcuts"}]},{"id":"r-036-2018-09-17","type":"report","title":"老司机 iOS 周报 #36 | 2018-09-17","issue":36,"date":"2018-09-17","year":2018,"path":"Reports/2018/#36-2018.09.17.md","url":"Reports/2018/%2336-2018.09.17.md","excerpt":"DCloud 发布又一个跨端开发框架 uni-app：随着微信、支付宝、百度陆续发布小程序，手机厂商联盟发布快应用，移动互联网快速向以 js 为核心的动态 App 发展。手机硬件性能日益提升，动态App体验也越来越好。一方面前端工程师迎来历史性的机遇，另一方面又发现开发如此多版本让开发者苦不堪言。；提交 app 适配 iOS 12，watchOS 5, and tvOS 12：现在，可以使用 Xcode10 GM 版本构建您的应用，并对","sections":[{"heading":"DCloud 发布又一个跨端开发框架 uni-app","url":"https://mp.weixin.qq.com/s/oujjGXFaK4qc44KWuj0zXw"},{"heading":"提交 app 适配 iOS 12，watchOS 5, and tvOS 12","url":"https://developer.apple.com/news/?id=09122018c"},{"heading":"老司机推荐书单","url":"https://xiaozhuanlan.com/topic/6134790258"},{"heading":"你的标签是什么？","url":"https://github.com/SwiftOldDriver/iOS-Weekly/issues/722"},{"heading":"Swift for TensorFlow 官方教程","url":"https://github.com/tensorflow/swift-tutorials/blob/master/iris/swift_tensorflow_tutorial.ipynb"},{"heading":"镣铐之舞：美团安全工程师 Black Hat USA 演讲","url":"https://juejin.im/post/5b9b178ce51d450e5d0aec26"},{"heading":"How Apps Adapt to the Series 4 Apple Watch Screen Sizes","url":"https://medium.com/@hacknicity/how-apps-adapt-to-the-series-4-apple-watch-screen-sizes-2be49f8ae8f5"},{"heading":"JSPatch 的 dealloc 忧伤","url":"http://lingyuncxb.com/2018/01/21/JSPatch%E7%9A%84dealloc%E5%BF%A7%E4%BC%A4/"},{"heading":"iOS 中的多进程，下拉关闭系统的词典界面（Tweak 开发）","url":"http://iosre.com/t/ios-tweak/12806"},{"heading":"关于 iOS 私有 API 扫描","url":"https://www.jianshu.com/p/24026b30975f"},{"heading":"Preparing Your App For iOS 12 Notifications","url":"https://www.smashingmagazine.com/2018/09/preparing-your-app-for-ios-12-notifications/"},{"heading":"一次高效的依赖注入","url":"https://juejin.im/post/5b960cbfe51d450e4f388296"},{"heading":"DRIVING CARS WITH ARKIT","url":"https://martinmitrevski.com/2018/09/13/driving-cars-with-arkit/"},{"heading":"利用 ARkit，eBay 用头部运动控制 iPhone X 屏幕进行购物","url":"https://mp.weixin.qq.com/s/me_uVJYpFsSCT0Yxp7uSMw"},{"heading":"利用柯里化去除重复代码","url":"https://iweiyun.github.io/2018/09/04/curry-cleancode/"},{"heading":"JSPatch VS Aspects","url":"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/"},{"heading":"pointfreeco/swift-html","url":"https://github.com/pointfreeco/swift-html"},{"heading":"VideoFlint/Cabbage","url":"https://github.com/VideoFlint/Cabbage"},{"heading":"WWDC18 内参","url":"https://xiaozhuanlan.com/wwdc18"}]},{"id":"r-035-2018-09-10","type":"report","title":"老司机 iOS 周报 #35 | 2018-09-10","issue":35,"date":"2018-09-10","year":2018,"path":"Reports/2018/#35-2018.09.10.md","url":"Reports/2018/%2335-2018.09.10.md","excerpt":"Swift Server 工作组：Swift Server 工作组现在正式宣布进入下一个阶段，工作组接下来的目标是建立一套健康强壮的生态系统，让开发者可以更容易找到高质量的库和工具。其实早在 2016 年这个工作组就已经成立了，当时的目标是创建一套通用的底层 API，供上层的 Swift 服务端框架使用，这就是 ；10 月 3 号起所有 App 必须在 App Store Connect 里配置隐私政策链接：10 月 3 日起，所有新的","sections":[{"heading":"Swift Server 工作组","url":"https://swift.org/server/"},{"heading":"10 月 3 号起所有 App 必须在 App Store Connect 里配置隐私政策链接","url":"https://developer.apple.com/news/?id=08312018a"},{"heading":"Early returning functions in Swift","url":"https://www.swiftbysundell.com/posts/early-returning-functions-in-swift"},{"heading":"TODO FIXME And Compiler Directives","url":"https://useyourloaf.com/blog/todo-fixme-and-compiler-directives/"},{"heading":"iOS App 连接外设的几种方式","url":"https://segmentfault.com/p/1210000009602953/read"},{"heading":"iOS 如何精确还原 UI 稿多行文字间距","url":"http://joeshang.github.io/2018/03/29/ios-multiline-text-spacing/"},{"heading":"Why you’re not supposed to call description","url":"https://oleb.net/2018/dont-call-description/"},{"heading":"Practical Dynamic Type","url":"https://medium.com/livefront/practical-dynamic-type-d2b5774e8a8a"},{"heading":"iOS App 后台任务的坑","url":"https://mp.weixin.qq.com/s/MW02G1qiyce9v2cRYHCzLQ"},{"heading":"打造高可拓展的 iOS KeyValueStore","url":"https://xiangwangfeng.com/2017/01/20/打造高可拓展的-iOS-KeyValueStore/"},{"heading":"MacOS 的安全和隐私指南","url":"https://github.com/drduh/macOS-Security-and-Privacy-Guide/blob/master/README-cn.md"},{"heading":"Swift Knowledge Base updates for Swift 4.2","url":"https://www.hackingwithswift.com/articles/124/swift-knowledge-base-updates-for-swift-4-2"},{"heading":"Hacking Hit Tests","url":"http://khanlou.com/2018/09/hacking-hit-tests/"},{"heading":"CLI: improved","url":"https://remysharp.com/2018/08/23/cli-improved"},{"heading":"Lessons Learned From the RWDevCon 2018 Design Lab","url":"https://www.raywenderlich.com/5548-lessons-learned-from-the-rwdevcon-2018-design-lab"},{"heading":"Mac 高效开发指南","url":"https://xiaozhuanlan.com/Effective-Mac"},{"heading":"泊学技术视频","url":null,"recommender":"[构建自己的Docker镜像](https"}]},{"id":"r-034-2018-09-03","type":"report","title":"老司机 iOS 周报 #34 | 2018-09-03","issue":34,"date":"2018-09-03","year":2018,"path":"Reports/2018/#34-2018.09.03.md","url":"Reports/2018/%2334-2018.09.03.md","excerpt":"[[译] 在 Codable 中实践类型推断](https://xiaozhuanlan.com/topic/8954630721)：类型推断是 Swift 类型安全的一个强大特性。本文介绍了利用类型推断来优化 Codable API。看完文章后对类型推断的运用场景会有更好的理解。；手把手教你查看和分析 iOS 的 crash 崩溃异常：我们开发的 App 不可避免会出现闪退，可以通过集成一些第三方的闪退收集系统或 iTunesConn","sections":[{"heading":"[[译] 在 Codable 中实践类型推断](https://xiaozhuanlan.com/topic/8954630721)","url":null},{"heading":"手把手教你查看和分析 iOS 的 crash 崩溃异常","url":"https://www.jianshu.com/p/cf0945f9c1f8"},{"heading":"Why Monads?","url":"https://broomburgo.github.io/fun-ios/post/why-monads/"},{"heading":"Google Swift Style Guide 浓缩版","url":"https://xiaozhuanlan.com/topic/7012958364"},{"heading":"Improving Your Build Time in Xcode 10","url":"https://patrickbalestra.com/blog/2018/08/27/improving-your-build-time-in-xcode-10.html"},{"heading":"Dynamic Features in Swift","url":"https://www.raywenderlich.com/5743-dynamic-features-in-swift"},{"heading":"在 ARKit 中创建一个时空门 App","url":"https://juejin.im/post/5b57ddbbe51d451918534bc9"},{"heading":"iOS 的高性能、高实时性 key-value 持久化组件","url":"https://juejin.im/post/5b7e9bbc51882542e32a9c4d","recommender":"[FastKV](https"},{"heading":"Life of a Pixel 2018","url":"https://drive.google.com/file/d/1Ky59m-F79ULs4ydMbD4Mp1dBXvs_eDes/view"},{"heading":"When You Refactor, Are You Using Small Steps ?","url":"https://qualitycoding.org/refactor-small-steps/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+qualitycoding+%28Quality+Coding%29"},{"heading":"闲聊 Flutter","url":"http://blog.cnbang.net/tech/3605/"},{"heading":"Enum iterations in Swift 4.2","url":"https://www.swiftbysundell.com/posts/enum-iterations-in-swift-42"},{"heading":"dyld_link & load","url":"https://blog.mrriddler.com/dyld_link&load/"},{"heading":"TCP 没那么难吧？","url":"https://mp.weixin.qq.com/s/zRelB6uSz07YaCoJoggZZA"},{"heading":"NSDataAsset","url":"https://nshipster.com/nsdataasset/"},{"heading":"Xcode 10 Storyboard Changes","url":"https://makeapppie.com/2018/08/29/xcode-10-storyboard-changes/"},{"heading":"Objective-C: 写一份可测试的代码","url":"https://juejin.im/post/5b87532be51d4538e6333dd0"},{"heading":"UI 自动化测试：通过 Appium 加速你的客户端 UI 测试","url":"https://www.appcoda.com/automated-ui-testing-appium/"},{"heading":"Mermaid，一个生成结构图的工具","url":"https://www.gracecode.com/posts/3166.html"},{"heading":"基于 ARKit 的 iOS 无限屏实现，还原锤子发布会效果","url":"https://juejin.im/post/5b801cede51d4538a108af56"},{"heading":"《iOS 面试之道》电子版","url":"https://xiaozhuanlan.com/ios-interview"}]},{"id":"r-033-2018-08-27","type":"report","title":"老司机 iOS 周报 #33 | 2018-08-27","issue":33,"date":"2018-08-27","year":2018,"path":"Reports/2018/#33-2018.08.27.md","url":"Reports/2018/%2333-2018.08.27.md","excerpt":"Easier Scrolling With Layout Guides：iOS 11 为 增加了新的 layout guide： 、 ，目的在于让 scroll view 的 constraints 设置变得更加直观，这篇文章会为你实际展示如何使用它们。；Model controllers in Swift：如何封装 Model 相关的逻辑是保持代码高可维护性的关键之一，通常来说，设计优良的类型定义通常奠定了一个好架构的基础。作者介绍了","sections":[{"heading":"Easier Scrolling With Layout Guides","url":"https://useyourloaf.com/blog/easier-scrolling-with-layout-guides/"},{"heading":"Model controllers in Swift","url":"https://www.swiftbysundell.com/posts/model-controllers-in-swift"},{"heading":"Atomic Properties in Swift","url":"http://www.vadimbulavin.com/atomic-properties"},{"heading":"Swift Property Observers","url":"https://nshipster.com/swift-property-observers/"},{"heading":"Hook 所有 `+load` 方法（包括 Category）","url":"https://mp.weixin.qq.com/s/kL__CM3CfP_7i8Obg8qzWQ"},{"heading":"Examples of NSPredicate usage","url":"https://nspredicate.xyz/"},{"heading":"The difference between Flux and Redux","url":"https://edgecoders.com/the-difference-between-flux-and-redux-71d31b118c1"},{"heading":"Let's Talk Architecture","url":"http://kean.github.io/post/app-architecture"},{"heading":"[[译]构建流畅的交互界面](https://juejin.im/post/5b7e2b34e51d4538843612cc)","url":null},{"heading":"统计 CocoaPod 组件大小的工具集","url":"https://github.com/google/cocoapods-size"},{"heading":"Schedule","url":"https://github.com/jianstm/Schedule"},{"heading":"DifferenceKit","url":"https://github.com/ra1028/DifferenceKit"},{"heading":"Validated","url":"https://github.com/pointfreeco/swift-validated"}]},{"id":"r-032-2018-08-20","type":"report","title":"老司机 iOS 周报 #32 | 2018-08-20","issue":32,"date":"2018-08-20","year":2018,"path":"Reports/2018/#32-2018.08.20.md","url":"Reports/2018/%2332-2018.08.20.md","excerpt":"最亲民的 HomeKit：用 Siri 控制米家智能硬件：一直以来，HomeKit 配件因为过于昂贵的原因，阻碍着它进入寻常百姓家。另一方面，国内小米的生态布局已经初见规模：开关、插座、灯等品种繁多。但是，Apple 的生态中，使用 Siri 来控制家中的硬件无疑是最方便的。而通过米家应用来控制硬件总有点隔靴搔痒的感觉。为此，先行者们曾；为什么大公司还在采用过时的技术？：本文描述了一个很现实的问题，就是部分人费劲心力加入的大公司，实际上","sections":[{"heading":"最亲民的 HomeKit：用 Siri 控制米家智能硬件","url":"https://weibo.com/ttarticle/p/show?id=2309404273586260070285"},{"heading":"为什么大公司还在采用过时的技术？","url":"https://mp.weixin.qq.com/s/4ndekCuS9n4eYpUIj80Eiw"},{"heading":"Let it Rip","url":"https://indiestack.com/2018/08/let-it-rip/"},{"heading":"谈谈 RxSwift 和状态管理","url":"https://juejin.im/post/5b6d72636fb9a04fd93e611b","recommender":"现在大前端的概念非常深入人心，在大前端中一个体系是几乎无法被忽略的"},{"heading":"把 Objective-C 类迁移到 Swift","url":"https://oleb.net/2018/objc-swift-transition/"},{"heading":"Scalable bulleted lists with UILabel or UITextView","url":"https://bendodson.com/weblog/2018/08/09/bulleted-lists-with-uilabel/"},{"heading":"iOS App 后台 Crash 调查","url":"https://mp.weixin.qq.com/s/8yOhyTDzFjFlqj_3tol-GQ"},{"heading":"Creating a Bottom Sheet","url":"https://skagedal.github.io/2018/08/03/bottom-sheet.html"},{"heading":"端内外融合拉新，用户增长 -- 相关技术方案选型分析","url":"https://juejin.im/post/5b762f876fb9a009b03623a8"},{"heading":"The 5 Whys for Product Managers","url":"https://www.bignerdranch.com/blog/the-five-whys-for-product-managers/"},{"heading":"How to Build Swift Compiler-Based Tool? The Step-by-Step Guide","url":"https://www.polidea.com/blog/how-to-build-swift-compiler-based-tool-the-step-by-step-guide"},{"heading":"Sourcery - Swift元编程实践，告别样板代码","url":"https://juejin.im/post/5addec4df265da0b7025860e"},{"heading":"Trimming long argument lists in Swift","url":"https://www.swiftbysundell.com/posts/trimming-long-argument-lists-in-swift/"},{"heading":"可视化调试时将指针地址转为 emoji","url":"https://gist.github.com/cellularmitosis/d425aae5f1a2e5d9bfa1d4c1a5968d22"},{"heading":"北京-蚂蚁金服 招iOS/安卓/前端开发","url":"https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0"},{"heading":"编辑内推","url":null}]},{"id":"r-031-2018-08-13","type":"report","title":"老司机 iOS 周报 #31 | 2018-08-13","issue":31,"date":"2018-08-13","year":2018,"path":"Reports/2018/#31-2018.08.13.md","url":"Reports/2018/%2331-2018.08.13.md","excerpt":"备受 iOS 开发者喜爱的 raywenderlich 社区全新改版！：raywenderlich 这次进行大改版，为开发者提供更为优质的教程。此次更新主要有：；WWDC 2018 视频已经全部配上简体中文和日文字幕：在早些时候，苹果已经为所有视频配上了英文字幕，仅少部分视频有中文字幕，这次全部都已配上简体中文和日文字幕。相比去年第一次有中文字幕，今年的又额外增加了日文字幕，看来日语区的 Apple 开发者也不少。如果你对之前的看的某个","sections":[{"heading":"备受 iOS 开发者喜爱的 raywenderlich 社区全新改版！","url":"https://www.raywenderlich.com/6646-welcome-to-the-new-raywenderlich-com"},{"heading":"WWDC 2018 视频已经全部配上简体中文和日文字幕","url":"https://developer.apple.com/news/?id=08082018a"},{"heading":"Dart 重启！Dart 2 正式发布，目标成为移动与 Web 开发主流语言","url":"https://mp.weixin.qq.com/s/7h9MLe9YJn0VmZ9Rsni-KA"},{"heading":"Guys, REST APIs are not Databases","url":"https://medium.com/@marinithiago/guys-rest-apis-are-not-databases-60db4e1120e4"},{"heading":"Refactoring Massive App Delegate","url":"http://www.vadimbulavin.com/refactoring-massive-app-delegate/"},{"heading":"Type inference-powered serialization in Swift","url":"https://www.swiftbysundell.com/posts/type-inference-powered-serialization-in-swift"},{"heading":"面试中的个人竞争力","url":"https://xiaozhuanlan.com/topic/3670248951"},{"heading":"[由 NSObject \\*obj = \\[\\[NSObject alloc\\] init\\] 引发的一二事儿](https://juejin.im/post/5b63b857e51d455f5f4d1d74)","url":null},{"heading":"剖析 ARM 64 架构中的 objc_msgSend","url":"https://juejin.im/post/5b67c781e51d4519202e601b"},{"heading":"构建流畅的人机交互","url":"https://medium.com/@nathangitter/building-fluid-interfaces-ios-swift-9732bb934bf5"},{"heading":"血泪总结:如何从微信小程序的坑跳进支付宝小程序的大坑","url":"https://juejin.im/post/5b651e9ee51d4535c7564fd1"},{"heading":"WubaRN 分步打包流程","url":"https://mp.weixin.qq.com/s/KVDKheeUvaeLwxERcY-nbQ"},{"heading":"NLLanguageRecognizer","url":"https://nshipster.com/nllanguagerecognizer/"},{"heading":"5 分钟教你成为会赚钱的独立开发者","url":"https://juejin.im/post/5b67f69a5188251aaa2d5138"},{"heading":"Xcode::Install","url":"https://github.com/krausefx/xcode-install","recommender":"Xcode"},{"heading":"Knil","url":"https://github.com/ethanhuang13/knil"},{"heading":"北京-蚂蚁金服 招iOS/安卓/前端开发","url":"https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0"},{"heading":"编辑内推","url":null}]},{"id":"r-030-2018-08-06","type":"report","title":"老司机 iOS 周报 #30 | 2018-08-06","issue":30,"date":"2018-08-06","year":2018,"path":"Reports/2018/#30-2018.08.06.md","url":"Reports/2018/%2330-2018.08.06.md","excerpt":"新变化不多，但最新的 iOS 12 「剧透」了今年可能发布的新硬件 | 具透：在 iOS 12 的第四个公开测试版中，苹果可透露了不少新硬件的信息：比如支持双卡双待的 iPhone；支持 Face ID 的 iPad；支持无线充电的 AirPods 充电盒；以及 HomePod 将支持打电话。其他软件方面的改动也不少，具体还是仔细看看原文。当然，如果你问我；Swift 4 弱引用实现：原文作者 Mike Ash，是知名博客 Friday","sections":[{"heading":"新变化不多，但最新的 iOS 12 「剧透」了今年可能发布的新硬件 | 具透","url":"https://sspai.com/post/45936"},{"heading":"Swift 4 弱引用实现","url":"https://swift.gg/2018/08/02/swift-4-weak-references/"},{"heading":"如何在几十个 Repo 中游刃有余","url":"https://mp.weixin.qq.com/s/jyURunuToRyLwOFyeMrcQA"},{"heading":"MessageThrottle Safety","url":"http://yulingtianxia.com/blog/2018/07/31/MessageThrottle-Safety/","recommender":"[MessageThrottle](https"},{"heading":"Structuring Swift code","url":"https://www.swiftbysundell.com/posts/structuring-swift-code"},{"heading":"Flutter 的编译模式","url":"https://mp.weixin.qq.com/s/O4Yws6KUc1O6q-yzRPRPJA"},{"heading":"Migrating an Objective-C class to Swift: a piecemeal approach","url":"https://oleb.net/2018/objc-swift-transition/"},{"heading":"Never","url":"https://nshipster.com/never/"},{"heading":"JSON Web Token 入门教程","url":"http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html"},{"heading":"Scrollable UIStackView","url":"https://blog.alltheflow.com/scrollable-uistackview/"},{"heading":"PerfectAccelerators - 加速 Perfect Server Side Swift 开发","url":"https://github.com/PerfectAccelerators/PerfectAccelerators.github.io"},{"heading":"ADDC 2018","url":"https://www.youtube.com/playlist?list=PLwR4QwnnbBuLHBfsD0Spj6hAcI4yT3uib"},{"heading":"北京-拉勾网招聘 iOS 工程师","url":"https://www.lagou.com/jobs/3301073.html"},{"heading":"北京-蚂蚁金服 招iOS/安卓/前端开发","url":"https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0"},{"heading":"编辑内推","url":null}]},{"id":"r-029-2018-07-30","type":"report","title":"老司机 iOS 周报 #29 | 2018-07-30","issue":29,"date":"2018-07-30","year":2018,"path":"Reports/2018/#29-2018.07.30.md","url":"Reports/2018/%2329-2018.07.30.md","excerpt":"Mattt 和一些国内开发者一起重启了 NSHipster.cn：自 Mattt 今年从苹果离职并重新投入到开发社区后，先后创建了 @Flight-School 和重启了 @NSHipster 的更新。而就在上周，有心的开发者会发现 NSHipster 的中文版仓库也开始有更新了，Mattt 已经确认将会和中国开发者一起完成 NSHipster；Updating Strings For Swift 4.2：Swift 4.2 中的 St","sections":[{"heading":"Mattt 和一些国内开发者一起重启了 NSHipster.cn","url":"https://github.com/NSHipster/articles-zh-Hans"},{"heading":"Updating Strings For Swift 4.2","url":"https://useyourloaf.com/blog/updating-strings-for-swift-4.2/"},{"heading":"Snapshot Testing on iOS","url":"https://ashfurrow.com/blog/snapshot-testing-on-ios/"},{"heading":"RESTful API Design — Step By Step Guide","url":"https://hackernoon.com/restful-api-design-step-by-step-guide-2f2c9f9fcdbf"},{"heading":"iOS 启动时间优化","url":"http://www.zoomfeng.com/blog/launch-time.html"},{"heading":"Swift HTTP Server 开发体验","url":"http://posts.enumsblog.com/posts/18014"},{"heading":"Custom Types for Powerful Matching","url":"http://www.figure.ink/blog/2018/7/23/custom-types-for-powerful-matching"},{"heading":"Conditional Compilation in Swift, Part 1","url":"https://davedelong.com/blog/2018/07/25/conditional-compilation-in-swift-part-1/"},{"heading":"让你的 Swift 代码保持良好的向后兼容性","url":"https://www.swiftbysundell.com/posts/writing-backward-compatible-swift-code"},{"heading":"Better iOS projects: Getting (nearly) rid of Xcodeproject - A (not so) short Introduction to Xcodegen","url":"https://www.number42.de/blog/2018/07/24/xcodegen-article.html"},{"heading":"Password Rules / UITextInputPasswordRules","url":"https://nshipster.com/uitextinputpasswordrules/"},{"heading":"NSHipster.cn：WKWebView","url":"https://nshipster.com/wkwebview/"},{"heading":"DBDebugToolkit","url":"https://github.com/dbukowski/DBDebugToolkit"},{"heading":"iOS 面试之道","url":"https://item.jd.com/12403068.html"},{"heading":"Appdevcon 视频","url":"https://vimeo.com/appdevcon"},{"heading":"北京-蚂蚁金服 招 iOS/安卓/前端开发","url":"https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0"},{"heading":"编辑内推","url":null}]},{"id":"r-028-2018-07-23","type":"report","title":"老司机 iOS 周报 #28 | 2018-07-23","issue":28,"date":"2018-07-23","year":2018,"path":"Reports/2018/#28-2018.07.23.md","url":"Reports/2018/%2328-2018.07.23.md","excerpt":"How not to be a mediocre developer：成为优秀程序员的 12 条 Tips，涉及到代码习惯，学习方法以及态度等多个方面，值得大家学习和思考。；移动应用架构演变及泛前端趋势下移动团队破局：看到这样的标题是不是被吓了一跳。我一直觉得一般标题太牛逼的文章都会有点刻意感，不过看完这篇文章之后打消了我的偏见。这篇文章核心是两部分，首先是回归了移动端工程体系发展的历史，然后是讨论了在现在这个局势下，技术团队和工程师个","sections":[{"heading":"How not to be a mediocre developer","url":"https://hackernoon.com/how-not-to-be-a-mediocre-developer-c59a49f97fc5"},{"heading":"移动应用架构演变及泛前端趋势下移动团队破局","url":"https://mp.weixin.qq.com/s/iHehLneIYibWq6IRjuefxg"},{"heading":"mock in iOS","url":"https://juejin.im/post/5b4ede9151882536e5177c49"},{"heading":"How to write a good software design doc","url":"https://medium.freecodecamp.org/how-to-write-a-good-software-design-document-66fcf019569c"},{"heading":"2018年 iOS 面试心得","url":"https://juejin.im/post/5b4cd5aae51d455b5d3efa2c"},{"heading":"Bug Reporting","url":"https://nshipster.com/bug-reporting/"},{"heading":"苹果 iOS 系统源码思考：对象的引用计数存储在哪里？- 从 runtime 源码得到的启示","url":"https://juejin.im/post/5b4c59a55188251ac9767872"},{"heading":"WWDC18: A Basic Guide to App Store Connect API","url":"https://medium.com/xcblog/wwdc18-a-basic-guide-to-app-store-connect-api-366208651ac6"},{"heading":"An Introduction to AR Quick Look in iOS 12","url":"https://www.appcoda.com/arkit-quick-look/"},{"heading":"Automatic Screenshots With fastlane snapshot","url":"https://agostini.tech/2018/07/15/automatic-screenshots-with-fastlane-snapshot/"},{"heading":"Refactoring Swift code for testability","url":"https://www.swiftbysundell.com/posts/refactoring-swift-code-for-testability"},{"heading":"GraphQL 在微服务架构中的实践","url":"https://draveness.me/graphql-microservice"},{"heading":"The Lotus MVC Pattern: Solving the 5 Issues of the MVC, MVVM and VIPER patterns","url":"https://matteomanferdini.com/ios-architecture-lotus-mvc-pattern/"},{"heading":"美团客户端响应式框架 EasyReact 开源啦","url":"https://mp.weixin.qq.com/s/TSu50PihKjy9rvg2zuF6bQ"},{"heading":"RxReduce","url":"https://github.com/RxSwiftCommunity/RxReduce"},{"heading":"ZJAttributedText","url":"https://github.com/syik/ZJAttributedText"},{"heading":"Twitter Network Layer (TNL)","url":"https://github.com/twitter/ios-twitter-network-layer"},{"heading":"字节跳动北京 iOS 团队持续招人中","url":"https://job.toutiao.com/society"},{"heading":"深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目","url":"https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D","recommender":"如想了解更多深圳头条的信息，可以加小T微信"},{"heading":"杭州/广州/深圳 奇志科技招聘 iOS、前端","url":"https://www.lagou.com/gongsi/34872.html"},{"heading":"百度教育事业部招 iOS 开发","url":"https://www.baidu.com/s?wd=百度"},{"heading":"上海-加入即刻","url":"https://www.okjike.com/careers"},{"heading":"北京-蚂蚁金服 招iOS/安卓/前端开发","url":"https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0"}]},{"id":"r-027-2018-07-16","type":"report","title":"老司机 iOS 周报 #27 | 2018-07-16","issue":27,"date":"2018-07-16","year":2018,"path":"Reports/2018/#27-2018.07.16.md","url":"Reports/2018/%2327-2018.07.16.md","excerpt":"WWDC18 Video Transcripts Now Available：WWDC 2018 的字幕支持全文关键词检索了！而且通过这个关键词打开的视频会直接定位到关键词所在的位置，另外分享的视频也支持分享某个特定的时间点了。；Swift GYB：大家经常听到 boilerplate 这个单词，一般都用来指代一些相似但又不完全相同的代码结构。这篇文章讲述了关于这个单词由来的趣闻，而且还介绍了在 Swift 开发中最常用的一个处理 bo","sections":[{"heading":"WWDC18 Video Transcripts Now Available","url":"https://developer.apple.com/news/?id=07092018a"},{"heading":"Swift GYB","url":"https://nshipster.com/swift-gyb/"},{"heading":"Web Architecture 101","url":"https://engineering.videoblocks.com/web-architecture-101-a3224e126947","recommender":"曾经有一段时间很流行一个面试题"},{"heading":"[[译]Create ML 教程: 开始入门](https://juejin.im/post/5b2f66a9f265da59a1172896)","url":null},{"heading":"腾讯社招 iOS 面试记录","url":"https://juejin.im/post/5b3c40f4e51d45191a0d0aae"},{"heading":"Flutter混合工程改造实践","url":"https://juejin.im/post/5b3f098ce51d45199840f4bb"},{"heading":"Better iOS projects: How to manage your tooling with mint","url":"https://www.number42.de/blog/2018/07/03/mint-2018-07-03-mint.html"},{"heading":"你可能会忽略的 Git 提交规范","url":"http://jartto.wang/2018/07/08/git-commit/"},{"heading":"Video Streaming Tutorial for iOS: Getting Started","url":"https://www.raywenderlich.com/188867/video-streaming-tutorial-for-ios-getting-started"},{"heading":"实现一个优雅的 iOS 事件总线","url":"https://blog.csdn.net/Hello_Hwc/article/details/81023561"},{"heading":"带着《iOS应用逆向与安全》，我还在路上","url":"http://bbs.iosre.com/t/ios/12301","recommender":"距离庆哥新书『[iOS应用逆向与安全](https"},{"heading":"Anti-If: The missing patterns","url":"https://code.joejag.com/2016/anti-if-the-missing-patterns.html"},{"heading":"深入理解 iOS Crash Log","url":"https://blog.csdn.net/Hello_Hwc/article/details/80946318"},{"heading":"So, you want to build a “Silicon Valley-like” software developer culture","url":"https://medium.com/men-in-healing/so-you-want-to-build-a-silicon-valley-software-culture-f5674d22dcf6"},{"heading":"New in iOS 12: Adding a Custom UI and Interactivity in Local and Push Notifications","url":"https://www.appcoda.com/user-notifications-ios12/"},{"heading":"iOS 界面性能优化浅析","url":"https://coderzsq.github.io/2018/07/iOS-%E7%95%8C%E9%9D%A2%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E6%B5%85%E6%9E%90/"},{"heading":"@autoclosure what, why and when","url":"https://medium.com/ios-os-x-development/https-medium-com-pavelgnatyuk-autoclosure-what-why-and-when-swift-641dba585ece"},{"heading":"Swift 里的原子属性","url":"http://www.vadimbulavin.com/atomic-properties"},{"heading":"减少 ViewController 的继承","url":"https://www.swiftbysundell.com/posts/subclass-free-view-controllers-in-swift"},{"heading":"How To Make Your Code Readable","url":"https://medium.com/@chbchb55/the-importance-of-readable-code-165895e939c7"},{"heading":"Two Years of Functional Programming in JavaScript: Lessons Learned","url":"https://hackernoon.com/two-years-of-functional-programming-in-javascript-lessons-learned-1851667c726"},{"heading":"Debugging on iOS With Unified Logging System","url":"https://agostini.tech/2018/06/24/unified-logging-system/"},{"heading":"iOS视频开发（一）：视频采集","url":"https://www.jianshu.com/p/eccdcf43d7d2"},{"heading":"Design Ops — A New Discipline","url":"https://clearleft.com/posts/design-ops-a-new-discipline"},{"heading":"iOS 调试线上 app 中 WebView 的方法","url":"https://github.com/PixelCyber/Thor/blob/master/tips-zh-Hans/breakpoint.md"},{"heading":"Awesome macOS open source applications.","url":"https://github.com/serhii-londar/open-source-mac-os-apps/blob/master/README.md"},{"heading":"GPUImage3","url":"https://github.com/SwiftOldDriver/iOS-Weekly"},{"heading":"字节跳动北京 iOS 团队持续招人中","url":"https://job.toutiao.com/society"},{"heading":"深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目","url":"https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D","recommender":"如想了解更多深圳头条的信息，可以加小T微信"},{"heading":"杭州/广州/深圳 奇志科技招聘 iOS、前端","url":"https://www.lagou.com/gongsi/34872.html"},{"heading":"百度教育事业部招 iOS 开发","url":"https://www.baidu.com/s?wd=百度"},{"heading":"上海-加入即刻","url":"https://www.okjike.com/careers"},{"heading":"北京-蚂蚁金服 招iOS/安卓/前端开发","url":"https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0"}]},{"id":"r-026-2018-07-09","type":"report","title":"老司机 iOS 周报 #26 | 2018-07-09","issue":26,"date":"2018-07-09","year":2018,"path":"Reports/2018/#26-2018.07.09.md","url":"Reports/2018/%2326-2018.07.09.md","excerpt":"MWeb 3.0 发布 | 首发半价销售，最后三天：MWeb 是一款专业的 Markdown 写作、记笔记、静态博客生成软件。对于长期和 Markdown 打交道的人来说是一款必不可少的利器。MWeb 3.0 在 MWeb 2.0 的图床上传、支持图表等优秀的功能之上带来了几个不错的新功能:；WiFi 联盟制定 WPA2 认证的升级版 WPA3，让 WIFI 变得更安全：2018年6月25日，Wi-FiAlliance® 推出 WPA3","sections":[{"heading":"MWeb 3.0 发布 | 首发半价销售，最后三天","url":"https://zh.mweb.im"},{"heading":"WiFi 联盟制定 WPA2 认证的升级版 WPA3，让 WIFI 变得更安全","url":"https://www.wi-fi.org/news-events/newsroom/wi-fi-alliance-introduces-wi-fi-certified-wpa3-security"},{"heading":"知识小集 2018 上半年文章汇总","url":"https://mp.weixin.qq.com/s/vB5F2Mc0TlJyt-bLyJ_dpg"},{"heading":"How Graphics Cards Work","url":"https://www.extremetech.com/gaming/269335-how-graphics-cards-work"},{"heading":"Test Driven Development Tutorial for iOS: Getting Started","url":"https://www.raywenderlich.com/185640/test-driven-development-tutorial"},{"heading":"ReactJS vs Angular5 vs Vue.js — What to choose in 2018?","url":"https://medium.com/@TechMagic/reactjs-vs-angular5-vs-vue-js-what-to-choose-in-2018-b91e028fa91d"},{"heading":"Parallel Programming with Swift: What could possibly go wrong?","url":"https://medium.com/flawless-app-stories/parallel-programming-with-swift-what-could-possibly-go-wrong-f5bcc38b1814"},{"heading":"Operation and OperationQueue Tutorial in Swift","url":"https://www.raywenderlich.com/190008/operation-and-operationqueue-tutorial-in-swift"},{"heading":"Ways we make the Slack iOS app accessible","url":"https://slack.engineering/ways-we-make-the-slack-ios-app-accessible-18039d3fdb34"},{"heading":"FOUND: 7 lost principles of continuous delivery","url":"https://medium.com/@warren.engineer/found-7-lost-principles-of-continuous-delivery-2125a3049d09"},{"heading":"View Controller Lifecycle Explained: When to Use viewDidLayoutSubviews","url":"https://www.appcoda.com/view-controller-lifecycle/"},{"heading":"AutoLayout 中的线性规划 - Simplex 算法","url":"https://xiaozhuanlan.com/topic/5378941206"},{"heading":"Part 1","url":"https://medium.com/@RobertGummesson/a-look-at-uiview-animation-curves-part-1-191d9e6de0ab"},{"heading":"15 Years Ago, I Went Indie and Didn’t Know It.","url":"https://medium.com/building-ulysses/15-years-ago-i-went-indie-and-didnt-know-it-cca7ab53c8d2"},{"heading":"iOS代码调试: Safari / Chrome 调试 WebView","url":"https://blog.csdn.net/hello_hwc/article/details/80721246"},{"heading":"iOS代码调试: 启动参数和环境变量","url":"https://blog.csdn.net/hello_hwc/article/details/80865787"},{"heading":"React Native: A retrospective from the mobile-engineering team at Udacity","url":"https://engineering.udacity.com/react-native-a-retrospective-from-the-mobile-engineering-team-at-udacity-89975d6a8102"},{"heading":"厌倦了 Core ML？试试 Google ML","url":"https://www.appcoda.com/mlkit/"},{"heading":"程序员应不应该背锅？","url":"https://mp.weixin.qq.com/s/2OZu7FApXJz7BXW66HuEaQ"},{"heading":"REST vs. GraphQL: A Critical Review","url":"https://blog.goodapi.co/rest-vs-graphql-a-critical-review-5f77392658e7"},{"heading":"A fresh way to build native apps for Apple platforms with Swift","url":"https://flint.tools"},{"heading":"华为快应用引擎技术架构详解","url":"https://mp.weixin.qq.com/s/JdNJifhpkGzd0VpLZhN6Eg"},{"heading":"如何在 iOS 11 里把你的 App 集成到 Files","url":"https://www.appcoda.com/files-app-integration/"},{"heading":"美团出品：EasySequence","url":"https://github.com/meituan/EasySequence"},{"heading":"What It Was Like to Write a Full Blown Flutter App","url":"https://hackernoon.com/what-it-was-like-to-write-a-full-blown-flutter-app-330d8202825b"},{"heading":"UITableView Infinite Scrolling Tutorial","url":"https://www.raywenderlich.com/187041/uitableview-infinite-scrolling-tutorial"},{"heading":"追踪 Objective-C Block 代码定义的位置","url":"http://yulingtianxia.com/blog/2018/06/24/Objective-C-Block-Mangle-Name/"},{"heading":"The iPad as a fast, precise tool for creativity","url":"https://uxdesign.cc/the-ipad-as-a-fast-precise-tool-for-creativity-21384ea18659"},{"heading":"机器学习50个最佳免费数据集","url":"https://gengo.ai/articles/the-50-best-free-datasets-for-machine-learning/"},{"heading":"Bartinter","url":"https://github.com/MaximKotliar/Bartinter"},{"heading":"字节跳动","url":"https://job.toutiao.com/society"},{"heading":"深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目","url":"https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D","recommender":"如想了解更多深圳头条的信息，可以加小T微信"},{"heading":"杭州/广州/深圳 奇志科技招聘 iOS、前端","url":"https://www.lagou.com/gongsi/34872.html"},{"heading":"百度教育事业部招 iOS 开发","url":"https://www.baidu.com/s?wd=百度"},{"heading":"上海-加入即刻","url":"https://www.okjike.com/careers"}]},{"id":"r-025-2018-07-02","type":"report","title":"老司机 iOS 周报 #25 | 2018-07-02","issue":25,"date":"2018-07-02","year":2018,"path":"Reports/2018/#25-2018.07.02.md","url":"Reports/2018/%2325-2018.07.02.md","excerpt":"2018@Swift 大会来了～：由 SwiftGG 翻译组主办的第三届 @Swift 大会将于 2018 年 9 月 15 日在北京举办，大会邀请了来自国内外的重量级嘉宾，旨在为 iOS 开发者带来一场 Swift 的盛宴。现在使用老司机周报的专属优惠码：SwiftOldDriver 报名立减 60 元 。；WWDC 2018 Viewing Guide：useyourloaf 对 WWDC2018 的 Session 进行了一个分类","sections":[{"heading":"2018@Swift 大会来了～","url":"https://atswift.swift.gg/"},{"heading":"WWDC 2018 Viewing Guide","url":"https://useyourloaf.com/blog/wwdc-2018-viewing-guide/"},{"heading":"Zeplin 2.0 发布 — 引入组件模块","url":"https://zhuanlan.zhihu.com/p/38382742"},{"heading":"JavaScript async/await: The Good Part, Pitfalls and How to Use","url":"https://hackernoon.com/javascript-async-await-the-good-part-pitfalls-and-how-to-use-9b759ca21cda"},{"heading":"Handling mutable models in Swift","url":"https://www.swiftbysundell.com/posts/handling-mutable-models-in-swift"},{"heading":"Learn Core Graphics with Swift Playground","url":"https://www.hackingwithswift.com/articles/123/learn-core-graphics-with-swift-playgrounds"},{"heading":"Airbnb and React Native Expectations","url":"https://ashfurrow.com/blog/airbnb-and-react-native-expectations/"},{"heading":"Upgrading To Swift 4.2","url":"https://useyourloaf.com/blog/upgrading-to-swift-4.2/"},{"heading":"DeepLearning 101: Coursera Vs Udemy Vs Udacity","url":"https://hackernoon.com/deeplearning-101-coursera-vs-udemy-vs-udacity-b4eb3de06dbe"},{"heading":"ReSwift in Practice","url":"https://medium.com/@tobi_86596/reswift-in-practice-1512e0f59eb5"},{"heading":"Xcode 小技巧：利用 assets 配置针对不同设备的资源","url":"https://juejin.im/post/5b389cf9f265da59a8365e69"},{"heading":"Swift vs. Kotlin — the differences in memory management","url":"https://blog.indoorway.com/swift-vs-kotlin-the-differences-in-memory-management-860828edf8"},{"heading":"What’s New in Swift 4.2?","url":"https://www.raywenderlich.com/194066/whats-new-in-swift-4-2"},{"heading":"Non Empty","url":"https://www.pointfree.co/blog/posts/7-open-sourcing-nonempty"},{"heading":"帮助你做一个更好的软件架构师","url":"https://hackernoon.com/38-actions-and-insights-to-become-a-better-software-architect-f135e2de9a1b"},{"heading":"美团外卖iOS多端复用的推动、支撑与思考","url":"https://mp.weixin.qq.com/s/l2BjXPPbCiXZ-gYlOcD7ug"},{"heading":"Test Drive","url":"https://github.com/JohnSundell/TestDrive"},{"heading":"Sift app - 实时监测手机所有 App 的网络情况","url":"https://github.com/agrinman/sift-ios"},{"heading":"新一代 Swift ORM: Perfect-CRUD","url":"https://mp.weixin.qq.com/s/I3yccTrUH7wDjb1j-6b_-A"},{"heading":"Lynx - 又一个跨平台开发框架","url":"https://github.com/hxxft/lynx-native"},{"heading":"ZHNJSBox - 乞丐版JSBox","url":"https://github.com/zhnnnnn/ZHNJSBox"},{"heading":"Swift 4.2 功能 Playground 全展示","url":"https://github.com/ole/whats-new-in-swift-4-2"},{"heading":"iOS 应用逆向与安全","url":"https://item.jd.com/12361729.html"},{"heading":"字节跳动","url":"https://job.toutiao.com/society"},{"heading":"深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目","url":"https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D","recommender":"如想了解更多深圳头条的信息，可以加小T微信"},{"heading":"杭州/广州/深圳 奇志科技招聘 iOS、前端","url":"https://www.lagou.com/gongsi/34872.html"},{"heading":"百度教育事业部招 iOS 开发","url":"https://www.baidu.com/s?wd=百度"},{"heading":"上海-加入即刻","url":"https://www.okjike.com/careers"}]},{"id":"r-024-2018-06-25","type":"report","title":"老司机 iOS 周报 #24 | 2018-06-25","issue":24,"date":"2018-06-25","year":2018,"path":"Reports/2018/#24-2018.06.25.md","url":"Reports/2018/%2324-2018.06.25.md","excerpt":"《WWDC 17 内参》免费订阅：去年我们组织针对 WWDC 17 的内容写了 25 篇文章，原来售价 39 元，现在免费开放给大家。；\"iPhone Only\" apps on the iPad：一个不错的消息，在 iOS 12 beta 2 上，你的 iPhone Only 应用程序将会以 16：9 的比例运行。在此之前，尽管 iOS 10 不再支持 iPhone 4S，但你依旧需要让 APP 能以 3：2 的比例运行在 iPad ","sections":[{"heading":"《WWDC 17 内参》免费订阅","url":"https://xiaozhuanlan.com/wwdc17"},{"heading":"\"iPhone Only\" apps on the iPad","url":"https://bendodson.com/weblog/2018/06/20/iphone-only-apps-on-ipad/"},{"heading":"苹果键盘维修计划","url":"https://www.apple.com/cn/support/keyboard-service-program-for-macbook-and-macbook-pro/"},{"heading":"重磅！Google发布Flutter Release Preview 1","url":"https://mp.weixin.qq.com/s/iF-5Ak1cMI7c8kaeqwbdbg"},{"heading":"WWDC2018 - 来自一线开发者的技术笔记","url":"https://techblog.toutiao.com/2018/06/19/untitled-49/"},{"heading":"What’s Next for Mobile at Airbnb","url":"https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c"},{"heading":"On Apple's Love Affair With Swift","url":"https://stefan-lesser.com/2018/06/20/on-apples-love-affair-with-swift/"},{"heading":"Maintaining Productivity as Engineering Teams Scale","url":"https://medium.com/accel-india-insights/maintaining-productivity-as-engineering-teams-scale-1a821f5add28","recommender":"早早的时候《人月神话》里就指出了"},{"heading":"[[译] 怎样（以及为什么要）保持你的 Git 提交记录的整洁](https://juejin.im/post/5b29060ee51d4558cd2adac0)","url":null},{"heading":"Create ML Tutorial Getting Started","url":"https://www.raywenderlich.com/196233/create-ml-tutorial-getting-started"},{"heading":"iOS中的图片使用方式、内存对比和最佳实践","url":"https://juejin.im/post/5b2ddfa7e51d4553156be305"},{"heading":"Using generics and descriptors to standardise icons, images and placeholders on iOS","url":"https://medium.com/asos-techblog/using-generics-and-descriptors-to-standardise-icons-images-and-placeholders-on-ios-35dded0650be"},{"heading":"2018 年主流 RSS 服务选哪家？Feedly、Inoreader 和 NewsBlur 全面横评","url":"https://sspai.com/post/44420"},{"heading":"The Problem You Solve Is More Important Than The Code You Write","url":"https://medium.com/@fagnerbrack/the-problem-you-solve-is-more-important-than-the-code-you-write-d0e5493132c6"},{"heading":"How Apple can fix 3D Touch","url":"https://medium.com/@eliz_kilic/how-apple-can-fix-3d-touch-2f0ca5ea589e"},{"heading":"MessengerKit","url":"https://github.com/steve228uk/MessengerKit"},{"heading":"StyledTextKit","url":"https://github.com/GitHawkApp/StyledTextKit"},{"heading":"字节跳动","url":"https://job.toutiao.com/society"},{"heading":"深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目","url":"https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D","recommender":"如想了解更多深圳头条的信息，可以加小T微信"},{"heading":"杭州/广州/深圳 奇志科技招聘 iOS、前端","url":"https://www.lagou.com/gongsi/34872.html"},{"heading":"百度教育事业部招iOS开发","url":"https://www.baidu.com/s?wd=百度"}]},{"id":"r-023-2018-06-18","type":"report","title":"老司机 iOS 周报 #23 | 2018-06-18","issue":23,"date":"2018-06-18","year":2018,"path":"Reports/2018/#23-2018.06.18.md","url":"Reports/2018/%2323-2018.06.18.md","excerpt":"FB正在大规模重构React Native，预计今年发布：这毫无疑问是个好消息，和原生代码的协同一直是 React Native 的一个痛点，Facebook 愿意亲自解决这个问题，这对 RN 生态的超级利好。业内一些公司选择 Weex 而不选择 RN 的原因就是因为 Weex 和 Native 之间交互更加方便，这样可以最大限度的复用；Enumerating enum cases in Swift：本文介绍了 Swift 4.2 新引","sections":[{"heading":"FB正在大规模重构React Native，预计今年发布","url":"https://mp.weixin.qq.com/s/afJzC_Pya2S27tmmuSidzA"},{"heading":"Enumerating enum cases in Swift","url":"https://oleb.net/blog/2018/06/enumerating-enum-cases/"},{"heading":"iOS 流量监控分析","url":"http://zhoulingyu.com/2018/05/30/ios-network-traffic/"},{"heading":"SR-7380, Ambiguous KeyPath","url":"http://matt.diephouse.com/swift/0/"},{"heading":"WWDC 中提到的浏览器 Fingerprinting 有多可怕？","url":"https://juejin.im/post/5b17de31f265da6e397b70f4?from=timeline&isappinstalled=0"},{"heading":"iOS 12: Notable UIKit Additions","url":"https://medium.com/the-traveled-ios-developers-guide/ios-12-notable-uikit-additions-b50beb0e3729"},{"heading":"Training a Text Classifier with Create ML and the Natural Language Framework","url":"https://flight.school/articles/classifying-programming-languages-with-createml/"},{"heading":"MessageThrottle Performance Benchmark and Optimization","url":"http://yulingtianxia.com/blog/2018/05/31/MessageThrottle-Performance-Benchmark-and-Optimization/"},{"heading":"When your CA turns against you","url":"https://scotthelme.co.uk/the-power-to-revoke-lies-with-the-ca/"},{"heading":"WWDC 2018 见闻","url":"http://blog.cnbang.net/internet/3578/"},{"heading":"[[译]现代 js 框架存在的根本原因](https://juejin.im/post/5b111436e51d4506d06205fd)","url":null},{"heading":"Harnessing Code Generation to Increase Reliability & Productivity on iOS at Uber","url":"https://eng.uber.com/code-generation"},{"heading":"Modular iOS","url":"https://edit.theappbusiness.com/modular-ios-strangling-the-monolith-4a6843a28992"},{"heading":"细说 Swift 4.2 新特性：Dynamic Member Lookup","url":"https://www.jianshu.com/p/13e6aa1ad584"},{"heading":"【国内首发 + 中国价】Design+Code 绝佳 iOS 设计和开发教程一年订阅","url":"https://h5.youzan.com/v2/goods/36abe77d0mm0u"},{"heading":"Mac Bootstrap","url":"https://github.com/bestswifter/macbootstrap"},{"heading":"Sonar","url":"https://fbsonar.com/"},{"heading":"在线 AI 生成 LOGO","url":"https://app.brandmark.io/v2/"},{"heading":"Swift Unwrapped #62: Interview with Ted Kremenek","url":"https://spec.fm/podcasts/swift-unwrapped/154699"},{"heading":"字节跳动","url":"https://job.toutiao.com/society"},{"heading":"深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目","url":"https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D","recommender":"如想了解更多深圳头条的信息，可以加小T微信"},{"heading":"杭州/广州/深圳 奇志科技招聘 iOS、前端","url":"https://www.lagou.com/gongsi/34872.html"}]},{"id":"r-022-2018-06-04","type":"report","title":"老司机 iOS 周报 #22 | 2018-06-04","issue":22,"date":"2018-06-04","year":2018,"path":"Reports/2018/#22-2018.06.04.md","url":"Reports/2018/%2322-2018.06.04.md","excerpt":"Apple Silently Launched Creative Testing in App Store Search Ads：Apple 悄悄发布了针对 App Store 搜索广告的 Creative Testing 功能，移动开发者现在可以在 App Store 里测试不同的搜索广告。虽然这并不是很多人期待的 A/B 测试，但它为广告发布者提供了更多的权力，这篇文章详细解释了这个新功能的用法。；深入 Decodable —— 写","sections":[{"heading":"Apple Silently Launched Creative Testing in App Store Search Ads","url":"https://asostack.com/apple-secretly-launched-creative-testing-in-app-store-search-ads-761a9f7b8abb"},{"heading":"深入 Decodable —— 写一个超越原生的 JSON 解析器","url":"https://xiaozhuanlan.com/topic/8973560241"},{"heading":"Google Swift Style Guide","url":"https://google.github.io/swift/"},{"heading":"Core ML入门：构建一个简单的图像识别应用","url":"http://swift.gg/2018/05/28/coreml-introduction/"},{"heading":"如何实现 App Store App 的自动下载","url":"https://juejin.im/post/5b0a252d51882538b63af5c3"},{"heading":"黑苹果安装学院","url":"https://github.com/huangyz0918/Hackintosh-Installer-University/blob/master/README-CN.md"},{"heading":"这才是 WKWebview Cookie 管理的正确方式","url":"https://www.jianshu.com/p/163c03ed0b5e"},{"heading":"为什么我用 Texture 来搭建 App（并且你也应该）","url":"https://medium.com/flawless-app-stories/why-i-build-my-apps-using-texture-and-why-you-should-too-99587c73f278"},{"heading":"RunLoop 源码阅读","url":"https://juejin.im/post/5aaa15d36fb9a028d82b7d83"},{"heading":"iOS App 使用 GCD 导致的卡顿问题","url":"http://mrpeak.cn/blog/ios-gcd-bottleneck/"},{"heading":"高效的数据压缩编码方式 Protobuf","url":"https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/Protocol-buffers-encode.md"},{"heading":"iOS-factor","url":"https://ios-factor.com/"},{"heading":"Static linking vs dyld3","url":"https://allegro.tech/2018/05/Static-linking-vs-dyld3.html"},{"heading":"不必要的 HTTP 头信息","url":"https://www.fastly.com/blog/headers-we-dont-want"},{"heading":"Writing self-documenting Swift code","url":"https://www.swiftbysundell.com/posts/writing-self-documenting-swift-code"},{"heading":"Crunch","url":"https://github.com/chrissimpkins/Crunch"},{"heading":"KTVVideoProcess","url":"https://github.com/ChangbaDevs/KTVVideoProcess"},{"heading":"The unofficial WWDC app for macOS","url":"https://github.com/insidegui/WWDC"},{"heading":"WWDC 97","url":"http://bslabs.net/2018/05/28/wwdc-1997-videos/"}]},{"id":"r-021-2018-05-28","type":"report","title":"老司机 iOS 周报 #21 | 2018-05-28","issue":21,"date":"2018-05-28","year":2018,"path":"Reports/2018/#21-2018.05.28.md","url":"Reports/2018/%2321-2018.05.28.md","excerpt":"普通本科如何毕业入职一线互联网公司：我们老司机 iOS 专栏内最新出炉的一篇文章。作者毕业于一所普通的三本院校，从面试五分钟就被请出去，到现在就职于一线互联网公司，这期间有太多的思考、讨论、复盘和抉择。一些经验，希望给后来的同学带来一些帮助。；CocoaPods 进阶之利用 Subspec 实现代码“模块化”：老司机小专栏的文章，主要讲如何利用 Subspec 对 framework 内部代码进行模块化，让调用者做到「按需引入」。；分布","sections":[{"heading":"普通本科如何毕业入职一线互联网公司","url":"https://xiaozhuanlan.com/topic/3820914657"},{"heading":"CocoaPods 进阶之利用 Subspec 实现代码“模块化”","url":"https://xiaozhuanlan.com/topic/1085467293"},{"heading":"分布式系统的全面介绍","url":"https://hackernoon.com/a-thorough-introduction-to-distributed-systems-3b91562c9b3c"},{"heading":"如何自动化测试 React Native 项目","url":"http://tech.glowing.com/cn/react-native-automation-high-level-thoughts-and-e2e-testing/"},{"heading":"iOS 业务组件化框架 Axe 详解","url":"https://mp.weixin.qq.com/s/7IWr3YBB8Q7bGaA1a08Y8Q"},{"heading":"Using Dedicated Objects as Delegates & Datasources","url":"http://alisoftware.github.io/architecture/2018/05/20/dedicated-datasources/"},{"heading":"Network Extension Intro","url":"http://kean.github.io/post/network-extensions-into"},{"heading":"NSAttributedString in Swift using SwiftRichString 2","url":"http://danielemargutti.com/2018/05/20/nsattributedstring-in-swift-using-swiftrichstring-2/"},{"heading":"Build Incrementation Techniques for iOS Release Train","url":"http://shashikantjagtap.net/build-incrementation-techniques-for-ios-release-train"},{"heading":"Introducing ARKit by Tutorials","url":"https://www.raywenderlich.com/194376/introducing-arkit-by-tutorials"},{"heading":"UIKonf 2018 视频资源","url":"https://www.youtube.com/playlist?list=PLdr22uU_wISohI7PIhzq0gotGfKZl1lGo&utm_campaign=iOS%2BDev%2BWeekly&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B353","recommender":"[UIKonf](http"}]},{"id":"r-020-2018-05-21","type":"report","title":"老司机 iOS 周报 #20 | 2018-05-21","issue":20,"date":"2018-05-21","year":2018,"path":"Reports/2018/#20-2018.05.21.md","url":"Reports/2018/%2320-2018.05.21.md","excerpt":"再谈 iOS App Crash 防护：我们老司机 iOS 专栏内最新出炉的一篇文章。作者分析了几种可能的 Crash 防护方案，并结合自己实践网易 Baymax 防护方案中遇到的各种问题，给出了解决方法，也提出了自己对这套方案的一些思考。；MongoDB 官方提供对 Swift 原生支持：是一个基于分布式文件存储的开源数据库系统。现在官方在 C 驱动( )的基础上，用 Swift 进行封装，提供 Pure Swift 驱动。这或许表明","sections":[{"heading":"再谈 iOS App Crash 防护","url":"https://xiaozhuanlan.com/topic/6280793154"},{"heading":"MongoDB 官方提供对 Swift 原生支持","url":"https://github.com/mongodb/mongo-swift-driver"},{"heading":"关于 MVC 的一个常见的误用","url":"https://onevcat.com/2018/05/mvc-wrong-use/"},{"heading":"Flutter 原理简解","url":"https://mp.weixin.qq.com/s/CQQXD0TrlbaNWjoClIcDtw"},{"heading":"『如何使用现代的 App 工程与架构的技术来构建我们的 App』系列文章","url":"https://www.hackingwithswift.com/articles/94/how-to-refactor-your-app-to-add-unit-tests"},{"heading":"Tips for using Xcode Playground","url":"https://fluffy.es/xcode-playground-tips/"},{"heading":"Running Xcode Playgrounds on Travis CI","url":"https://flight.school/articles/running-xcode-playgrounds-on-travis-ci/"},{"heading":"TouchID 和 FaceID 实战使用的一些经验","url":"http://michael-brown.net/2018/touch-id-and-face-id-on-ios/"},{"heading":"手机京东技术团队对 iOS 自动化埋点探索","url":"https://mp.weixin.qq.com/s/u-HmmrSAgtER1N2pKxCm0A"},{"heading":"如何在实现类似于 rx 的命名空间","url":"https://medium.com/@thibault.wittemberg/versatile-namespace-in-swift-3e8bbd6b6250"},{"heading":"监控启动崩溃","url":"http://sindrilin.com/apm/2018/05/12/observe_crash_at_launch.html"},{"heading":"Parade","url":"https://github.com/HelloElephant/Parade"},{"heading":"ClassicKit","url":"https://github.com/Baddaboo/ClassicKit"},{"heading":"Scheduling Services","url":"https://152percent.com/blog/scheduling-services"},{"heading":"Catching smiles with Google’s ML Kit on iOS","url":"https://martinmitrevski.com/2018/05/11/catching-smiles-with-googles-ml-kit-on-ios/"}]},{"id":"r-019-2018-05-14","type":"report","title":"老司机 iOS 周报 #19 | 2018-05-14","issue":19,"date":"2018-05-14","year":2018,"path":"Reports/2018/#19-2018.05.14.md","url":"Reports/2018/%2319-2018.05.14.md","excerpt":"iOS 11 App 上传规则变化：2018 年 7 月份开始，所有上传 App Store 的应用都必须是基于 iOS 11 SDK 编译并适配 iPhone X 的分辨率。当然，Apple 也对上传流程做了进一步的优化。更多细节，请参照：https://developer.apple.com/ios/submi；What's New In Vapor 3：Vapor 3 对 Vapor 进行了彻底的重新设计，为未来几年的发展奠定了基","sections":[{"heading":"iOS 11 App 上传规则变化","url":"https://developer.apple.com/news/?id=05072018a&utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B351"},{"heading":"What's New In Vapor 3","url":"https://geeks.brokenhands.io/blog/posts/whats-new-in-vapor-3"},{"heading":"在 apple/swift 的 tensorflow 分支上开发 Swift for TensorFlow","url":"https://forums.swift.org/t/swift-for-tensorflow-to-be-developed-on-tensorflow-branch-on-apple-swift-on-github/12595"},{"heading":"Ulysses 13 将更好的支持代码展示","url":"https://ulyssesapp.com/blog/2018/05/preview-code-blocks/"},{"heading":"AVAudioEngine Tutorial for iOS: Getting Started","url":"https://www.raywenderlich.com/185090/avaudioengine-tutorial-for-ios-getting-started"},{"heading":"深入了解Flutter界面开发","url":"https://mp.weixin.qq.com/s/z2r2OmnY7r7dQrkO8ndkFQ"},{"heading":"DEALING WITH DATES","url":"http://martiancraft.com/blog/2018/05/dealing-with-dates/"},{"heading":"Codable 与 JSONSerialization 性能测试","url":"https://flight.school/articles/benchmarking-codable/"},{"heading":"从源码看微信小程序启动过程","url":"https://tech.youzan.com/weapp-booting/"},{"heading":"Memory Leaks in Swift","url":"https://medium.com/flawless-app-stories/memory-leaks-in-swift-bfd5f95f3a74"},{"heading":"Making illegal states unrepresentable","url":"https://oleb.net/blog/2018/03/making-illegal-states-unrepresentable/"},{"heading":"Capture iOS simulator video for App Preview","url":"http://www.avanderlee.com/workflow/capture-ios-simulator-video-app-preview/"},{"heading":"Best iOS hacks from Twitter: March & April Edition","url":"https://medium.com/flawless-app-stories/best-ios-hacks-from-twitter-march-april-edition-8b538f553c83"},{"heading":"RWDevCon 2018 Vault Video Bundle","url":"https://store.raywenderlich.com/products/rwdevcon-2018-vault-video-bundle"},{"heading":"丁香园丁香妈妈团队招中高级 iOS 工程师","url":"https://www.liepin.com/job/1913949377.shtml?imscid=R000000075&ckid=533d5430df9380a3&headckid=533d5430df9380a3&pageNo=0&pageIdx0&totalIdx=0&sup=1&d_pageSize=40&siTag=kW6OQA_mI-f6OR9izNLFIw%7EfA9rXquZc5IkJpXC-Ycixw&d_headId=9ed780f47f2296b01fd302251c1dcb7e&d_ckId=9ed780f47f2296b01fd302251c1dcb7e&d_sfrom=search_fp&d_curPage=0&d_posi=0"},{"heading":"百度文库 / 百度阅读，招聘 Android / iOS / Fe 高级 / 资深工程师","url":null}]},{"id":"r-018-2018-05-07","type":"report","title":"老司机 iOS 周报 #18 | 2018-05-07","issue":18,"date":"2018-05-07","year":2018,"path":"Reports/2018/#18-2018.05.07.md","url":"Reports/2018/%2318-2018.05.07.md","excerpt":"知识小集推荐的值得关注的 iOS 博客：「 小集 」团队最近利用空余时间，整理了一些我们认为质量高的博客以及博主相关的信息，包括博客、微博、Github，后期我们会加上公众号和小专栏信息。博客的主题不限于移动开发，我们会持续收集各个领域的高质量内容。；计算机系应届生求职指北：两点之间，直线最短，方向对了，你走的就是捷径。；50 iOS Interview Questions And Answers Part 5：50 道 iOS 面试题","sections":[{"heading":"知识小集推荐的值得关注的 iOS 博客","url":"https://github.com/awesome-tips/blogs"},{"heading":"计算机系应届生求职指北","url":"https://github.com/easychen/career-guide-for-cs-graduate"},{"heading":"50 iOS Interview Questions And Answers Part 5","url":"https://medium.com/@duruldalkanat/50-ios-interview-questions-and-answers-part-5-de6241374a8f"},{"heading":"小程序iOS客户端框架——控件事件逻辑框架与控件原生化","url":"http://www.wxapp-union.com/portal.php?mod=view&aid=3942"},{"heading":"Delegation in Swift","url":"https://www.swiftbysundell.com/posts/delegation-in-swift"},{"heading":"Exploring Apps Without Jailbreaking","url":"https://medium.com/@nathangitter/exploring-apps-without-jailbreaking-e932904f9863"},{"heading":"Instagram的iOS原生代码热加载技术","url":"https://mp.weixin.qq.com/s/K29u4BDmzKUIvIImyb22Cw"},{"heading":"iOS Springboard Security - Revisited","url":"https://medium.com/@dfplaughton/ios-springboard-security-revisited-f55d7f057e4a"},{"heading":"Facebook 工作体验小记（一）","url":"https://mp.weixin.qq.com/s/2rCfTutHddKDnpwVHxhSPw"},{"heading":"lobe.ai","url":"https://lobe.ai/tour"},{"heading":"TeaCode","url":"http://apptorium.com/teacode"}]},{"id":"r-017-2018-05-02","type":"report","title":"老司机 iOS 周报 #17 | 2018-05-02","issue":17,"date":"2018-05-02","year":2018,"path":"Reports/2018/#17-2018.05.02.md","url":"Reports/2018/%2317-2018.05.02.md","excerpt":"Swift for TensorFlow 正式发布：TensorFlow 社区在 TensorFlow Dev Summit 2018 上宣布将开源 Swift for TensorFlow 项目，现在终于正式发布了，这里是源码及示例 Models.；iOS 新闻类 App 内容页技术探索：文章针对新闻类 App 内容页的技术实现进行了探索和分析。并将成果封装成三个框架：HybridPageKit、ReusableNestingScro","sections":[{"heading":"Swift for TensorFlow 正式发布","url":"https://github.com/tensorflow/swift"},{"heading":"iOS 新闻类 App 内容页技术探索","url":"https://dequan1331.github.io"},{"heading":"Code Review Best Practices","url":"https://medium.com/@palantir/code-review-best-practices-19e02780015f"},{"heading":"Securing iOS Certificates using Modern Cryptography","url":"https://medium.com/xcblog/secure-ios-certificates-using-modern-cryptography-3441bf8661a4"},{"heading":"Design Patterns by Tutorials: MVVM","url":"https://www.raywenderlich.com/192471/design-patterns-by-tutorials-mvvm"},{"heading":"Blurring the Lines Between MVVM and VIPER","url":"https://medium.com/developermind/blurring-the-lines-between-mvvm-and-viper-dcb3dc9815ac"},{"heading":"Why you should not name your @IBActions didTapButton","url":"http://blog.cocoafrog.de/2018/04/12/How-to-name-IBActions.html"},{"heading":"SceneKit 与 ARKit 专题","url":"https://juejin.im/post/5a322530f265da43062ac948"},{"heading":"Care and Feeding of Xcode Configurations","url":"http://americanexpress.io/care-and-feeding-of-xcode-configurations"},{"heading":"Custom Keyboard Extensions: Getting Started","url":"https://www.raywenderlich.com/180180/keyboard-extensions"},{"heading":"A Better MVC","url":"https://davedelong.com/blog/2017/11/06/a-better-mvc-part-1-the-problems/"},{"heading":"iOS App 的加固保护原理","url":"http://www.cnblogs.com/163yun/p/8867975.html"},{"heading":"Playground driven development in Swift","url":"https://medium.com/flawless-app-stories/playground-driven-development-in-swift-cf167489fe7b"},{"heading":"Codable vs. ObjectMapper","url":"https://medium.com/bbc-design-engineering/codable-vs-objectmapper-af5fe8e8efd5"},{"heading":"Inspect your app’s Documents directory in the Files.app","url":"https://twitter.com/olebegemann/status/987346188591681536"},{"heading":"网易HubbleData无埋点SDK在iOS端的设计与实现","url":"https://neyoufan.github.io/2017/04/19/ios/%E7%BD%91%E6%98%93HubbleData%E6%97%A0%E5%9F%8B%E7%82%B9SDK%E5%9C%A8iOS%E7%AB%AF%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/"},{"heading":"Reimplementation of Implicitly Unwrapped Optionals","url":"https://swift.org/blog/iuo/"},{"heading":"Swift, Plist and Two Smoking Scripts","url":"https://medium.com/rosberryapps/swift-plist-and-two-smoking-scripts-94bb54cbeded"},{"heading":"What's New in Swift 终极版","url":"https://www.whatsnewinswift.com"},{"heading":"App Builders 2018","url":"https://www.youtube.com/playlist?list=PLLcE3DL3f5BzR14FYTO9w0l5REVVSDNB4"}]},{"id":"r-016-2018-04-21","type":"report","title":"老司机 iOS 周报 #16 | 2018-04-23","issue":16,"date":"2018-04-21","year":2018,"path":"Reports/2018/#16-2018.04.21.md","url":"Reports/2018/%2316-2018.04.21.md","excerpt":"钟颖的开发笔记：钟颖前后供职于腾讯、阿里巴巴、微软，同时也是业内知名的独立开发者，个人开发过 Pin，JSBox 等备受好评的高质量应用。『钟颖的开发笔记』记录了他的一些开发经验与技能，内容主要有：；非 Touch Bar 版 13 寸 MacBook Pro 存电池隐患，苹果将免费修理：Apple 已经确定，少数 13 英寸 MacBook Pro（无触控栏）电脑的某个组件可能会出现故障，导致内建电池发生膨胀。这并不是安全问题，App","sections":[{"heading":"钟颖的开发笔记","url":"https://xiaozhuanlan.com/devnotes"},{"heading":"非 Touch Bar 版 13 寸 MacBook Pro 存电池隐患，苹果将免费修理","url":"https://www.apple.com/cn/support/13inch-macbookpro-battery-replacement/"},{"heading":"深入理解 iOS Rendering Process","url":"https://juejin.im/post/5ad3f1cc6fb9a028d9379c5f"},{"heading":"JavaScriptCore 与 Promise 那点事","url":"https://xiaozhuanlan.com/topic/9631852407"},{"heading":"Conditional conformances in Swift","url":"https://medium.com/@johnsundell/conditional-conformances-in-swift-f6601d40aabb"},{"heading":"Behavior-Driven Testing Tutorial for iOS with Quick & Nimble","url":"https://www.raywenderlich.com/182118/behavior-driven-testing-tutorial-ios-quick-nimble"},{"heading":"Video Depth Maps Tutorial for iOS: Getting Started","url":"https://www.raywenderlich.com/185885/video-depth-maps-tutorial-for-ios-getting-started"},{"heading":"实现一个自定义检查规范的 Clang 插件","url":"https://www.jianshu.com/p/c27b77f70616?utm_campaign=hugo&utm_medium=reader_share&utm_content=note"},{"heading":"What's New in Swift 4.2","url":"https://www.hackingwithswift.com/articles/77/whats-new-in-swift-4-2"},{"heading":"metalkit.org 全站翻译","url":"https://juejin.im/post/5a31fcdc51882531b15b8294"},{"heading":"深入剖析 JavaScriptCore","url":"https://ming1016.github.io/2018/04/21/deeply-analyse-javascriptcore/"},{"heading":"iOS 应用逆向工程资料汇总","url":"https://everettjf.github.io/2018/01/15/ios-app-reverse-engineering-stuff/"},{"heading":"Making your iOS application easy to read with these simple steps.","url":"https://medium.com/ios-os-x-development/making-your-ios-application-easy-to-read-with-these-simple-steps-b63067900b72"},{"heading":"How to Make a Game Like Candy Crush with SpriteKit and Swift: Part 1","url":"https://www.raywenderlich.com/180638/how-to-make-a-game-like-candy-crush-with-spritekit-and-swift-part-1"},{"heading":"RTL 适配历程","url":"https://www.jianshu.com/p/3383ca5f6de0"},{"heading":"谷歌开源 iOS 辅助功能自动测试框架 GTXiLib","url":"https://opensource.googleblog.com/2018/03/open-sourcing-gtxilib-accessibility.html","recommender":"[GTXiLib](https"},{"heading":"JPVideoPlayer 3.0 使用介绍","url":"https://juejin.im/post/5ad168c2518825555e5e44dd"},{"heading":"Swift Tagged","url":"https://github.com/pointfreeco/swift-tagged"}]},{"id":"r-015-2018-04-16","type":"report","title":"老司机 iOS 周报 #15 | 2018-04-16","issue":15,"date":"2018-04-16","year":2018,"path":"Reports/2018/#15-2018.04.16.md","url":"Reports/2018/%2315-2018.04.16.md","excerpt":"周报读者专属 Reveal 50 元优惠券：我们和 Price Tag 的合作，给读者送一个小福利，点击上面链接可以领取 Reveal 14 优惠券。领取后到这里可以使用：购买链接 。；onevcat 的小专栏：开发笔记簿：记录了喵神日常开发时遇到的问题和解决方案，同时也会收藏一些学习时记录的笔记，随想等。定价 ¥99，因为至少会有一两年的长期更新，所以这个价格是非常良心的。而且目前已经更新了 9 篇，涉及的范围也比较广，值得订阅！；深","sections":[{"heading":"周报读者专属 Reveal 50 元优惠券","url":"https://h5.weidian.com/m/coupon/get.html?coupon_id=5618711&shop_id=457915687"},{"heading":"onevcat 的小专栏：开发笔记簿","url":"https://xiaozhuanlan.com/onevcat"},{"heading":"深入浅出 GCD 系列文章","url":"http://cocoa-chen.github.io/2018/03/01/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8B%E5%9F%BA%E7%A1%80%E7%AF%87/"},{"heading":"深入理解 Swift 派发机制","url":"https://kemchenj.github.io/2016-12-25-1/"},{"heading":"iOS App 连续闪退时如何上报 crash 日志","url":"http://mrpeak.cn/blog/ios-instacrash-reporting/"},{"heading":"How To Keep Learning After 50 and Other Ways to Hack Your Brain at any Age","url":"https://www.raywenderlich.com/189082/how-to-keep-learning-after-50-and-other-ways-to-hack-your-brain-at-any-age"},{"heading":"Behind-the scenes improvements in Swift 4.1","url":"https://medium.com/@slavapestov/behind-the-scenes-improvements-in-swift-4-1-269dd56e30c2"},{"heading":"工程师如何在工作中提升自己？","url":"https://mp.weixin.qq.com/s/DwDzOcQZIK9vd6FQTyuIWQ"},{"heading":"如何快速成长为技术大牛","url":"https://mp.weixin.qq.com/s/t1P0mw9Hf4y27EiZB2biXw"},{"heading":"Swift Tip: Local Computed Variables","url":"https://www.objc.io/blog/2018/04/10/local-vars/"},{"heading":"读 SnapKit 和 Masonry 自动布局框架源码","url":"https://ming1016.github.io/2018/04/07/read-snapkit-and-masonry-source-code/"},{"heading":"11 Tips for Working on the iPad","url":"https://www.macstories.net/ios/11-tips-for-working-on-the-ipad/"},{"heading":"iOS 中制作原型动画的一些方式","url":"https://medium.com/s23nyc-tech/prototyping-animations-in-swift-97a9cfb1f41b"},{"heading":"fastlane 发布 CI aplha 版本","url":"https://github.com/fastlane/ci/releases/tag/1.0.0.alpha.1"},{"heading":"IBM Watson Services for Core ML","url":"https://developer.apple.com/ibm/"},{"heading":"苹果产品购买时机建议","url":"https://buyersguide.macrumors.com/"},{"heading":"奇志信息科技: 杭州/广州 iOS 工程师","url":"https://www.lagou.com/jobs/3689131.html?source=pl&i=pl-4","recommender":"我（[@没故事的卓同学](https"},{"heading":"上海享物说网络科技有限公司：上海 iOS 工程师","url":"https://www.lagou.com/jobs/4260410.html?source=pl&i=pl-0"}]},{"id":"r-014-2018-04-09","type":"report","title":"老司机 iOS 周报 #14 | 2018-04-09","issue":14,"date":"2018-04-09","year":2018,"path":"Reports/2018/#14-2018.04.09.md","url":"Reports/2018/%2314-2018.04.09.md","excerpt":"允许用户管理存储在 iCloud 中的数据：为帮助开发者遵守欧盟即将推出的《通用数据保护条例》(GDPR)，苹果提供相应原生 API 和 Web API，支持开发者帮助用户对 CloudKit 里的数据进行导出、限制或者删除。且当用户停用其 Apple ID 或者限制其数据时，开发者需要处理 CloudKit API 返回；CocoaPods 1.5 支持 Swift 静态库了：CocoaPods 这周更新到了 1.5，主要是加强了对于","sections":[{"heading":"允许用户管理存储在 iCloud 中的数据","url":"https://developer.apple.com/support/allowing-users-to-manage-data/"},{"heading":"CocoaPods 1.5 支持 Swift 静态库了","url":"http://blog.cocoapods.org/CocoaPods-1.5.0/"},{"heading":"Swift Tip: Capture Lists","url":"https://www.objc.io/blog/2018/04/03/caputure-lists/"},{"heading":"追踪 Objective-C 方法中的 Block 参数对象","url":"http://yulingtianxia.com/blog/2018/03/31/Track-Block-Arguments-of-Objective-C-Method/"},{"heading":"iOS 中的 Copying","url":"https://joeshang.github.io/2018/04/04/ios-copying/"},{"heading":"Calling Go code from Swift on iOS and vice versa with Gomobile","url":"https://medium.com/@matryer/tutorial-calling-go-code-from-swift-on-ios-and-vice-versa-with-gomobile-7925620c17a4"},{"heading":"在 iOS 中如何正确的实现行间距与行高","url":"https://juejin.im/post/5abc54edf265da23826e0dc9"},{"heading":"Swift 项目中涉及到 JSONDecoder，网络请求，泛型协议式编程的一些记录和想法","url":"https://ming1016.github.io/2018/04/02/record-and-think-about-swift-project-jsondecoder-networking-and-pop/"},{"heading":"iOS 程序员效率提升利器之 AppleScript","url":"http://mrpeak.cn/blog/ios-applescript/","recommender":"[AppleScript](https"},{"heading":"SnapKit 最佳实践","url":"https://juejin.im/post/5ac6330d518825558a06da47","recommender":"[四娘](https"},{"heading":"Common iOS development mistakes","url":"https://blog.netcetera.com/common-ios-development-mistakes-28719ba1a6fc"},{"heading":"越狱 iOS 全局开启 WebView 远程调试","url":"https://blog.chichou.me/%E8%B6%8A%E7%8B%B1-ios-%E5%85%A8%E5%B1%80%E5%BC%80%E5%90%AF-webview-%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95-4b27cb361cd0"},{"heading":"MerchantKit","url":"https://github.com/benjaminmayo/merchantkit"},{"heading":"VisualProgrammingLanguage","url":"https://github.com/NathanFlurry/VisualProgrammingLanguage"}]},{"id":"r-013-2018-03-31","type":"report","title":"老司机 iOS 周报 #13 | 2018-04-02","issue":13,"date":"2018-03-31","year":2018,"path":"Reports/2018/#13-2018.03.31.md","url":"Reports/2018/%2313-2018.03.31.md","excerpt":"苹果新品发布会：苹果进行了一场没有直播的发布会。发布了支持 Apple Pencil 的 9.7 寸 iPad，芯片升级为 A10 Fusion，较上代在 CPU 性能提升了 40%，在图形运算提升了 50%。32GB 价格由 2688 降至 2588。；iOS 11.3 正式发布：iOS 11.3 正式发布，针对之前的「降频门」事件，11.3 可在 “设置”->“电池” 中查看电池效能并关闭「电源管理」功能。 One more thi","sections":[{"heading":"苹果新品发布会","url":"https://sspai.com/post/43858"},{"heading":"iOS 11.3 正式发布","url":"https://www.apple.com/cn/newsroom/2018/03/ios-11-3-is-available-today/"},{"heading":"iOS 11.3 支持 PWA","url":"https://mp.weixin.qq.com/s/BiAYM-Ia5lYf0qv3DHmPjg"},{"heading":"区块链游戏，其实也没什么神秘的","url":"http://www.cocoachina.com/blockchain/20180327/22792.html"},{"heading":"Swift for TensorFlow","url":"https://www.tensorflow.org/community/swift"},{"heading":"Integrating ClassKit into Your App","url":"https://developer.apple.com/classkit/"},{"heading":"Swift 4.1 新特性概览","url":"https://mp.weixin.qq.com/s/2PNE2yPIiyn4y-cqHZgWiQ"},{"heading":"Everything about public and private Swift attributes","url":"https://theswiftdev.com/2018/03/29/everything-about-public-and-private-swift-attributes/"},{"heading":"Best iOS hacks from Twitter: January & February Edition","url":"http://pxlme.me/CoLJrysj"},{"heading":"Pragmatic iOS app architecture","url":"https://medium.com/@martinmitrevski/pragmatic-ios-app-architecture-f7d6334fd8e4"},{"heading":"What 2018 has in store for Swift","url":"https://www.hackingwithswift.com/articles/62/what-2018-has-in-store-for-swift"},{"heading":"NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨","url":"https://yq.aliyun.com/articles/543412/?spm=a2c41.11181499.0.0"},{"heading":"UIView Auto Layout life cycle","url":"http://www.vadimbulavin.com/view-auto-layout-life-cycle/"},{"heading":"Elegantly chaining UIViewPropertyAnimators","url":"https://twittemb.github.io/swift/animations/reactive%20programming/rxswift/2018/03/24/elegantly-chaining-uiviewpropertyanimators/"},{"heading":"冰霜的 ML 入门笔记","url":"https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/contents.md"},{"heading":"Tips to become a better Swift (iOS) Developer","url":"https://www.developerinsider.in/tips-to-become-a-better-swift-ios-developer/"},{"heading":"compactMap 了解一下？","url":"https://kemchenj.github.io/2018-04-01/"},{"heading":"教你如何反编译微信小程序","url":"https://mp.weixin.qq.com/s/secw4vAzCUi-qmCJ3kuxYA"},{"heading":"硅谷生活半年记","url":"https://mp.weixin.qq.com/s/ydHLBmt0FpNwgvCKTCnnVw"},{"heading":"SwiftSoup","url":"https://github.com/scinfu/SwiftSoup"},{"heading":"函数响应式编程框架：ReactiveCocoa 和 RXSwift 速查表","url":"https://github.com/ValiantCat/FRPCheatSheeta"}]},{"id":"r-012-2018-03-25","type":"report","title":"老司机 iOS 周报 #12 | 2018-03-26","issue":12,"date":"2018-03-25","year":2018,"path":"Reports/2018/#12-2018.03.25.md","url":"Reports/2018/%2312-2018.03.25.md","excerpt":"快应用标准今日发布，开发者需要知道些什么？：9 大安卓厂商联手推出快应用标准。前有小程序，后来快应用，大前端的大潮之下，越来越多的新技术在冲击着移动端开发。\"轻型\"应用其实也代表着一种用户的诉求，限制大小，即装即用，简单有效。对这么多层出不穷的大前端技术，作为客户端原生开发的的朋友们有什么自己的想法么？来听听 Bang 对；揭秘苹果 HomePod 广告里会动的公寓：不久前，苹果专门为 HomePod 拍摄了一支视频广告《Welcome","sections":[{"heading":"快应用标准今日发布，开发者需要知道些什么？","url":"https://mp.weixin.qq.com/s/e5UlzM82z2tM-ow6iRfJTQ"},{"heading":"揭秘苹果 HomePod 广告里会动的公寓","url":"http://www.ifanr.com/1000374"},{"heading":"iOS 中的 JS","url":"https://zhuanlan.zhihu.com/p/34646281"},{"heading":"从 babel 讲到 AST","url":"https://juejin.im/post/5ab35c3cf265da23771951a2"},{"heading":"使用 ASDK 性能调优","url":"https://draveness.me/asdk-rendering"},{"heading":"Bestswifter 的 2017 年度总结","url":"https://github.com/bestswifter/blog/blob/master/articles/2017-conclusion.md"},{"heading":"Five Options for iOS Continuous Delivery without Fastlane","url":"https://medium.com/xcblog/five-options-for-ios-continuous-delivery-without-fastlane-2a32e05ddf3d"},{"heading":"iOS layoutMargins 的坑：一个活久见的 bug","url":"https://juejin.im/post/5aae37576fb9a028bf051a2c"},{"heading":"A helper for working with temporary files in Swift","url":"https://oleb.net/blog/2018/03/temp-file-helper/"},{"heading":"iOS 下如何一键调试 Push","url":"http://mrpeak.cn/blog/ios-debug-apn/"},{"heading":"Tiercel","url":"https://github.com/Danie1s/Tiercel"},{"heading":"App Store Product Page","url":"https://developer.apple.com/videos/play/insights/app-store-product-page/"}]},{"id":"r-011-2018-03-19","type":"report","title":"老司机 iOS 周报 #11 | 2018-03-19","issue":11,"date":"2018-03-19","year":2018,"path":"Reports/2018/#11.md","url":"Reports/2018/%2311.md","excerpt":"WWDC 2018 时间确定：Apple 宣布 WWDC 2018 将于 6 月 4 日至 8 日在圣何塞举行，现已开放注册(注册截至时间是 3 月 22 日)，届时将以抽签方式确定资格。；iOS Weekly 的作者整理了一份他的 iOS 博客订阅：最近 iOS Weekly 的作者整理了一份他的 iOS 博客订阅，小编全部导入了之后，在列表里看到了最新很活跃的 Swift by Sundell，老牌大佬 Ole Begemann..","sections":[{"heading":"WWDC 2018 时间确定","url":"https://developer.apple.com/wwdc/"},{"heading":"iOS Weekly 的作者整理了一份他的 iOS 博客订阅","url":"https://iosdevdirectory.com/"},{"heading":"Solving a Mysterious Heap Corruption Crash","url":"https://topologyeyewear.github.io/engineering-blog/2018/03/07/heap_corruption/"},{"heading":"AppDelegate 瘦身指南","url":"http://kyson.cn/index.php/archives/105/"},{"heading":"Getting Started with Flutter","url":"https://www.raywenderlich.com/188257/getting-started-with-flutter"},{"heading":"iOS 微信特殊字符保护方案","url":"https://mp.weixin.qq.com/s/3xmpJqn361HGtUloOVsIZg"},{"heading":"机器学习与移动端会碰出怎样的火花？","url":"https://www.zhihu.com/question/65957269"},{"heading":"给 NSBundle 添加一个 current 方法","url":"http://bou.io/NSBundle.current.html","recommender":"[NSBundle](https"},{"heading":"不同角度看问题 - 从 Codable 到 Swift 元编程","url":"https://onevcat.com/2018/03/swift-meta/"},{"heading":"快速用上 Swift 静态库","url":"https://blog.dianqk.org/2018/03/08/use-static-framework/"},{"heading":"Using Swift Server API 0.1.0","url":"http://www.alwaysrightinstitute.com/microexpress-nio/"},{"heading":"Best iOS Development Tips and Tricks","url":"https://medium.com/developerinsider/best-ios-development-tips-and-tricks-6c42c1d208c1"},{"heading":"苹果 ResearchKit 中的图表控件","url":"http://researchkit.org/docs/docs/ChartsAndGraphs/ChartsAndGraphs.html"},{"heading":"Great UI Animations tips","url":"https://uxdesign.cc/good-to-great-ui-animation-tips-7850805c12e5"},{"heading":"Designing a better notification experience for iOS","url":"https://uxdesign.cc/designing-a-better-notification-experience-for-ios-def1df8e89e8"},{"heading":"Sophie","url":"https://marcosantadev.com/portfolio/macos-app-sophie/"},{"heading":"Open-Source iOS Apps","url":"https://github.com/dkhamsing/open-source-ios-apps"},{"heading":"ZIKCellularAuthorization","url":"https://github.com/Zuikyo/ZIKCellularAuthorization"}]},{"id":"r-010-2018-03-12","type":"report","title":"老司机 iOS 周报 #10 | 2018-03-12","issue":10,"date":"2018-03-12","year":2018,"path":"Reports/2018/#10.md","url":"Reports/2018/%2310.md","excerpt":"3 月 7 日这一夜，黑客耍了所有人：币圈本周最佳！虽然只是币安 Binance 交易所被黑，并不是 BTC 本身的缺陷，但是比较讽刺的是：币圈和链圈都在一边吹捧去中心化，一边又通过中心化的交易所炒币。真可以说是嘴上笑嘻嘻，心里 MMP...；Quick Guide To Property Animators：现在至少有三种方式来实现视图动画。从最早的 begin/commit，到 iOS 4 的 block API，以及从 iOS 1","sections":[{"heading":"3 月 7 日这一夜，黑客耍了所有人","url":"https://mp.weixin.qq.com/s/z39hBMif1bQJeb4Ar_zRAw"},{"heading":"Quick Guide To Property Animators","url":"https://useyourloaf.com/blog/quick-guide-to-property-animators/"},{"heading":"Designing iOS architecture: Motivation","url":"https://medium.com/ios-os-x-development/designing-ios-architecture-motivation-e984e4ebba4a"},{"heading":"稀土掘金翻译计划 TensorFlow Docs 中文版","url":"https://github.com/xitu/tensorflow-docs/tree/v1.4-zh-hans"},{"heading":"iOS 性能优化的探索","url":"https://www.jianshu.com/p/b8346c1a4145"},{"heading":"技术面试需要掌握的基础知识整理","url":"https://github.com/CyC2018/Interview-Notebook"},{"heading":"The power of sets in Swift","url":"https://www.swiftbysundell.com/posts/the-power-of-sets-in-swift"},{"heading":"Repeat - Modern alternative to NSTimer in Swift","url":"https://github.com/malcommac/Repeat"},{"heading":"Resumable Assert","url":"https://github.com/google/resumable-assert?utm_campaign=Revue%20newsletter&utm_medium=Newsletter&utm_source=AppCoda%20Weekly"},{"heading":"Continuous Delivery for Mobile with Fastlane","url":"https://doronkatz.com/fastlane"}]},{"id":"r-009-2018-03-05","type":"report","title":"老司机 iOS 周报 #9 | 2018-03-05","issue":9,"date":"2018-03-05","year":2018,"path":"Reports/2018/#9.md","url":"Reports/2018/%239.md","excerpt":"[[译]奔跑吧！RunLoop！](https://juejin.im/post/5a951cb26fb9a0633229d4ec)：揭示了 RunLoop 的本质和 RunLoop 的执行过程。翻译有一些瑕疵，喜欢阅读英文的朋友可以直接看原文。；[[译] 揭秘 iOS 布局](https://juejin.im/post/5a951c655188257a804abf94)：详细全面介绍了界面布局的相关函数的执行顺序和作用。；[[译]为","sections":[{"heading":"[[译]奔跑吧！RunLoop！](https://juejin.im/post/5a951cb26fb9a0633229d4ec)","url":null},{"heading":"[[译] 揭秘 iOS 布局](https://juejin.im/post/5a951c655188257a804abf94)","url":null},{"heading":"[[译]为什么你的 APP 在 Sketch 上看起来更好: 探索 Sketch 和 iOS 的渲染差异](https://juejin.im/post/5a9572575188257a61326630)","url":null},{"heading":"Hook Objective-C Block with Libffi","url":"http://yulingtianxia.com/blog/2018/02/28/Hook-Objective-C-Block-with-Libffi/"},{"heading":"More Interface Builder Tips And Tricks","url":"https://useyourloaf.com/blog/more-interface-builder-tips-and-tricks/?utm_campaign=iOS%2BDev%2BWeekly&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B340"},{"heading":"Ruby 对于 iOS 开发发展的影响","url":"https://medium.com/xcblog/a-history-of-ruby-inside-ios-development-427b5a09f91e"},{"heading":"小程序支持打开移动应用到底是怎么回事?","url":"http://supermokey.com/2018/01/27/miniprogram-open-app/"},{"heading":"iOS 编译器","url":"https://objccn.io/issue-6-2/"},{"heading":"Synchronous Unit Tests","url":"https://swifting.io/blog/2018/03/03/50-synchronous-unit-tests/"},{"heading":"XCTKVOExpectation for native Swift key paths","url":"https://oleb.net/blog/2018/02/xctkvoexpectation-swift-keypaths/"},{"heading":"iOS 微信内存监控","url":"https://mp.weixin.qq.com/s/r0Q7um7P1p2gIb0aHldyNw"},{"heading":"awesome-blockchain","url":"https://github.com/chaozh/awesome-blockchain"},{"heading":"Sketch 49 更新：迈向交互设计领域的第一步","url":"https://sspai.com/post/43466"},{"heading":"An iOS Runtime Headers Search Tool","url":"http://developer.limneos.net/index.php"},{"heading":"腾讯开源了一个高性能图片框架","url":"https://github.com/Tencent/LKImageKit"},{"heading":"FlyoverKit","url":"https://github.com/SvenTiigi/FlyoverKit"},{"heading":"FluxCapacitor -- This is what makes the Flux design pattern possible","url":"https://github.com/marty-suzuki/FluxCapacitor","recommender":"[Flux](https"},{"heading":"Swift-Kuery-ORM","url":"https://github.com/IBM-Swift/Swift-Kuery-ORM"},{"heading":"XHLaunchAd","url":"https://github.com/CoderZhuXH/XHLaunchAd"},{"heading":"MessageViewController","url":"https://github.com/GitHawkApp/MessageViewController"},{"heading":"Swift-NIO","url":"https://github.com/apple/swift-nio"},{"heading":"iOS 组件化 / 构建优化 / 持续化集成","url":null}]},{"id":"r-008-2018-02-26","type":"report","title":"老司机 iOS 周报 #8 | 2018-02-26","issue":8,"date":"2018-02-26","year":2018,"path":"Reports/2018/#8.md","url":"Reports/2018/%238.md","excerpt":"App Store 描述截图从 5 张增加到 10 张：苹果再次对 App Store 更新了上架规则，新的规则宣布，开发者对于其开发的 App，在截图介绍部分可以添加 10 张屏幕截图，而之前是 5 张。；四月起，所有提交审核的 APP 都要基于 iOS 11 的 SDK 开发：苹果发出最新通知，从 2018 年 4 月开始，所有提交审核的 APP 都要基于 iOS 11 的 SDK 开发，且支持 iPhoneX 的 Super Re","sections":[{"heading":"App Store 描述截图从 5 张增加到 10 张","url":"http://app.techweb.com.cn/ios/2018-02-23/2639654.shtml"},{"heading":"四月起，所有提交审核的 APP 都要基于 iOS 11 的 SDK 开发","url":"https://developer.apple.com/news/?id=02152018a"},{"heading":"探索 iOS 内存分配","url":"https://juejin.im/post/5a5e13c45188257327399e19"},{"heading":"移动场景下通信协议 FlatBuffers、ProtocolBuffers、MessagePack 选优","url":"https://www.jianshu.com/p/987c4d16c48b"},{"heading":"Just Controllers","url":"http://khanlou.com/2018/02/just-controllers"},{"heading":"UIVisualEffectView Tutorial: Getting Started","url":"https://www.raywenderlich.com/178486/uivisualeffectview-tutorial-getting-started"},{"heading":"Unit testing asynchronous Swift code","url":"https://www.swiftbysundell.com/posts/unit-testing-asynchronous-swift-code","recommender":"介绍了单元测试中处理异步代码的几个小技巧"},{"heading":"iOS Developer Roadmap","url":"https://medium.com/ios-os-x-development/ios-developer-roadmap-c9a24f413457"},{"heading":"iOS IP 直连原理剖析","url":"https://juejin.im/post/5a81bbd66fb9a0634c266fe1"},{"heading":"iOS Code Signing Tutorial Series","url":"https://medium.com/xcblog/ios-code-signing-tutorial-series-814b22eba507"},{"heading":"我是怎么慢慢变懒的(2) : Jenkins 全自动化","url":"http://answerhuang.duapp.com/index.php/2018/02/15/jenkins-2/"},{"heading":"Snipaste for Mac 公测版推出","url":"https://zh.snipaste.com/index.html","recommender":"具体介绍可以看少数派的文章"},{"heading":"ZHStatusVolume","url":"https://github.com/lacklock/ZHStatusVolume"},{"heading":"ReactiveLists","url":"https://github.com/plangrid/ReactiveLists"},{"heading":"Uber 的 App 开发架构 RIBs","url":"https://github.com/uber/RIBs"},{"heading":"SwifterSwift","url":"https://github.com/SwifterSwift/SwifterSwift"},{"heading":"Swift’s Reflective Underpinnings","url":"https://www.skilled.io/u/swiftsummit/swift-s-reflective-underpinnings-joe-groff"}]},{"id":"r-007-2018-02-12","type":"report","title":"老司机 iOS 周报 #7 | 2018-02-12","issue":7,"date":"2018-02-12","year":2018,"path":"Reports/2018/#7.md","url":"Reports/2018/%237.md","excerpt":"Swift 4.1 新增 `-Osize` 优化模式降低代码尺寸：Swift 4.1 将随 iOS 11.3、Xcode 9.3 一起发布。 新增 模式，降低编译后代码尺寸。按官方描述，启用 后代码尺寸将降低 5%-30%，而性能影响可以忽略不计(小于 5%)。；iOS 关键组件 `iBoot` 源代码泄露：有匿名开发者在 GitHub 上传了 iOS 核心组件 的源代码， 是 iOS 关键的源代码之一，它确保了操作系统的可信任启动，换","sections":[{"heading":"Swift 4.1 新增 `-Osize` 优化模式降低代码尺寸","url":"https://swift.org/blog/osize/"},{"heading":"iOS 关键组件 `iBoot` 源代码泄露","url":"https://mp.weixin.qq.com/s/QsQ49LkK_suB30O2AQWh9Q"},{"heading":"苹果公司与内蒙古签订协议，将在中国国内建设第二个数据中心","url":"https://readhub.me/topic/1XVjDPeuSXk"},{"heading":"iOS KVO crash 自修复技术实现与原理解析","url":"https://zhuanlan.zhihu.com/p/33662572"},{"heading":"[[译] Swift 算法学院 - 查找数组中第 K 大值](https://juejin.im/post/5a732b4b5188257a5d2b0161)","url":null},{"heading":"数据结构 & 算法 in Swift （二）：算法概述和排序算法","url":"https://juejin.im/post/5a7b4101f265da4e7071b097"},{"heading":"iOS 架构之 View 层的架构方案","url":"https://mp.weixin.qq.com/s/t_IBkCClPBZFBPmtZT0WsQ"},{"heading":"Crash 符号化","url":"http://saitjr.com/tags/crash/"},{"heading":"Swift 中关于操作符的那些事儿","url":"https://juejin.im/post/5a79552c5188257a7c6c3296"},{"heading":"WebAssembly 能干什么？8 个 WebAssembly 应用案例","url":"http://www.techug.com/post/webassembly-application-example.html"},{"heading":"[[译]在 Git 中保护 iOS 项目的敏感信息](https://juejin.im/post/5a7ae875f265da4e983efac7)","url":null},{"heading":"Swift 4.1 improves Codable with keyDecodingStrategy","url":"https://www.hackingwithswift.com/articles/52/swift-4-1-improves-codable-with-keydecodingstrategy"},{"heading":"1. Basics","url":"https://medium.com/flawless-app-stories/basics-of-parallel-programming-with-swift-93fee8425287"},{"heading":"漫画：Git 二分 Debug，火速定位出错代码！","url":"https://mp.weixin.qq.com/s/YhDsAHUuyKuRg-AfqvqUBw"},{"heading":"PodsUpdater--A macOS app which helps you manage dependency releases in your Podfile","url":"https://github.com/kizitonwose/PodsUpdater"},{"heading":"CoreML 模型仓库","url":"https://coreml.store/"},{"heading":"Carbon","url":"https://dawnlabs.io/carbon"},{"heading":"CTF Wiki","url":"https://ctf-wiki.github.io/ctf-wiki/"}]},{"id":"r-006-2018-02-05","type":"report","title":"老司机 iOS 周报 #6 | 2018-02-05","issue":6,"date":"2018-02-05","year":2018,"path":"Reports/2018/#6.md","url":"Reports/2018/%236.md","excerpt":"从 iOS 11.3 开始 App Store 的评价终于可以排序了：从 iOS 11.3 开始，用户可以根据四个分类来给 App Store 评价排序，分别是“最有帮助”、“最高评价”、“最低评价”和“最新发表”。由于 iOS 11 之前的版本没法给 App Store 评价排序，所以这个改动会很受欢迎，特别是考虑到目前 App Store 会给；Apple Reports First Quarter Results：苹果公司发布 2","sections":[{"heading":"从 iOS 11.3 开始 App Store 的评价终于可以排序了","url":"https://juejin.im/post/5a6e79e9f265da3e33049550"},{"heading":"Apple Reports First Quarter Results","url":"https://www.apple.com/newsroom/2018/02/apple-reports-first-quarter-results/"},{"heading":"Apple 宣布因信号问题召回部分 iPhone 7","url":"https://www.apple.com/cn/support/iphone-7-no-service/"},{"heading":"Transporter 支持上传 App 预览信息了","url":"https://developer.apple.com/news/?id=01312018"},{"heading":"数据结构 & 算法 in Swift （一）：Swift基础和数据结构","url":"https://juejin.im/post/5a7096fa6fb9a01cb64f163b","recommender":"学习通用性知识，突破技能瓶颈，[@J_Knight_](https"},{"heading":"Learn iOS Programming from Top Swift Articles of 2017","url":"https://medium.mybridge.co/learn-ios-programming-from-top-swift-articles-of-2017-811de7273936"},{"heading":"Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好？","url":"http://blog.csdn.net/carson_ho/article/details/70568606"},{"heading":"Swift Tip: OpaquePointer vs. UnsafePointer","url":"https://www.objc.io/blog/2018/01/30/opaque-vs-unsafe-pointers/"},{"heading":"最近很火的 Safe Area 到底是什么","url":"https://juejin.im/post/5a7178116fb9a01c9d322d91?utm_source=gold_browser_extension"},{"heading":"Pragmatic iOS Development: In defence of MVC","url":"https://www.netguru.co/codestories/pragmatic-ios-development-in-defence-of-mvc"},{"heading":"Writing declarative code using Result Extensions","url":"https://medium.com/@tyronemichael/writing-declarative-code-using-result-extensions-1ec45474101f"},{"heading":"Model-View-Controller without the Controller","url":"https://www.cocoawithlove.com/blog/mvc-without-the-c.html"},{"heading":"Swift Algorithm Club: Hash Tables","url":"https://www.raywenderlich.com/180171/swift-algorithm-club-hash-tables?utm_source=raywenderlich.comWeekly"},{"heading":"Transformer：EASY iOS NSAttributedString!","url":"https://github.com/andresinaka/transformer"},{"heading":"SwiftAI - Generate Model class from JSON","url":"https://github.com/hhfa008/SwiftAI"},{"heading":"谷歌开源了一个 Promise 框架","url":"https://github.com/google/promises"},{"heading":"Swift Design Patterns","url":"https://www.hackingwithswift.com/store/swift-design-patterns"}]},{"id":"r-005-2018-01-29","type":"report","title":"老司机 iOS 周报 #5 | 2018-01-29","issue":5,"date":"2018-01-29","year":2018,"path":"Reports/2018/#5.md","url":"Reports/2018/%235.md","excerpt":"iOS 11.3 要来了，这是 iOS 11 目前为止最大的一次更新：苹果近期发布了 11.3 的开发者预览版，也一起发布了 Xcode 9.3 Beta，预计在春季正式发布（3 月）。这是 iOS 11 目前为止最大的一次更新，主要增加了电池健康状况查看，ARKit 升级至 1.5 版本，Safari 支持 service worker，以及其他；iOS 11.2.5 推送，Homepod 开始预购：苹果公司正式推送了 iOS 11.","sections":[{"heading":"iOS 11.3 要来了，这是 iOS 11 目前为止最大的一次更新","url":"https://www.apple.com/cn/newsroom/2018/01/apple-previews-ios-11-3"},{"heading":"iOS 11.2.5 推送，Homepod 开始预购","url":null},{"heading":"Apple’s augmented reality tool kit can now detect walls and 2D images in beta","url":"https://techcrunch.com/2018/01/24/apples-augmented-reality-tool-kit-can-now-detect-walls-and-2d-images-in-beta/"},{"heading":"Swift 官方论坛迁移完成啦！！！","url":"https://swift.org/blog/forums/?utm_campaign=Swift%2BWeb%2BWeekly&utm_medium=email&utm_source=Swift_Web_Weekly_41"},{"heading":"漏洞预警 | iOS WebView 跨域访问漏洞","url":"https://mp.weixin.qq.com/s/aRlxqxGw8etqep62qG4khA"},{"heading":"小程序支持跳转 App 了","url":"https://mp.weixin.qq.com/s/0etOZyu0XXbRcHE7vvqiDA"},{"heading":"YYCache 源码解析","url":"https://juejin.im/post/5a657a946fb9a01cb64ee761"},{"heading":"函数式编程圣经","url":"https://mp.weixin.qq.com/s/0gErQ3tjDLZuD1bYOhi0mQ","recommender":"知名公众号“码农翻身”老刘继《[面向对象圣经](http"},{"heading":"Weex + Ui - Weex Conf 2018","url":"https://zhuanlan.zhihu.com/p/33153760"},{"heading":"JS 在微信、微博、QQ、Safari 唤起 App 的解决方案","url":"https://segmentfault.com/a/1190000012940046"},{"heading":"2018 iOS 社招面试经验","url":"https://xiaozhuanlan.com/topic/4985160237"},{"heading":"面向对象的 JavaScript 编程：原理与实践","url":"https://github.com/haitaoxin/jsoo"},{"heading":"实现一个 JavaScriptCore 的 debugger —— iOS 篇","url":"http://taobaofed.org/blog/2018/01/23/implement-javascriptcore-debugger-ios/"},{"heading":"Getting started with Bluetooth Low Energy on iOS","url":"https://codeburst.io/getting-started-with-bluetooth-low-energy-on-ios-ada3090fc9cc"},{"heading":"软件工程师需要了解的网络知识：从铜线到HTTP（一）—— 前言","url":"https://lvwenhan.com/操作系统/485.html"},{"heading":"Recreating the Apple Music Now Playing Transition","url":"https://www.raywenderlich.com/178798/recreating-the-apple-music-now-playing-transition"},{"heading":"Simplifying Swift framework development","url":"https://davedelong.com/blog/2018/01/19/simplifying-swift-framework-development"},{"heading":"How to create a complex loading animation in Swift","url":"https://www.raywenderlich.com/102590/how-to-create-a-complex-loading-animation-in-swift","recommender":"[raywenderlich](https"},{"heading":"Creating Flows","url":"https://mag.n26.com/creating-flows-f1c2e1bc8108"},{"heading":"中文文案排版指北","url":"https://github.com/sparanoid/chinese-copywriting-guidelines"},{"heading":"为什么要缓存 NSDateFormatter ?","url":"https://weibo.com/2293476232/FFEiG7pUw"},{"heading":"A better way to update UICollectionView data in Swift with diff framework","url":"https://medium.com/flawless-app-stories/a-better-way-to-update-uicollectionview-data-in-swift-with-diff-framework-924db158db86"},{"heading":"WoodPecker","url":"http://www.woodpeck.cn/cnindex"},{"heading":"Fastlane: Boarding","url":"https://github.com/fastlane/boarding#readme"},{"heading":"iOS 爆内存问题解决方案 - OOMDetector 组件","url":"https://mp.weixin.qq.com/s/swAwMDs5-MkU3Yew4oy9kA"},{"heading":"AppFolder","url":"https://github.com/dreymonde/AppFolder"},{"heading":"刷新：重新发现商业与未来","url":"https://www.amazon.cn/gp/product/B0788YKX2Y"},{"heading":"比特币原理","url":"https://www.youtube.com/watch?v=obRzfcvMshM&feature=youtu.be"}]},{"id":"r-004-2018-01-22","type":"report","title":"老司机 iOS 周报 #4 | 2018-01-22","issue":4,"date":"2018-01-22","year":2018,"path":"Reports/2018/#4.md","url":"Reports/2018/%234.md","excerpt":"库克：将允许 iPhone 6 / 6s / 7 手动解除降速：持续发酵的苹果电池降频门，苹果再退一步。库克接受采访时表示会在系统中增加一项设置，用户可以禁用苹果为了保护电池而设的降频策略。最新的 11.2.5 测试版中已经可以查看电池状况。；微信打赏功能将在 iOS 上回归：在「微信公开课 Pro」的主题演讲中，张小龙表示打赏功能将回归，并将修改打赏机制，打赏金额将直接支付给内容创作者。；Apple 更新 App Store 网页预览","sections":[{"heading":"库克：将允许 iPhone 6 / 6s / 7 手动解除降速","url":"http://digi.163.com/18/0119/06/D8G91D3R001680N8.html"},{"heading":"微信打赏功能将在 iOS 上回归","url":"http://tech.sina.com.cn/i/2018-01-16/doc-ifyqqieu6753280.shtml"},{"heading":"Apple 更新 App Store 网页预览界面","url":"https://itunes.apple.com/cn/app/id911261462"},{"heading":"苹果预计下周修正文字讯息漏洞「ChaiOS」","url":"https://cn.engadget.com/2018/01/18/apple-fix-for-chaios-bug-next-week-imessage/"},{"heading":"蜂鸟商家版 iOS 组件化 / 模块化实践总结","url":"https://juejin.im/post/5a620cf5f265da3e36415764"},{"heading":"iPhone X home button","url":" http://blog.zats.io/2017/12/27/iPhone-X-home-button"},{"heading":"从 Aspects 源码中我学到了什么","url":"https://lision.me/aspects/"},{"heading":"iOS 如何进行网络测速","url":"https://juejin.im/post/5a62c2416fb9a01ca713893d","recommender":"[@Joy_xx](https"},{"heading":"Useful Optional Extensions","url":"https://appventure.me/2018/01/10/optional-extensions/?utm_campaign=Revue%20newsletter&utm_medium=Newsletter&utm_source=AppCoda%20Weekly"},{"heading":"WebAssembly 的那些事","url":"https://mp.weixin.qq.com/s/lFqvdBvusCcndoBK0-U7kg"},{"heading":"objc - 编译 Runtime 源码 objc4-680","url":"http://blog.csdn.net/wotors/article/details/52489464"},{"heading":"WKWebView 强大的新特性","url":"http://www.cnblogs.com/zhanggui/p/8260136.html"},{"heading":"Building for the Blockchain（面向区块链开发）","url":"https://zhuanlan.zhihu.com/p/32914619?iam=7a313be561811283ea95625f373cdd99"},{"heading":"给 Bool 扩展一个 Toggle 方法","url":"https://www.objc.io/blog/2018/01/16/toggle-extension-on-bool/"},{"heading":"今日头条算法原理（全）","url":"https://mp.weixin.qq.com/s/DC_hJUbTnLhuCwYVOgVlVw"},{"heading":"CocoaPods 发布 1.4.0","url":"http://blog.cocoapods.org/CocoaPods-1.4.0/"},{"heading":"Design+Code","url":"https://itunes.apple.com/cn/app/design-code/id1281776514?mt=8"},{"heading":"cocoapods-packager","url":"https://github.com/CocoaPods/cocoapods-packager"},{"heading":"SwiftyUserDefaults","url":"https://github.com/radex/SwiftyUserDefaults"},{"heading":"Turi Create","url":"https://github.com/apple/turicreate"},{"heading":"objc.io 新书「App Architecture」","url":"https://www.objc.io/books/app-architecture/"},{"heading":"Swift Unwrapped #42 Conditional Conformance","url":"https://spec.fm/podcasts/swift-unwrapped/105029"},{"heading":"淘宝 - Weex 内核研发技术专家 - 基础平台部","url":"https://job.alibaba.com/zhaopin/job_detail.htm?refNo=GP041921"},{"heading":"阿里巴巴 - 国际技术事业部 - ICBU 技术部 - iOS 高级开发工程","url":"https://job.alibaba.com/zhaopin/position_detail.htm?positionId=38653"},{"heading":"CSDN 亟需前端开发和后端好手加盟，一起打造程序员新社区","url":"https://weibo.com/1355610915/FEUpVkafe?type=comment#_rnd1516518085805"}]},{"id":"r-003-2018-01-15","type":"report","title":"老司机 iOS 周报 #3 | 2018-01-15","issue":3,"date":"2018-01-15","year":2018,"path":"Reports/2018/#3.md","url":"Reports/2018/%233.md","excerpt":"国区 iCloud 账户将转由「云上贵州」运营：2018 年 2 月 28 日起，国区 iCloud 账户将转由「云上贵州」运营。如果想要把 iCloud 的东西继续存在美区，可以参考少数派的文章：不想停用 iCloud？不妨迁移数据到其它 Apple ID 。；英特尔处理器打补丁后，性能并没有下降很多：标题已经说明一切，为了照顾强迫症我随手打几个字给你。；微信着手封堵 Universal Link：恭喜微信离成为操作系统的目标又近了一","sections":[{"heading":"国区 iCloud 账户将转由「云上贵州」运营","url":"https://support.apple.com/zh-cn/HT208352"},{"heading":"英特尔处理器打补丁后，性能并没有下降很多","url":"http://www.ifanr.com/965596"},{"heading":"微信着手封堵 Universal Link","url":"https://juejin.im/post/5a5371626fb9a01cb64ea37d"},{"heading":"Announcing Realm Cloud: Realm Platform as a Service Beta","url":"https://realm.io/blog/realm-cloud-beta-waitlist/"},{"heading":"移动 APP 网络优化概述","url":"http://blog.cnbang.net/tech/3531/"},{"heading":"接手一个刚起步的 iOS 项目后我做了什么","url":"https://juejin.im/post/5a5625ddf265da3e3f4c9651"},{"heading":"WCDB 源码解析","url":"http://xiangwangfeng.com/2018/01/08/WCDB-源码解析/"},{"heading":"[[译]2017 Swift 单元测试文章资源精华](https://juejin.im/post/5a58738ff265da3e4b76b62d)","url":null},{"heading":"[[译]用Buck构建混合语言iOS项目](https://www.zybuluo.com/zb5228126/note/844203)","url":null},{"heading":"iOS 9 之后 NotificationCenter 还需要 removeObserver 吗?","url":"https://oleb.net/blog/2018/01/notificationcenter-removeobserver/"},{"heading":"Xcode 9 里一些实用的 URL","url":"https://cocoaengineering.com/2018/01/01/some-useful-url-schemes-in-xcode-9/"},{"heading":"开源项目挣钱实用手册","url":"https://github.com/wizicer/FinancialSupportForOpenSource"},{"heading":"Swift Non-Nil Values In An Array Of Optionals","url":"https://useyourloaf.com/blog/swift-non-nil-values-in-an-array-of-optionals/"},{"heading":"Write your scripts in Swift with Beak","url":"https://www.hackingwithswift.com/articles/47/write-your-scripts-in-swift-with-beak"},{"heading":"create dmg","url":"https://github.com/sindresorhus/create-dmg"},{"heading":"typewriter","url":"https://github.com/typwr/typewriter"},{"heading":"AutoPacking-iOS","url":"https://github.com/stackhou/AutoPacking-iOS"},{"heading":"Step by step – The story about a code bookmarking tool","url":"http://dyna.mo/bookmarking-tool-for-code/"},{"heading":"thefuck","url":"https://github.com/nvbn/thefuck"},{"heading":"XLForm","url":"https://github.com/xmartlabs/XLForm"},{"heading":"iOS 性能优化合集","url":"https://github.com/skyming/iOS-Performance-Optimization"},{"heading":"CollectionViewSlantedLayout","url":"https://github.com/yacir/CollectionViewSlantedLayout"},{"heading":"React Native 应用开发实例解析","url":"https://www.amazon.cn/dp/B077S8V6GQ"},{"heading":"Checked #51: 准确表达与善意理解","url":"http://checked.fm/51"},{"heading":"Swift Talk #82 Refactoring Imperative Layout Code","url":"https://talk.objc.io/episodes/S01E82-refactoring-imperative-layout-code"},{"heading":"36氪: iOS Leader","url":"https://www.lagou.com/jobs/4025262.html"},{"heading":"流利说: 资深 iOS 开发","url":null},{"heading":"基础架构开发工程师","url":"https://www.lagou.com/jobs/2848214.html"},{"heading":"喜马拉雅 iOS leader","url":"https://www.lagou.com/jobs/3887089.html"}]},{"id":"r-002-2018-01-08","type":"report","title":"老司机 iOS 周报 #2 | 2018-01-08","issue":2,"date":"2018-01-08","year":2018,"path":"Reports/2018/#2.md","url":"Reports/2018/%232.md","excerpt":"TIOBE 2017年度语言揭晓：哦，我的上帝，是古老的 C：今年 C 语言并没有很强势，只是也没有其他增长很突出的语言，C 的增长率 1.69% 就成为了佼佼者。亚军是 Python ，增长了 1.21%。；集成 iCloud、Passbook 或订阅类 iAP 将导致 App 无法转移：集成过 iCloud, Passbook 或订阅类 iAP 将导致 App 无法转移到别的开发者帐号，即使之前集成过，新版禁用也不行。；Apple ","sections":[{"heading":"TIOBE 2017年度语言揭晓：哦，我的上帝，是古老的 C","url":"https://www.tiobe.com/tiobe-index/"},{"heading":"集成 iCloud、Passbook 或订阅类 iAP 将导致 App 无法转移","url":"https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/TransferringAndDeletingApps.html"},{"heading":"Apple 拿下 iPhone X 外形设计专利","url":"http://www.patentlyapple.com/patently-apple/2018/01/apple-wins-patent-for-iphone-x-design-and-carplay-with-turn-by-turn-navigation.html"},{"heading":"让所有科技巨头“焦头烂额”的intel漏洞是什么","url":"https://zhuanlan.zhihu.com/p/32679604"},{"heading":"程序员如何在技术浪潮的更迭中保持较高的成长速度","url":"https://juejin.im/post/5a4e296e51882573315c2917"},{"heading":"QUIC 协议初探 - iOS实践","url":"https://mp.weixin.qq.com/s/NbewZ1NU49qSjIcdFrpotw"},{"heading":"Basics of parallel programming with Swift","url":"https://medium.com/flawless-app-stories/basics-of-parallel-programming-with-swift-93fee8425287"},{"heading":"如何实现 React Native 里的页面导航系统","url":"http://tech.glowing.com/cn/all-about-routing-and-navigation-in-react-native/"},{"heading":"阮一峰：比特币入门教程","url":"http://www.ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html"},{"heading":"Detecting screen capturing in iOS 11","url":"https://medium.com/@abhimuralidharan/detecting-screen-capturing-in-ios-11-cca15881c785"},{"heading":"App Sight","url":"https://www.appsight.io"},{"heading":"Kickstarter 开源了他们的客户端","url":"https://github.com/kickstarter/ios-oss"},{"heading":"RxFlow","url":"https://github.com/RxSwiftCommunity/RxFlow"},{"heading":"LSAnimator","url":"https://github.com/Lision/LSAnimator"},{"heading":"OOMDetector","url":"https://github.com/Tencent/OOMDetector"},{"heading":"DeepDiff","url":"https://github.com/onmyway133/DeepDiff"},{"heading":"quicktype","url":"https://github.com/quicktype/quicktype-xcode"},{"heading":"音视频开发进阶指南：基于Android与iOS平台的实践","url":"https://www.amazon.cn/gp/product/B078PFKS38"},{"heading":"阿尔法狗 AlphaGo 2017","url":"https://www.youtube.com/watch?v=9UewW8sF4gs"},{"heading":"Testing in iOS","url":"https://videos.raywenderlich.com/courses/105-testing-in-ios/lessons/1?_ga=2.95277404.1190247701.1515328410-485821952.1502437076"}]},{"id":"r-001-2018-01-01","type":"report","title":"老司机 iOS 周报 #1 | 2018-01-01","issue":1,"date":"2018-01-01","year":2018,"path":"Reports/2018/#1.md","url":"Reports/2018/%231.md","excerpt":"致广大用户关于 iPhone 电池及性能的说明：苹果对电池老化会导致 iPhone 性能下降做的沟通说明。表示 从来没有、也永远不会通过任何手段，来有意缩短任何 Apple 产品的使用寿命，更不会降低用户体验来迫使大家升级设备。为了安抚大家的不满，苹果将更换电池的费用下调了 390 元，从 608 元降到 218 元。不过这个；Swift 快要可以和 Python 无缝交互了：这是 Chris Lattner 大神到 Google 之后","sections":[{"heading":"致广大用户关于 iPhone 电池及性能的说明","url":"https://www.apple.com/cn/iphone-battery-and-performance/"},{"heading":"Swift 快要可以和 Python 无缝交互了","url":"https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20171204/042029.html"},{"heading":"苹果宣布收购 Buddybuild","url":"https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651114092&idx=1&sn=2647b0230a12333e1b866e11165d7aa8"},{"heading":"Swift Weekly Brief 宣布停更","url":"https://www.jessesquires.com/blog/swift-weekly-brief-hiatus/"},{"heading":"Apple 更新 App Store Review Guidelines，增加 VPN 和 loot boxes 等条款","url":"http://www.appstorereviewguidelineshistory.com/"},{"heading":"LiberiOS jailbreak for iOS 11 officially released, includes support for the iPhone X","url":"https://www.modmy.com/liberty-jailbreak-ios-11-released-includes-cydia-and-support-iphone-x"},{"heading":"iOS 知识小集","url":"https://github.com/southpeak/iOS-tech-set"},{"heading":"Swift Tips","url":"https://github.com/johnsundell/swifttips#53-string-based-enums-in-string-interpolation"},{"heading":"Weak Arrays","url":"https://www.objc.io/blog/2017/12/28/weak-arrays/"},{"heading":"When and how to use Value and Reference Types in Swift","url":"https://khawerkhaliq.com/blog/swift-value-types-reference-types/"},{"heading":"Building an enum based analytics system in swift","url":"https://www.swiftbysundell.com/posts/building-an-enum-based-analytics-system-in-swift"},{"heading":"Measuring Swift compile times in Xcode 9","url":"https://www.jessesquires.com/blog/measuring-compile-times-xcode9/"},{"heading":"App Host","url":"https://github.com/pluosi/app-host"},{"heading":"XcodeGen","url":"https://github.com/yonaskolb/XcodeGen"},{"heading":"WCDB Swift","url":"https://mp.weixin.qq.com/s/mf-JDZrTHAS0ViJBbpC1cA"},{"heading":"Task automation in Swift with Sake","url":"http://ppinera.es/2017/12/15/sake.html"},{"heading":"Fluid Slider","url":"https://github.com/Ramotion/fluid-slider"},{"heading":"微信跳一跳可以直接更改分数，POST 请求没有校验","url":"https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417"},{"heading":"Swift 进阶","url":"https://objccn.io/products/advanced-swift/"},{"heading":"本期编辑","url":null,"recommender":"[@没故事的卓同学](https"}]}]}