likes
comments
collection
share

老司机 iOS 周报 #30 | 2018-08-06

作者站长头像
站长
· 阅读数 1

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

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

新闻

新变化不多,但最新的 iOS 12 「剧透」了今年可能发布的新硬件 | 具透

在 iOS 12 的第四个公开测试版中,苹果可透露了不少新硬件的信息:比如支持双卡双待的 iPhone;支持 Face ID 的 iPad;支持无线充电的 AirPods 充电盒;以及 HomePod 将支持打电话。其他软件方面的改动也不少,具体还是仔细看看原文。当然,如果你问我自己能否瞧瞧固件里的秘密,IDAHopper 了解一下。

文章

🐕 Swift 4 弱引用实现

原文作者 Mike Ash,是知名博客 Friday Q&A 作者,现在是 Swift 团队一员。

2015 年的时候 Mike Ash 就已经介绍过 Swift 弱引用的实现了,这次 Swift 4.0 的对象内存布局做了一些调整,加入了 side table 去存放额外的对象信息,改变了弱引用的实现。文章还对 Objective-C 和 Swift 4 之前的旧实现做了对比分析。

🐕 如何在几十个 Repo 中游刃有余

本文对“研发效率”这个话题进行了非常深入的讨论,平时我们为了提升研发效率,会开发一些脚手架,工程模板等,但大多数时候都不会有量化指标去衡量,秉承“不谈目标的优化都是耍流氓”的原则,作者提出了一系列衡量项目迭代和发布时间的指标,来帮助衡量优化的目标。除此之外,还探讨了在复杂系统开发中保持高效开发的经验,很有价值。专注研发效能、工程架构的同学可以重点参考。

另外,作者陈天也是我很喜欢的程序员,经常会发表一些质量很高的技术文章,推荐大家关注他的公众号。

🐕 MessageThrottle Safety

MessageThrottle 是作者玉令天下开发的 Objective-C 节流限频组件,其原理基于 Hook 消息转发流程,在运行时应用了一套节流限频的规则。本文介绍了新版本中对于 hook 流程、多线程操作、规则管理的安全性实现细节。 本文是关于 MessageThrottle 的第四篇文章。前三篇如下:

🐎 Structuring Swift code

随着时间的流逝,几乎所有的 app 和框架都会变得更大、更复杂,所以维持一个稳定的、一致的架构就变得非常关键。这篇文章介绍了提升 Swift 项目架构的几个小技巧,包括"三个原则"(如果有三个相同类型的类、文件夹或文件,就将它们组合起来)、根据功能来组织架构的原则以及"侦查原则"(在改动代码库的时候时刻让文件处于更容易找到的位置)。

🐕 Flutter 的编译模式

Flutter 在 Google I/O 之后也算是火了一把,虽然之后能不能继续火下去也还是个未知,但是能多学习了解新东西总是有益无害。

蚂蚁金服的 stephenwzl 在自己的微信公众号写了一系列关于 Flutter 基础知识的文章,对于还在学习 Flutter 的人来说,比较有学习价值。

本文介绍了 Flutter 编译中的一些基本概念,阐释了基本的编译过程和不同平台上的区别。除了这篇文章,还可以参考学习一下他的其他文章。

🐎 Migrating an Objective-C class to Swift: a piecemeal approach

随着 Swift 越来越普及,很多人都会面临如何将 Swift 与已有的 OC 代码相结合的问题。对于一个已有的 OC 类,如果我们无法马上把它完全用 Swift 来重写,但是又想用 Swift 为它扩展功能,特别是添加不兼容于 OC 的存储属性(如带泛型的枚举类型),我们是无法把这个属性直接加到 OC 类定义里的。作者巧妙地做了一层简单的封装,轻松绕过了这个限制,相信对大家处理类似问题会有启发。

🐕 Never

Never 是 Swift 标准库中一个很特别的类型。在 SE-0102 中提出用 Never 去代替 @noreturn。在文中 Mattt 先介绍了 Never 这个特殊的类型是什么,紧接着以 Result<Value, Error: Swift.Error> 为例介绍了一个 Never 用于解决不可能发生的场景的实际应用的妙处。最后在文章的末尾,Mattt 还写了一些对未来的 Swift 中 Never 可以以一个 Bottom Type 的角色去实现更多的功能的期待。

🐕 JSON Web Token 入门教程

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文主要是介绍它的原理和用法。

对于用户认证来说,用户的 session 数据如果存在服务端,那对于服务器集群,或者是跨域的服务导向架构。session 数据的共享,会是一个比较麻烦的问题。 JWT 方案则是将不可篡改的 session 数据储存到客户端,每次请求再将 session 数据发回给服务端进行用户认证。不同服务器之间,不再需要进行 session 数据共享,比较容易实现扩展。

🐎 Scrollable UIStackView

对 UIScrollView 进行自动布局(Auto Layout)时需要设置两套约束,分别是 frame 和 content。设置 frame 很简单,跟普通的 view 操作一样;但是 content 就比较特殊了,自动布局引擎会通过子视图的大小自动调整 content,所以加到 UIScrollView 里的视图必须是已经指定大小或者能自动计算大小(intrinsic content size)的。

本文主要解释了把 UIStackView 加到 UIScrollView 进行自动布局时出现的一些棘手的问题,并实现了一个可滚动的高度自适应的 StackView。相信大家看完后,对如何使用自动布局处理滚动视图会有一个比较清晰的认识。

代码

PerfectAccelerators - 加速 Perfect Server Side Swift 开发

上期我们推荐了篇文章介绍 Perfect 开发体验,这次,给大家推荐一组 Perfect 封装库,可以帮助 Perfect 加速 Server Side Swift 开发。

音视频

ADDC 2018

ADDC 是 2018 年 7 月 4 日至 6 日在西班牙巴塞罗那举办的 App 设计师和开发者大会,这个大会的目的是给设计师和开发者提供一个开放的、包容的、合作的空间,让他们在一起碰撞想法,找到新的合作方式。ADDC 请到的嘉宾都是移动 app 领域的顶级开发者和设计师,这个 YouTube 频道收录了他们精彩的、具有启发性的演讲。

内推

北京-拉勾网招聘 iOS 工程师

拉勾团队目前需要一枚 iOS 大牛,负责公司核心产品功能的开发和维护。

北京-蚂蚁金服 招iOS/安卓/前端开发

蚂蚁金服招聘,负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。虽然招聘链接只给了 iOS 的 JD,但前端/安卓/iOS 都要,要求相近。有兴趣的同学欢迎将简历发送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一个邮箱) 或这微博私信 @折腾范儿_味精 了解情况。

编辑内推

关注我们

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

老司机 iOS 周报 #30 | 2018-08-06

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

本期编辑

@没故事的卓同学@四娘@享耳先森@Damonwong@折腾范儿_味精@张嘉夫@AidenRao@Parsifal@aaaron7@方秋枋tom510230anotheren水水looping@JasonYuh@老老老老老老老驴

说明

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

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