老司机 iOS 周报 #105 | 2020-03-16

4,074 阅读6分钟

老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

🌟 WWDC20 改成线上举行

@享耳先森:受新冠疫情影响,苹果宣布一年一度的 WWDC 大会改为线上举行,具体日期及形式还未定,只指明将在六月举行。

新手推荐

🌟 🐕 UIAlertController with Function Builders

@AidenRao:Function Builder 是 Swift 5.1 的新特性,在 Swift 的基础上构建自己的 DSL 的语法。文章基于 Function Builder,创建简单且易读的 UIAlertController API,包括基础的 Function Builder 实践,条件语法,以及通过创建一个辅助函数,在 Function Builder 中实现 for 循环。

文章

🌟 打破重重阻碍,Flutter 和 Web 生态如何对接?

@CrazyCoderShi:Flutter 在 2019 几乎已经成为了跨端开发的代名词了,其中其官方团队在下半年宣布的 Flutter Web 更是让其火热的势头更进一步,让大家看到了一个大统一的远景。本文是手淘技术对 Flutter 对接 Web 的一个深度解析,从 what,why,how 三方面娓娓道来,最终结论: 不要对接!不要对接!不要对接!

🌟 🐕 Fluttify

系列文章:

@红纸:Fluttify 是一个可以为原生 SDK 生成 Dart 接口的一个工具。工具解决了一些插件开发过程中带来的类型安全,编码繁琐等痛点。主要原理通过语法解析生成器 ANTLR 产生树状分析器解析出 JSON 格式的中间文件,再利用中间文件和工程模板生成对应的 Dart 接口以及目标工程。

如果你对于 ANTRL 想了解更多推荐:JSPatch Convertor 实现原理详解从 antlr 扯淡到一点点编译原理

推荐人:@yohom

🐎 Testing Push Notification on iOS Simulator from Xcode 11.4 Beta

@J_Knight_:从 Xcode 的 11.4 beta 版本开始支持在 iOS 模拟器推送。作者介绍了两种方式来实现在 iOS 模拟器的推送:

  1. 使用命令行:xcrun simctl push booted test_push_notification.apns
  2. 通过拖拽 apns 文件到模拟器的方式来实现推送。

通过以上两种方式,开发者不需要使用真机,也不需要推送证书,更不需要使用 APNS 服务就可以实现推送,非常方便。

🐎 Flight rules for Git

@JimQ:这是一篇 Git 急救指南,所谓"飞行规则",即用来指导问题出现后的应对之法。不像官方指南以罗列功能为主,本指南多以常见问题为小标题,然后给出该问题的具体解决步骤,非常适合就病投医,对症下药,且有中文版本。

🐕 Introducing Swift Crypto

@EyreFree:Swift Crypto 是一个新的 Swift 系统库,它对 Apple CryptoKit 的 API 进行了出色的封装。这个新的库提供了跨平台的解决方案,无论部署在什么平台上,Swift 开发人员都可以访问这些 API,以实现一系列通用的加密操作。只需要 import Crypto 就可以获取所有 CryptoKit API,在编写跨平台加密代码时非常有用。本文对该库进行了简单介绍,感兴趣的朋友可以了解一下。

🚧 🐎 The Nested Closure Trap

@Satanwoo:Block / Closure 导致的循环引用想必大家在日常在开发中已经有了很深的体会。作者从 Swift 嵌套的闭包入手,提及了在多层嵌套中可能出现的内存泄漏场景。感兴趣的朋友可以用作一个补充知识漏洞的文章,时刻提示自己。

🐕 设计模式(Swift 5.0 实现)

全面的 Swift 5.0 示例实现的设计模式,结合概念理论与代码示例可以更好地理解设计模式的实际应用。源项目为英文,此为中文整理翻译版本。

🐕 使用 protocol 和 callAsFunction 改进 Delegate

@老驴:喵神的新作。这篇文章也是之前喵神的小专栏的文章的后续。

本文主要是通过 Swift 5.2 中最近新加的特性来完善之前的 Delegate Pattern 方案。有兴趣的同学不妨新老两篇文章一起读哦。

工具

CocoaHub

@xuyanlan:挺不错的一个 iOS 资讯 App,而且仅看 Feed 简介的话不用翻墙哦,CocoaHub 下载链接

代码

🐕 SwiftCurrency: Type-safety and algorithms for working with money in Swift.

@极速男孩:Swift Currency 是一个在 Swift 中来表达 ISO 4217 的一个货币的库。这个库是一个类型安全的,并支持文字表达,文字插入和数学表达式等对货币的操作。

🐕 Time: Building a better date/time library for Swift

@莲叔:做过时间管理、日历等 App 的同学一般都会有一个同感,即系统提供的日期相关的 API 着事不怎么友好,尤其是涉及到时区的考虑,往往都非常容易采坑。Time 是一个纯 Swift 实现的日期 API 集合,提供了 SwiftPM 的方式接入。提供了一种“讲人话”的方式来操作日期和时间,比如可以简单的针对不同的时区生成 clock 对象,并能够轻而易举的从 clock 对象中拿到年月日,时分秒等信息。不用写很多 boilerplate code。有相关需求的同学可以尝试一下。

YMHTTP

@张嘉夫YMHTTP 是一个适用于 iOS 平台,基于 libcurl 的 IO 多路复用 HTTP 框架,其 API 设计和行为与 NSURLSession 保持高度一致。因为 YMHTTP 是基于 libcurl 进行封装,所以有着较高的定制性,目前的版本与 NSURLSession 在 API 保持高度一致的同时拓展了 DNS 的能力(包括 SNI 的场景)。

Swift Argument Parser

@xiaofei86:近日苹果开源了由 Swift 实现的 ArgumentParser。它用于解析命令行参数,具有直观、易用、简洁、安全的特点,是一个很出色的解析器。目前 ArgumentParser 的 star 数已达 1k。苹果还推荐了两个 ArgumentParser 在 Swift 项目工具中采用的示例:

  1. indexstore-db:一个包含两个命令的简单实用程序。
  2. swift-format:使用了一些高级功能,例如自定义选项值和隐藏标志。

内推

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

如果你想找工作,点这里:www.yuque.com/iosalliance…

如果你想招人,点这里:www.yuque.com/iosalliance…

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

关注我们

我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。

同时也支持了 RSS 订阅:github.com/SwiftOldDri…

说明

🚧 表示需翻墙,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)