老司机 iOS 周报 #58 | 2019-03-11

3,662 阅读9分钟

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

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

福利

🌟 移动开发唱衰,iOS 开发者如何涅槃重生?

戴铭,绝对是 iOS 届的资深老司机,GMTC 全球大前端技术大会的专题出品人及讲师之一,前滴滴出行技术专家,在组件化方案落地、工程动态化、大前端建设、应用开发阶段效率的提升、上线后各种难点问题的解决等方面的经验非常丰富。极客时间的品牌我一向比较认可,专栏品质很有保障,《iOS 开发高手课》也是戴铭老师对移动开发这么些年沉淀下来的技术,详细而系统的输出。我看了目录,主要分为基础、应用开发、原理、前端与原生共舞的 4 个模块,你将获得:

1、资深 iOS 开发专家为你构建完整知识脉络 2、领略专家级大型开发项目,增强面试竞争力 3、深入 iOS 核心技术与原理,从源头上掌控新技术 4、精美手绘图解知识点帮助你轻松学习

周报编辑均已购买,来不及了快上车!!原价 ¥99,上新优惠 ¥68,赶快扫码直接订阅。通过以下链接购买的读者微信添加 AwayZ_T 或 Damonwong2,我们会返现 10元小红包,并邀请你进入我们老司机周报的读者群,一起学习戴铭老师的 iOS 进阶教程~

点我试读或购买「iOS 开发高手课」,快上车~

另外,我们在微博上发起了一个福利活动,赠送老司机定制 Logo T 恤衫和「iOS 开发高手课」,欢迎大家点我参与~

新闻

🌟 刚刚,阿里宣布开源 Flutter 应用框架 Fish Redux!

闲鱼团队是国内最早开始大规模使用 Flutter 的大公司团队,也是国内现在 Flutter 风潮的引领者。

在上周,闲鱼团队刚刚开源了名为 Fish Redux 的基于 Redux 数据管理的组装式 Flutter 应用框架,旨在解决大型复杂应用中的页面状态管理以及 UI 组件的复用等难点。

对于想要实践 Flutter 于大型应用的团队及开发者们来说,值得学习参考。

文章

🌟 🐕 庖丁解牛!深入剖析 React Native 下一代架构重构

去年六月,Facebook 宣布要重构 React Native。时至今日,开发团队取得的一些进展已经非常值得我们期待和持续关注了。本文通过分析源码仔细介绍了 RN 的重构设计思路和后续业务开发适配注意点,解释了新技术方案在解决性能问题上的优势,同时描述了官方对以后组件开发维护的一些规划,对保持社区的活跃性、提升框架集成使用体验和加快组件迭代速度等都有很大的帮助。

🐕 没有 AST, IDE 中的错误提示、自动补全、重构、语法检查......都玩不转了

当下的软件开发,实际上并不需要我们了解许多编译原理相关的知识。但编译原理作为一门计算机经久不衰的基础课程,自然有它存在的价值。其中的 parser 部分就值得好好看一看,这会在我们遇到相关的需求时候,如排版布局,想自己搞一套 DSL 等都会很有帮助。本文讲了 AST (抽象语法树)是如何工作的,虽然是以 JavaScript 的代码举例,但原理其实是通用的。

🐕 How to integrate image recognition in iOS apps

本文介绍了如何在 iOS 应用程序中集成图像识别,文章作者介绍如何使用 Microsoft Custom Vision 构建 CoreML 模型,以便能够识别照片中的对象以及如何在 iOS 应用程序中使用它。您需要对 iOS 开发和 Swift 有基本的了解才能阅读这篇文章。

🐕 The Xcode Build System

作者从 Xcode 的编译系统组件( 插件,平台组件,工具链 ),工程文件( pbxproj 文件,文件引用 ) 编译环境( 编译设定,Target,xccofig 文件 ),编译输出( 输出路径,输出文件 )等内容比较全面地介绍了 Xcode 的编译系统。读者阅读后可以对 Xcode 的编译系统有更加全面的认识。

🐕 Swift Code Formatters

最近几天,Swift 社区一直在讨论 Tony AllevatoDave Abrahams 关于 Swift 编码风格指南和格式化工具 的提案。

Mattt 专门在 NSHipster 撰文对社区现有代码格式化工具进行比较,包含 SwiftFormatSwiftLintPrettier with Swift Pluginswift-format (proposed),分别从格式化结果及效率两个角度进行对比。

🐢 从源码解析 Swift 弱引用

弱引用的深层实现机制在 Objective-C 中,就让很多同学觉得云里雾里,那在 Swift 中又如何呢?和 Objective-C 中的实现又有何异同呢?作者通过研读源码,给我们深入剖析了 Swift 弱引用机制的实现方式,并比较了和 Objective-C 中的异同,非常值得我们借鉴学习。相关阅读:Friday Q&A 2017-09-22: Swift 4 Weak References

🐢 一步一步教你实现 iOS 音频频谱动画

当我们在听音乐的时候,总能看到音频频谱随着优美的音乐而跳动,那么有没想过这样的动画如何实现?

本文主要介绍了脉冲编码调制(PCM)基本音频处理概念;AVAudioEngine 音频播放和 AVAudioPCMBuffer 频谱数据的获取、计算、处理、音频动画绘制;频谱动画优化:锯齿消除、闪动优化等。

作者通过一步步探索最终实现完美的音频频谱动画,感兴趣的同学点击这里阅读源码,相信一定会有所收获。

🐕 已开源|码上用它开始 Flutter 混合开发——FlutterBoost

咸鱼团队在国内 Flutter 的探索上一直以来都是走在业界前列。近期,咸鱼技术团队开源了 Flutter 的混合开发框架 FlutterBoost。我们知道,在现有的工程中直接换成 Flutter 开发具有很高的成本以及风险,毕竟对于一些稍大些的工程,有些代码的业务逻辑已经很复杂了。所以,咸鱼团队基于对现状的考虑,采用 Native -> Flutter 渐进式的迁移方式,并将框架开源,对于想要在旧有工程上采用 Flutter 的同学可以看一下。

🚧 🐎 How to build a simple tracker blocker for iOS

跨网站追踪是一种广告商用于搜集用户信息的方式,Apple 作为一家注重用户隐私的公司,在 iOS 里内置了 Content Blocker 等功能帮助我们不被追踪。

这篇文章就教我们如何使用 Content Blocker 和第三方黑名单来搭建一个反追踪的插件,并且还提供了相关的网站以便我们进行测试。

🐕 Task-based concurrency in Swift

对一组有相互依赖的并行任务,OperationQueue,ReSwift,Future & Promise 都是常用的备选方案,但这些方案相对较重("heavy-handed"),作者基于 DispatchGroup 封装了一套轻量、简洁的 "Task-based" 的解决方案,推荐阅读。

工具

Localization in Swift like a Pro

你是否仍在用几年前的方式进行本地化?你知道有更好的方法吗?本地化一直令人痛苦,但阅读这篇文章后,你会发现它并不是那么糟糕。本地化的同步更新 Xcode 并不支持,但你可以使用 BartyCrouchSwiftGen 这些工具来解救你。

XCSnippets

合理的使用代码片段可以有效提高你的 Coding 效率。XCSnippets 工具可以让你使用命令行方便的将 .codesnippet 从 Git 仓库安装到 Xcode。你还可以使用作者开源的代码片段仓库 XCUISnippets 或编写并开源自己的代码片段。

代码

🌟 MVVM-TemplateProject

用 Swift 实现 MVVM 的 Demo 项目,可以同时配合作者关于 MVVM 的 3 篇文章学习,适合新手入门。

  1. How to implement MVVM pattern in Swift from scratch
  2. Unit Testing your MVVM architecture in Swift
  3. How to integrate RxSwift in your MVVM architecture

Nantes

著名的 UILabel 替代库 TTTAttributedLabel 的 Swift 复刻版,支持 UILabel 的及 TTTAttributedLabel 所增添的新特性,支持 iOS 8.0+。

音视频

ggtalk | 如何(连续两次)获得 WWDC Scholarship

新的一期 ggtalk 邀请到了 @ApolloZhu 来聊聊 WWDC Scholarship,WWDC Scholarship 是苹果的一个类似奖学金的奖项,申请的学生靠提交一个极具创意的 playground 的作品来参与评选,如果获奖则可以获得免费参加 WWDC 的机会,当然餐食和酒店也是包含了的。Apollo 目前还是高中生,但已经连续获得两次 WWDC Scholarship,这次分享里他谈了申请的一些技巧以及整个过程中有趣的体验。对 WWDC 感兴趣的童鞋不容错过。

内推

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

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

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

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

关注我们

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

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

本期编辑

@四娘@享耳先森@Damonwong@折腾范儿_味精@张嘉夫@Parsifal@aaaron7@kyo@tom510230@anotheren@水水@looping@老老老老老老老驴@小非86@邦ben@红纸@含笑饮砒霜@JimQ@老峰@zvving@J_Knight_

说明

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

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