老司机 iOS 周报 #19 | 2018-05-14

3,289 阅读5分钟

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

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

新闻

iOS 11 App 上传规则变化

2018 年 7 月份开始,所有上传 App Store 的应用都必须是基于 iOS 11 SDK 编译并适配 iPhone X 的分辨率。当然,Apple 也对上传流程做了进一步的优化。更多细节,请参照:developer.apple.com/ios/submit/

What's New In Vapor 3

Vapor 3 对 Vapor 进行了彻底的重新设计,为未来几年的发展奠定了基础,让 Vapor 能够成长和进化为最好的服务器端 Swift 框架。Vapor 3 现在完美支持 Swift 4 的 Codable,并且从同步阻塞架构进化为异步非阻塞架构,同时还采用 Apple 新的开源服务器端框架 SwiftNIO 来管理所有网络连接和 HTTP 解析。

在 apple/swift 的 tensorflow 分支上开发 Swift for TensorFlow

Swift for TensorFlow 的 Swift 编译器开发在 google/swift 分支上,Ted Kremenek (Swift 项目新主管)和 Chris Lattner(Swift 之父)都认为将这个分支上的工作移动到 Apple/Swift 上直接开发,对 Swift 社区更有益处。这样会让 Swift 编译器开发的协同工作集中到一个中心,而且也能避免大家对于 Swift 产生方言的担忧。

新分支 tensorflow 将会在近期创建,tensorflow 上开发的新功能,会通过 Swift 发展流程,将一部分合入 Swift 主分支,tensorflow 分支本身,也会密切追踪 Swift 主分支的更新。

Ulysses 13 将更好的支持代码展示

最好的 MarkDown 写作工具之一 Ulysses 对代码的展示一直不够友好,最近宣布将在下个版本中优化对代码段的展示,并且支持 github style。

文章

🐢 AVAudioEngine Tutorial for iOS: Getting Started

音频处理一直是 iOS 开发中非常棘手的一部分,因为在 iOS 8 之前只能使用低级的、晦涩难懂的 Core Audio 框架,但随着 iOS 8 发布了高级的音频工具集 AVAudioEngine,我们不再需要深入挖掘 Core Audio 也可以实现音频处理,这篇教程会为你介绍如何使用这个新工具。

🐎 深入了解Flutter界面开发

最近一段时间,通过学习浏览器内核的相关思想来做界面开发的框架层出不穷。从 Reactive Native、Samurai Native、Weex 到最近的 Flutter、Tangram,各个公司都结合自己的业务时间推出了对应的轮子。不过反过来想,轮子多的核心原因恰恰是其实目前还没有完美的轮子。

这篇文章并不是 Flutter 的教程,而是重点介绍了 Flutter 的渲染流程和原理,以及探讨了一些背后的 immutable 和 react 之间惺惺相惜的设计思想,很有价值。如果自己所在的团队有这类轮子需求的同学,一定不要错过。

🐎 DEALING WITH DATES

时间对于在日常生活中的我们是简单的概念,但是在编程领域却是困难的。本文介绍了在 Apple 平台下,如何利用系统框架来对时间进行正确的处理。

🐎 Codable 与 JSONSerialization 性能测试

Swift 4 的新功能 Codable 可以自动生成解析 JSON 的构造器,但这些自动生成的代码跟我们手写的有什么区别呢?这篇文章的作者写了一个性能测试去比较 JSONDecoder 和 JSONSerialization,文末作者表示虽然 Codable 生成的代码效率只有手动解析的一半,但比起这点性能消耗,绝大部分情况下 Codable 带来的便利更加重要。

🐢 从源码看微信小程序启动过程

这篇文章记录了作者经过 3 个礼拜研究后,对小程序框架的基本代码结构,启动流程以及程序实例化过程的理解,并且从小程序的启动流程入手一步步解答了“框架对传入的对象等到底做了什么”的疑问。

🌟 Memory Leaks in Swift

Leaks 相关的内容在业内虽然已经有很多文章了,但多数是以 OC 来做示例,文章从 Swift 角度讲 Memory Leaks 是什么、有哪些危害?为什么会发生 Leak?最后重点介绍了消除 Leaks 的几种方式。

🐎 Making illegal states unrepresentable

作者以 URLSession 为例,大致描述了如何通过 Swift 的强类型来消除不明确的状态。在编译器的帮助下,编写出更加逻辑缜密的代码。

🚧 🐎 Capture iOS simulator video for App Preview

这里介绍了一个 XCode 模拟器的命令行小技巧,很方便的用简单的命令行来实现将模拟器中的操作录制成录像,方便上传到 AppStore 的录像展示之中,浏览该网页需要翻墙。

🐢 🌟 🚧 Best iOS hacks from Twitter: March & April Edition

3 月 和 4 月整理自 Twitter 的各种 iOS 开发、调试小技巧与冷知识,非常干的干货,推荐花时间仔细阅读,绝对会有所收获。

音视频

RWDevCon 2018 Vault Video Bundle

此系列视频收费 $99,共 18 个主题:如 Serialization in SwiftAuto LayoutClean ArchitectureAndroidTDDWKWebViewARKitMetal 等,如对其中两个主题感兴趣也就值回票价了。

内推

丁香园丁香妈妈团队招中高级 iOS 工程师

新组建的团队,有电商方面开发经验优先,有意向请发送简历到 gp@dxy.cn

百度文库 / 百度阅读,招聘 Android / iOS / Fe 高级 / 资深工程师

百度文库 / 百度阅读,招聘 Android / iOS / 前端 高级 / 资深工程师,坐标北京百度科技园,有意向请发送简历到 wangdefu@baidu.com

关注我们

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

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

本期编辑

@没故事的卓同学@四娘@mmoaay@享耳先森@EyreFree@Damonwong@折腾范儿_味精@张嘉夫@AidenRao@Parsifal@aaaron7@方秋枋

说明

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

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