第三期的周报如愿以偿的在周一和大家见面了。前两期的时候因为刚开始做不知道能否做到每周一更。小伙伴们在磨合了两周之后也互相有了默契。希望我们能够继续陪伴大家一起成长。
在掘金上我们也开通了专栏,如果是掘金的用户欢迎关注我们:老司机 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)会推送消息,欢迎关注。
同时也支持了 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