老司机 iOS 周报 #163 | 2021-06-21
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
周报编辑组又迎来了一位新人 - @Smallfly,他是来自网易云音乐的开发者,对 Native 和跨端技术栈均有涉猎,希望未来能一起给大家持续输出高质量内容~
WWDC 21
@Parisfal:WWDC 21 圆满结束,但关于 WWDC 21 的学习才真正开始~苹果官方汇总了新技术和已有框架的重点变化[1],本周我们针对部分内容更新了 6 篇 WWDC 21 Session 的深度解读,每篇文章都是经过不断推敲和审核才完成。
【WWDC21 10114】 初见 StoreKit 2[2]
@黄骋志: 开发过 In-App Purchase 的同学应该都应该体会过被它 生涩难懂的 API、不合理的数据结构、难以处理的掉单 等问题支配过的恐惧。WWDC21 针对 StoreKit 做了一次全新的升级,同时得益于 Swift 的新特性,进一步简化了 API 调用,并带来了诸多新特性,阅读本文后相信你会惊艳于这次的升级。
【WWDC21 10101】使用 ReplayKit 记录你的高光时刻[3]
@七夜: 主要介绍了 Apple 为 ReplayKit 新增了一个新的特色功能 Clips Recording,用于记录用户应用或游戏内不超过 15 秒长的精彩瞬间。
【WWDC21 10158】使用 VideoToolbox 探索低延迟视频编码[4]
@bqlin: 讲述通过 VideoToolbox 最新功能实现低延迟 H.264 硬件编码,最大限度地减少端到端的延迟,并提高性能,实现最佳的实时通信和高质量的视频播放。
【WWDC21 10019】在 SwiftUI 中遇见并发编程[5]
@Edmond: 众所周知,在计算机领域并发是很棘手的一个难题,现在您拥有了管理应用程序中这种复杂性的工具。我们希望您喜欢并了解 Swift 5.5 和 SwiftUI 中出色的新并发工具,我们期待看到您使用它们解决应用程序中棘手问题。
【WWDC21 10134】 探索 Swift 结构化并发[6]
@SZ: Swift 5.5 创新性地引入了结构化并发的概念。同时,也革命性地引入了不同风格的任务、任务树的自动管理机制以及编译时的数据安全检查,极大地降低了并发程序编写难度。尽管最终正式版还是存在更改部分 API 的可能,我们仍然推荐大家先学习并熟悉一下编写 Swift 程序的新方法。
【WWDC21 10017】为 Swift 和 SwiftUI 带来 Core Data 并发[7]
@SZ: 今年 Core Data 上带来了大量的功能增强,其中包括使用了 Swift 并发的新 API。这些变化改善了使用 Core Data 进行 Swift 和 Swift UI 开发的体验,简化了异步数据操作的程序,因此我们推荐大家学习并逐渐开始使用这些新的 API。
新闻
🌟 WWDC.技术沙龙 - 北京地区专场圆满结束
@Parsifal:由 SwiftGG 和快手联合主办的 WWDC.技术沙龙 - 北京专场于本周六在快手总部顺利举办,分享活动吸引了近 200 开发者朋友一起前来学习。本次分享的后续总结工作正在紧锣密鼓地进行中,同时由我们周报主办的杭州场和上海场技术沙龙也将陆续开放报名,欢迎各位同行好友来聚聚。本次活动我们不收取任何费用,除了嘉宾带来的主题分享外,现场更有主办方为每一位到场朋友悉心准备的伴手礼和茶歇,同时周报也将在现场免费赠送 WWDC 21 内参[8] 哦。
文章
🌟 🐕 Concurrency in Swift 5 and 6[9]
@anotheren:来 Swift 官方社区的帖子,介绍了 Swift 并发控制在 Swift 5 和 6 中的展望。Apple 需要考虑将 Swift 生态系统迁移到 Swift 6 会是什么样子,并预计这个过程需要数年时间。在此过程中,Apple 需要确保:
Swift 5.x 和 Swift 6 代码可以在并发模型的演进中,良好地相互操作 逐步采用并发模型可以使代码更好维护,也更安全 每个模块、包和程序都可以以自己的速度采用并发控制,而不会不必要地破坏原来的代码
总的来说,Swift 5 中会更加宽松,以能够使并发控制逐步推广开,完成平稳过渡。而 Swift 6 会在需要的情况下要求异步执行的闭包满足 @Sendable (详见 SE-0302 Sendable and @Sendable closures[10])。
🌟 🐕 Xcode 工程文件解析
@老峰:从我们接触 iOS 开发就与 Xcode 工程配置文件 xcodeproj 打交道,本文作者详细介绍了 xcodeproj 文件结构,以及如何 xcodeproj 开源库 解析并修改 xcodeproj 文件,文章主要包含一下内容:
Xcode 工程文件组成:xcworkspace、xcodeproj Project 解析、Object Module、Object Attributes、Xcode Object等 通过代码编辑 Xcode 工程
🐕 iOS 14.5 如何用 PAC 保护 Objective-C 对象
@AidenRao:一篇非常硬核的文章,本文介绍了 iOS 14.5 针对 Objective-C 运行时进一步加强 PAC 保护的两处改动。这些保护仅针对系统自带应用和服务启用,目的是防止跨进程和远程代码执行的漏洞利用。
🐕 Flutter IM 跨端架构设计和实现
@CrazyCoderShi:一个非常好的跨端 IM 设计方案,从痛点分析到实施方案,到 DB 同步设计,以及状态管理,应有尽有。有相关业务小伙伴值得仔细阅读,文中很多解决方案可以带来不少参考.
🐕 从探索到实践,iOS 动态库懒加载实录
@红纸:本文是 58 同城对于 APP 模块动态化的实践总结,对方案定制、实现流程、方案结果对比、量化收益等多个方向进行描述。由于动态库的吸附性,团队整理完依赖树,选用自下而上的方式,将模块逐一动态库。并使用懒加载的形式加载动态库,而非启动加载,降低了启动耗时。
🐕 WWDC21 Ultimate application performance survival guide[11]
@Leo:性能是客户端永远绕不开的话题, 所以 WWDC 每年都会有很多 session 是关于性能的。这个 session 更像是一篇概述,讲解了苹果提供的性能相关监控、工具和诊断,推荐对性能感兴趣的同学阅读。
推荐人:GCSNNB
🐕 Code Signing - iOS 代码段的校验机制分析
@Smallfly:从 iOS JIT 遇到 Crash 的神仙打架,到 iOS 代码段的校验机制。本文作者高级页面仔,从内核源码着手,详细地分析了 iOS 代码段合法性校验的时机和过程。最终给出了 Crash 的原因,并介绍了连接调试器和越狱环境下 JIT 不会 Crash 的实现原理。
🐕 听说你想写个 Lisp 解释器
@折腾范儿_唯敬:我们使用的编程语言,我们写下的代码,本质上就是一行又一行的字符串,而这些字符串到底是如何工作的,这本是属于编译原理范畴。很多书或者有些文章也会介绍到“词法分析/AST/解释执行”之类的高大上的概念,稍微有些抽象也有些晦涩。但是本文作者 silan-liu[12] 从一个最基础最简单的 Lisp 语言入手,从 0 开始用 swift 写了一个解释器,在这个过程中你可以看到从分词到解析,再到生成 AST 的全部代码过程,亲自感受一遍代码被理解被执行的过程,相信会比书本上抽象的概念更容易吸收和理解。注:本文是该文章的第一篇,写到了生成抽象语法树 AST,而 AST 的执行运算出最终的结果,还请继续期待作者的下一篇文章。
摸鱼周报
@摸鱼周报 #14:本期我们整理了一些包体优化的方案,从资源到代码层面,涉及的 Tips 很多,为了便于观看和记忆,我们将其制作成一张思维导图。开发者账号的续费问题最近有好几个小伙伴都有遇到,我们将其中的注意事项做了一个整理。
概念篇开始整理一些 Web 前端知识,介绍了 React、Vue、React Native 这几个概念,还附带了一些代码片段,实际学习之前可以给大家带来一个初体验。
资料内容收录了一个 Github 仓库 Newbie Security List[13],其中整理了网络安全相关的博客、工具、电子书籍资料、在线知识库、在线漏洞库等内容。
@摸鱼周报 #15:本期介绍了几个去掉导航栏返回按钮文案的实现方案;还有个系统自带的命令行工具 plutil
,通常我们将其用于打包脚本设置版本号,但它还可以用来检查多语言文件的格式问题。处理繁杂且巨大的多语言文件,自动化工具永远是最佳助手。
概念篇 Web 前端知识第二弹:BootStrap、Webpack、Flutter。
博客篇整理了一些逆向和签名相关文章,虽然不是新文章,但篇篇都是精品,值得反复阅读。
资料内容收录了一个国外的网站:SwiftLee[14],一个分享关于 Swift、iOS 和 Xcode 技巧和窍门的周更博客,博客的文章写得清晰易懂,排版、配图和动画质量也很高。
赞助者
虚位以待..
非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~
内推
老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
如果你想找工作,点这里:https://www.yuque.com/iosalliance/article/bhutav
如果你想招人,点这里:https://www.yuque.com/iosalliance/article/ycyhf3
当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
关注我们
我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
说明
🚧 表示需某工具,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
参考资料
新技术和已有框架的重点变化: https://developer.apple.com/documentation/New-Technologies-WWDC-2021
[2]
【WWDC21 10114】 初见 StoreKit 2: https://xiaozhuanlan.com/topic/6138790425
[3]
【WWDC21 10101】使用 ReplayKit 记录你的高光时刻: https://xiaozhuanlan.com/topic/1068759324
[4]
【WWDC21 10158】使用 VideoToolbox 探索低延迟视频编码: https://xiaozhuanlan.com/topic/2530964187
[5]
【WWDC21 10019】在 SwiftUI 中遇见并发编程: https://xiaozhuanlan.com/topic/2957164803
[6]
【WWDC21 10134】 探索 Swift 结构化并发: https://xiaozhuanlan.com/topic/3625784190
[7]
【WWDC21 10017】为 Swift 和 SwiftUI 带来 Core Data 并发: https://xiaozhuanlan.com/topic/4625791038
[8]
WWDC 21 内参: https://xiaozhuanlan.com/wwdc21
[9]
Concurrency in Swift 5 and 6: https://forums.swift.org/t/concurrency-in-swift-5-and-6/49337
[10]
SE-0302 Sendable and @Sendable closures: https://github.com/apple/swift-evolution/blob/main/proposals/0302-concurrent-value-and-concurrent-closures.md
[11]
WWDC21 Ultimate application performance survival guide: https://gcsnnb.github.io/2021/06/09/APP%E6%80%A7%E8%83%BD%E7%BB%88%E6%9E%81%E7%94%9F%E5%AD%98%E6%8C%87%E5%8D%97/
[12]
silan-liu: https://github.com/silan-liu
[13]
Newbie Security List: https://github.com/findneo/Newbie-Security-List
[14]
SwiftLee: https://www.avanderlee.com/