老司机 iOS 周报 #3

5,138 阅读6分钟

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

新闻

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

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

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

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

微信着手封堵 Universal Link

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

Announcing Realm Cloud: Realm Platform as a Service Beta

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

文章

移动 APP 网络优化概述

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

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

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

WCDB 源码解析

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

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

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

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

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

iOS 9 之后 NotificationCenter 还需要 removeObserver 吗?

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

Xcode 9 里一些实用的 URL

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

开源项目挣钱实用手册

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

Swift Non-Nil Values In An Array Of Optionals

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

Write your scripts in Swift with Beak

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

工具

create dmg

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

typewriter

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

AutoPacking-iOS

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

Step by step – The story about a code bookmarking tool

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

thefuck

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

代码

XLForm

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

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

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

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

iOS 性能优化合集

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

CollectionViewSlantedLayout

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

React Native 应用开发实例解析

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

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

音视频

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

51 期聊了苹果的降频门。

Swift Talk #82 Refactoring Imperative Layout Code

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

招聘

36氪: iOS Leader

北京 D 轮,使用 Swift 开发哦。

流利说: 资深 iOS 开发

上海,使用 Swift 开发,业内口碑巅峰。感兴趣微博联系 hr: JaniceWU贾尼丝

hr 表示:

我们也有很多不足的,比如说始终因为要求太高招不到足够的人。

基础架构开发工程师

B 站搬到新地方后业务依然迅速发展。喜欢 B 站的朋友可以试试。

喜马拉雅 iOS leader

上海 D 轮。

本期编辑

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

说明

🚧 表示需翻墙