# 老司机 iOS 周报 #6 | 2018-02-05

![ios-weekly](../assets/ios-weekly.png)

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

## 新闻

### [从 iOS 11.3 开始 App Store 的评价终于可以排序了](https://juejin.im/post/5a6e79e9f265da3e33049550)

从 iOS 11.3 开始，用户可以根据四个分类来给 App Store 评价排序，分别是“最有帮助”、“最高评价”、“最低评价”和“最新发表”。由于 iOS 11 之前的版本没法给 App Store 评价排序，所以这个改动会很受欢迎，特别是考虑到目前 App Store 会给一部分用户显示最早来自 2008 年的过时的、不相关的评价。

### [Apple Reports First Quarter Results](https://www.apple.com/newsroom/2018/02/apple-reports-first-quarter-results/)

苹果公司发布 2018 财年第一季度财报，财报显示，苹果第一财季营收 883 亿美元，较上年同期的 784 亿美元增长 13%，净利润为 201 亿美元，较上年同期的 179 亿美元增长 12%。

相比 2017 年，iPhone 的销量从 7829 万，下降至 7732 万。但平均销售价格从 695 美元增至 796 美元，营收 615 亿美元，较上年同期的 544 亿美元增长 13%。

### [Apple 宣布因信号问题召回部分 iPhone 7](https://www.apple.com/cn/support/iphone-7-no-service/)

Apple 已经确认，由于主板上的某个组件发生故障，一小部分 iPhone 7 可能会在状态栏中显示「无服务」。这些受影响的设备生产日期在 2016 年 9 月至 2018 年 2 月之间，售出地为中国内地、中国香港、日本、中国澳门和美国，Apple 将免费维修。

### [Transporter 支持上传 App 预览信息了](https://developer.apple.com/news/?id=01312018)

Apple 官方提供的分发工具 Transporter 现在支持上传 App 预览信息了，具体细节请参考 [Transporter 用户指南](https://help.apple.com/itc/transporteruserguide/) 和 [App 元数据规范](http://help.apple.com/itc/appsspec/)，注意这两个文档都有中文版。

## 文章

### [数据结构 & 算法 in Swift （一）：Swift基础和数据结构](https://juejin.im/post/5a7096fa6fb9a01cb64f163b)

学习通用性知识，突破技能瓶颈，[@J_Knight_](https://weibo.com/u/1929625262) 开始《数据结构与算法分析 -- Swift 语言描述》的连载.

此文作为开篇，将从 Swift 基础、数据结构开始。讲解一下后续连载中所涉及到的 Swift 语法知识，以及用 Swift 来实现几个简单的数据结构。

### 🚧 [Learn iOS Programming from Top Swift Articles of 2017](https://medium.mybridge.co/learn-ios-programming-from-top-swift-articles-of-2017-811de7273936)

MyBridge AI 从 15000 篇文章根据关键词 Swift 挑选出的最受欢迎的 45 篇文章。

### [Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好？](http://blog.csdn.net/carson_ho/article/details/70568606)

Protocol Buffer 是由谷歌开发并开源。通过两端约定好报文格式，数据传输过程中直接编码成二进制包。因为数据不再自描述，所以数据就小了很多，因此传输效率比 XML、Json 都高很多。本文详细介绍了 Protocol Buffer 提高序列化性能采取的策略和编码规则。

### [Swift Tip: OpaquePointer vs. UnsafePointer](https://www.objc.io/blog/2018/01/30/opaque-vs-unsafe-pointers/)

`objc.io` 新文章，介绍了为什么将 C 类型导入到 Swift 时有些指针是 `OpaquePointer`，有些又是 `UnsafePointer<struct_type>`。如果你在开发中 Swift 需要与 C 交互的话，建议结合 [Unsafe Swift: Using Pointers And Interacting With C](https://www.raywenderlich.com/148569/unsafe-swift) 一起看。

### [最近很火的 Safe Area 到底是什么](https://juejin.im/post/5a7178116fb9a01c9d322d91?utm_source=gold_browser_extension)

iOS 11 出来很久了，适配的文章也很多，第一眼看到的时候我会觉得这个时候来写已经挺晚了，但看完之后觉得总结得是最好的，配图跟代码示例都有，重点的地方有加粗展示出来，这篇绝对值得 Mark 下来。

### [Pragmatic iOS Development: In defence of MVC](https://www.netguru.co/codestories/pragmatic-ios-development-in-defence-of-mvc)

社区里广为流传着`MVC 意味着非常臃肿的视图控制器`，但其实这只是 5 年前 Twitter 上的一个玩笑。

在开发中，大量的元素都需要一个外部委托，如果它们都委托给视图控制器，控制器将迅速的膨胀起来。但我们可以尝试另一种做法，控制器将任务委托给单独的第三方对象，自身不包含任何业务逻辑，只负责根据数据提供 UI 逻辑交互。如此便能使控制器保持小巧灵活。

### [Writing declarative code using Result Extensions](https://medium.com/@tyronemichael/writing-declarative-code-using-result-extensions-1ec45474101f)

给 [Result 类型](https://github.com/antitypical/Result)写 Extension 来编写声明式代码，创建高度灵活的代码和声明式 API，易于维护、阅读和测试。

### [Model-View-Controller without the Controller](https://www.cocoawithlove.com/blog/mvc-without-the-c.html)

觉得 MVC 不好用，想找点新思路？本文详细介绍了作者对传统 MVC 模式进行改造从而构建一种全新 ModelAdapter-ViewBinder (MAVB) 设计模式的历程，并提供了相应示例代码，对架构有兴趣的同学绝对不要错过。

### [Swift Algorithm Club: Hash Tables](https://www.raywenderlich.com/180171/swift-algorithm-club-hash-tables?utm_source=raywenderlich.comWeekly)

英文的 swift 算法文章，介绍 Hash Table 的基本原理，A hash table is nothing more than an array，文章从数组出发，介绍哈希值算法，数组 Index 计算，处理 index 冲突，值检索等方面，从0用 swift 教你一步步实现一个 hash table

## 工具

### [Transformer：EASY iOS NSAttributedString!](https://github.com/andresinaka/transformer)

一个在线的富文本编辑器，实时编辑富文本，然后转换生成 Swift 或 Objective-C 代码，目前支持 `文字粗细`、`划线样式`、`文字大小`、`前景色/背景色`、`文字对齐` 等功能，方便好用。

### [SwiftAI - Generate Model class from JSON](https://github.com/hhfa008/SwiftAI)

一个 Xcode 插件(也有独立 App)，可将 JSON 转换成 Model，支持 `Codable` 和 `HandyJSON`。

## 代码

### [谷歌开源了一个 Promise 框架](https://github.com/google/promises)

标准的 Promise 库，谷歌出品，质量肯定是有保证的，具有轻量，高性能，安全，测试完备的优点。核心是使用 Objective-C 编写的，Swift 的版本是在 Objective-C 的基础上封装了一层（需要注意的是 Swift 版本暂时还[无法用 Cocoapods 集成](https://github.com/google/promises/issues/11)）。

## 书

### [Swift Design Patterns](https://www.hackingwithswift.com/store/swift-design-patterns)

Hacking with Swift 刚刚发布的 Swift 设计模式书籍 -《Swift Design Patterns》。售价 40 刀，目前包含了 24 个常见的设计模式。附源码，而且会随着 Swift 版本的更新免费升级。属于最佳实践类型的书籍，价格在英文原版书籍中也不算贵，有钱的童鞋可以买了看看。

## 本期编辑

[@没故事的卓同学](https://weibo.com/1926303682/profile)，[@四娘](https://kemchenj.github.io)，[@mmoaay](https://weibo.com/u/1302422271)，[@享耳先森](https://github.com/iblacksun)，[@EyreFree](https://weibo.com/eyrefree777)，[@Damonwong](https://weibo.com/damonone)，[@折腾范儿_味精](http://weibo.com/agvicking)，[@张嘉夫](https://weibo.com/2949394297)，[@AidenRao](https://weibo.com/AidenRao)

## 说明

🚧 表示需翻墙
