老司机 iOS 周报 #3 | 2018-01-15

第三期的周报如愿以偿的在周一和大家见面了。前两期的时候因为刚开始做不知道能否做到每周一更。小伙伴们在磨合了两周之后也互相有了默契。希望我们能够继续陪伴大家一起成长。

在掘金上我们也开通了专栏,如果是掘金的用户欢迎关注我们:老司机 iOS 周报[1]

新闻

国区 iCloud 账户将转由「云上贵州」运营[2]

2018 年 2 月 28 日起,国区 iCloud 账户将转由「云上贵州」运营。如果想要把 iCloud 的东西继续存在美区,可以参考少数派的文章:不想停用 iCloud?不妨迁移数据到其它 Apple ID [3]

英特尔处理器打补丁后,性能并没有下降很多[4]

标题已经说明一切,为了照顾强迫症我随手打几个字给你。

微信着手封堵 Universal Link[5]

恭喜微信离成为操作系统的目标又近了一步。

Announcing Realm Cloud: Realm Platform as a Service Beta[6]

Realm 云服务新版本开始第一轮公测啦!只需要简单的配置即可接入,现在就来试试吧:申请试用 Beta 版[7],只有 500 个名额哦~申请通过的话还能以 5 折的价格购买 1 年的 Realm 云服务。

文章

移动 APP 网络优化概述[8]

从速度、弱网、安全三个方面介绍了移动场景中的网络优化。概念清晰易懂,bang 的文章一如既往值得一读。

接手一个刚起步的 iOS 项目后我做了什么[9]

过去半年我负责一个刚起步的 iOS 项目后的工作实践总结。

WCDB 源码解析[10]

介绍了微信 WCDB 的代码实现,有不少数据库的知识点。

[译]2017 Swift 单元测试文章资源精华[11]

medium 上有人整理了 2017 年单元测试相关的优秀视频文章。非常值得收藏,所以我翻译了一份资源的简介。

[译]用Buck构建混合语言iOS项目[12]

Buck 是 Facebook 开源的编译工具,可以提高编译时间。用来编译纯 Swift 或者纯 OC 项目都没问题,然而编译混合语言的项目则会碰到很多问题。Airbnb 在这篇文章里介绍了他们是如何解决 Buck 在混编项目中使用的问题。

iOS 9 之后 NotificationCenter 还需要 removeObserver 吗?[13]

iOS 9 之后,通过 selector 方式 addObserver(_:selector:name:object:) 不用显式 remove,但使用 block addObserver(forName:object:queue:using:) 依然需要在 observer 销毁之前主动调用 removeObserver。文中还给出了一种 Automating unregistering 方案。

Xcode 9 里一些实用的 URL[14]

大家都知道 Xcode 9 里优化了代码版本控制的功能,甚至可以直接在 GitHub 上使用 Xcode 打开项目,这个功能主要是通过 URL 实现的,URL 并不只是支持了跳转项目的功能,这篇文章就介绍了很多其它实用的路径。

开源项目挣钱实用手册[15]

整理了开源项目获得收入的各种方式。

Swift Non-Nil Values In An Array Of Optionals[16]

如何优雅的过滤数组中值为 nil 的数据?你可以试试 flatMap。

Write your scripts in Swift with Beak[17]

用 Swift 也可以轻松愉快地写脚本啦,当然,首先需要安装 Beak[18]

工具

create dmg[19]

dmg 是 macOS app 常用的分发格式。一行命令将你的 macOS app 打包成 dmg 格式。

typewriter[20]

当不同系统之间进行数据交换时,往往要有一套特殊的数据交换格式或协议来作为中间人,比较典型的就是 JSON 和 ProtocolBuffer。而把中间数据格式转换为具体数据,实际上就是将中间数据格式进行语法翻译,翻译成系统中对应语言的代码,typewriter 就是上述问题在客户端领域的翻译器,纯 Swift 实现,值得学习和使用。

AutoPacking-iOS[21]

在实际的 iOS 开发、测试、发布过程中,需要不停的打各种包用于各个流程,开发人员忙于新需求实现的同时,还要花费大量时间在打包这种重复且没有意义的事情上,十分浪费精力。AutoPacking-iOS 为我们解决了这个问题,配置好参数后可以一键打包上传到蒲公英、fir.im 等内测网站或 App Store,方便快捷。

Step by step – The story about a code bookmarking tool[22]

这是一个代码标签工具,可以通过简易的流程图来描述代码的行为,然后跳转到对应的代码,目前支持  Xcode / Android Studio / Sublime 等编辑器。

thefuck[23]

控制台执行命令经常报错却不能自动执行某些操作一点也不智能?一定是没有调教好,试试 thefuck,大幅提升工作效率!

代码

XLForm[24]

XLForm 是一个 iOS 表单页面的一个解决方案。可以解决各种复杂交互的表单页面,功能十分强大。用 OC 实现,代码质量很高,其设计思想也很值得学习,是一份很不错的源码学习内容。

比较有意思的一点是,XLForm 的 Swift 版本 Eureka 并不是单纯的翻译 XLForm,而是用一种全新的方式去实现相同的功能,通过大量的函数符重载,让写出来的代码特别清晰。

但是,我觉得对于大部分的 app 来说,没有太过于复杂的表单需求,所以没有太大的必要引用这个库去实现一些简单的表单页面。会给人一种,用复杂的工具去解决简单的问题的感觉。

当然,如果是一个类似系统设置的 app 来说,使用 XLForm 一定是首选之一。

iOS 性能优化合集 [25]

关于 iOS 性能优化梳理:基本工具、业务优化、内存优化、卡顿优化、布局优化、电量优化、安装包瘦身、启动优化、网络优化等。

CollectionViewSlantedLayout [26]

CollectionViewSlantedLayout 是一种 UICollectionView 的布局,实现了倾斜卡片的布局样式。同时支持纯代码使用和 Xib 配合使用。

React Native 应用开发实例解析[27]

共五章,前两章介绍 React Native 的历史发展和基础知识,包括原生组件和第三方库;余下三章则分别介绍三个企业应用——Myagi、TinyRobot 和 Fixt,探讨了当今业界使用 React Native 的方式,以及生产环境下需要注意的问题和相应对策。

适合想初步了解 RN 开发的开发者。

音视频

Checked #51: 准确表达与善意理解[28]

51 期聊了苹果的降频门。

Swift Talk #82 Refactoring Imperative Layout Code[29]

这一期的 Swift Talk 通过实现一个简易的 FlowLayout 来为我们介绍如何使用函数式去重构布局代码。

本期编辑

@没故事的卓同学,@四娘,@mmoaay,@享耳先森,@EyreFree,@Damonwong

内推

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

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

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

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

关注我们

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

老司机 iOS 周报 #3 | 2018-01-15

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

说明

???? 表示需某工具,???? 表示编辑推荐

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

参考资料

[1]

老司机 iOS 周报: https://juejin.im/user/5a52075e6fb9a01c9d31b107

[2]

国区 iCloud 账户将转由「云上贵州」运营: https://support.apple.com/zh-cn/HT208352

[3]

不想停用 iCloud?不妨迁移数据到其它 Apple ID : https://sspai.com/post/42766

[4]

英特尔处理器打补丁后,性能并没有下降很多: http://www.ifanr.com/965596

[5]

微信着手封堵 Universal Link: https://juejin.im/post/5a5371626fb9a01cb64ea37d

[6]

Announcing Realm Cloud: Realm Platform as a Service Beta: https://realm.io/blog/realm-cloud-beta-waitlist/

[7]

申请试用 Beta 版: https://cloud.realm.io/

[8]

移动 APP 网络优化概述: http://blog.cnbang.net/tech/3531/

[9]

接手一个刚起步的 iOS 项目后我做了什么: https://juejin.im/post/5a5625ddf265da3e3f4c9651

[10]

WCDB 源码解析: http://xiangwangfeng.com/2018/01/08/WCDB-源码解析/

[11]

[译]2017 Swift 单元测试文章资源精华: https://juejin.im/post/5a58738ff265da3e4b76b62d

[12]

[译]用Buck构建混合语言iOS项目: https://www.zybuluo.com/zb5228126/note/844203

[13]

iOS 9 之后 NotificationCenter 还需要 removeObserver 吗?: https://oleb.net/blog/2018/01/notificationcenter-removeobserver/

[14]

Xcode 9 里一些实用的 URL: https://cocoaengineering.com/2018/01/01/some-useful-url-schemes-in-xcode-9/

[15]

开源项目挣钱实用手册: https://github.com/wizicer/FinancialSupportForOpenSource

[16]

Swift Non-Nil Values In An Array Of Optionals: https://useyourloaf.com/blog/swift-non-nil-values-in-an-array-of-optionals/

[17]

Write your scripts in Swift with Beak: https://www.hackingwithswift.com/articles/47/write-your-scripts-in-swift-with-beak

[18]

Beak: https://github.com/yonaskolb/Beak

[19]

create dmg: https://github.com/sindresorhus/create-dmg

[20]

typewriter: https://github.com/typwr/typewriter

[21]

AutoPacking-iOS: https://github.com/stackhou/AutoPacking-iOS

[22]

Step by step – The story about a code bookmarking tool: http://dyna.mo/bookmarking-tool-for-code/

[23]

thefuck: https://github.com/nvbn/thefuck

[24]

XLForm: https://github.com/xmartlabs/XLForm

[25]

iOS 性能优化合集 : https://github.com/skyming/iOS-Performance-Optimization

[26]

CollectionViewSlantedLayout : https://github.com/yacir/CollectionViewSlantedLayout

[27]

React Native 应用开发实例解析: https://www.amazon.cn/dp/B077S8V6GQ

[28]

Checked #51: 准确表达与善意理解: http://checked.fm/51

[29]

Swift Talk #82 Refactoring Imperative Layout Code: https://talk.objc.io/episodes/S01E82-refactoring-imperative-layout-code

相关文章: