老司机 iOS 周报 #104 | 2020-03-09
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
近期 iOS 开发者需要关注的官方新闻
@looping:主要内容如下:
- 目前 iOS 13 覆盖率已经达到 77%
- 从 4 月 30 日起,所有提交到 App Store 的 iPhone 应用都必须使用 iOS 13 SDK(Xcode 11) 打包,也就是说要完成 iOS 13 适配
- 再次强调了从 4 月 30 日起,所有提交到 App Store 的应用都必须使用 storyboard 作为 launch screen,并要求 iPhone 应用要适配所有的 iPhone 屏幕尺寸
- 另外,审核条款也有更新(Updated App Store Review Guidelines Now Available),可浏览知识小集团队整理的变更内容:划重点:《App Store 审核指南》更新条目一览
文章
🌟 🐕 Project LightSpeed: Rewriting the Messenger codebase for a faster, smaller, and simpler messaging app
@zvving:Facebook 新版 iOS Messager 为了达成『更快、更小、更简单』的目标,进行了一项罕见的工作:重构架构并重写所有代码。
- 重写效果:保留大多数功能,启动快一倍,大小为之前四分之一,代码从 170w 行降低到 36w 行
- 追求架构全局最优的四原则:
- 优先使用系统实现,少部分跨平台逻辑扩展 C 实现
- 合并重用 UI 逻辑
- 基于 SQLite 打造通用平台 MSYS:驱动 UI 业务,自动化测试 100% 覆盖
- 统一客户端与服务端交互&同步机制
- 面对未来的代码增长,为每个功能设置复杂度预算,长期评估质量
架构的抉择来自于 FB 工程师对如何用最新技术打造 IM 项目的整体思考:使用最新系统实现,追求复用,针对 IM 打造 DB 驱动核心,保持简单。读起来颇有『重剑无锋,大巧不工』的味道。
顺带一提:这是一次 native to native 的重写,和 RN 没有直接关系。
🌟 🐢 系列文章 - Swift Intermediate Language 初探
@享耳先森:Swift 是构建在 LLVM 上,使用 LLVM 中间表示(IR) 和 LLVM 不同后端生成机器语言。除此之外,Swift 编译器在生成 IR 之前,还设计了一门新的高级中间语言 Swift Intermediate Language
,简称 SIL
,SIL 会对 Swift 进行高级别的语意分析和优化。
当你遇到一些无法理解的表面现象,没有办法通过文档或者前人经验解读问题的实质,想要尝试探究编程语言背后的实现细节,那么就需要跨越语言本身的了解,向下去专研编译器的实现细节。系列文章使用项目中实际遇到的一个真实案例,从一个具体的 UITableView
实现的例子引出,试图通过 SIL
这个中间语言,探究 Swift 背后的一些实现细节,帮助我们理解一些问题。
推荐人:@kingnight
🐕 Flutter +MLKit = ❤
@J_Knight_:本文分享了一个 Flutter 与 MLKit 结合起来的 Demo:给名片拍照后提取其中的邮件地址。具体从下面三个步骤来展开:
- 照相(使用 Flutter 的 camera package)
- 使用 MLKit 提取照片中的文字(使用 textRecognizer 实例来提取出图片中的文字)
- 寻找文字中的邮件地址(使用正则表达式)
而且在每一步骤作者都提供了相关代码,并在文章中提供了 Demo 地址:Business-Card-Mail-Extractor
@老驴:Flutter 最近是越来越火了,有越来越多的大厂开始进行尝试。
dna 就是饿了么团队针对 Flutter 使用中的痛点:原生能力的调用,做的一个 channel 类型的框架。本文中也叙述了在 Android 和 iOS 下的实现的一些具体细节,有兴趣的同学也可以学习参考一波。
🐕 My experience replacing CocoaPods with SwiftPM
@anotheren:Xcode 11 中已经自带集成了 Swift Package Manager,随着越来越多第三方库的支持,切换到 SPM 已经逐渐成为可能。本文介绍了当前切换到 SPM 存在的优势与不足,现在主要影响的问题还有:
- 不支持 Objective-C 和 Swift 的混合使用
- 不支持资源文件
🐢 深入剖析 WebKit
@kyo:虽然苹果从 iOS 8 开始就引入了 WKWebView,但在过去很长一段时间里是允许 UIWebview 和 WKWebView 共存的。苹果从 iOS 13 开始将 UIWebview 列为 Deprecated API,意味着开发者讲不得不升级至 WKWebView。而 WKWebView 和 UIWebView 是完全不同的。如果想要更好的了解 WKWebView,那么就有必要深入了解一下 WebKit。本文是 @戴铭 老师关于 WebKit 的一篇文章,对于升级至 WKWebView 遇到的一些问题,或者想更深入了解 WebKit ,这里可能就有你想要的答案。
🐕 iPhone可以运行Android了
@EyreFree:Project Sandcastle(沙堡计划,项目地址:projectsandcastle.org/),目前支持在 iPhone7 / 7 Plus 设备上运行 Android,本文记录了作者完整的尝试过程,有兴趣的朋友可以看一下。
工具
MultipeerKit
@含笑饮砒霜:MultipeerKit 是一个 Swift 软件包,它允许 iOS、macOS 和 tvOS 设备通过 Wi-Fi 网络,点对点 Wi-Fi 和蓝牙在它们之间交换数据。可以通过查看 Public API 文件夹中的 Swift 文件,了解使用 MultipeerKit 的更多信息。
Xcode Build Settings
@AidenRao:Build Settings 有数百种配置,这个网站整理了每一个配置的含义,可以随时用来查询。结合 Mattt 的 Xcode Build Configuration Files,了解使用 xcconfig 来管理 APP 的 Build Settings。
内推
老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
如果你想找工作,点这里:www.yuque.com/iosalliance…
如果你想招人,点这里:www.yuque.com/iosalliance…
当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
关注我们
我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。

同时也支持了 RSS 订阅:github.com/SwiftOldDri… 。
说明
🚧 表示需翻墙,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
转载自:https://juejin.cn/post/6844904085187985422