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

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

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

新闻

从 iOS 11.3 开始 App Store 的评价终于可以排序了[1]

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

Apple Reports First Quarter Results[2]

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

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

Apple 宣布因信号问题召回部分 iPhone 7[3]

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

Transporter 支持上传 App 预览信息了[4]

Apple 官方提供的分发工具 Transporter 现在支持上传 App 预览信息了,具体细节请参考 Transporter 用户指南[5] 和 App 元数据规范[6],注意这两个文档都有中文版。

文章

数据结构 & 算法 in Swift (一):Swift基础和数据结构[7]

学习通用性知识,突破技能瓶颈,@J_Knight_[8] 开始《数据结构与算法分析 -- Swift 语言描述》的连载.

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

???? Learn iOS Programming from Top Swift Articles of 2017[9]

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

Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好?[10]

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

Swift Tip: OpaquePointer vs. UnsafePointer[11]

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

最近很火的 Safe Area 到底是什么[13]

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

Pragmatic iOS Development: In defence of MVC[14]

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

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

Writing declarative code using Result Extensions[15]

给 Result 类型[16]写 Extension 来编写声明式代码,创建高度灵活的代码和声明式 API,易于维护、阅读和测试。

Model-View-Controller without the Controller[17]

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

Swift Algorithm Club: Hash Tables[18]

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

工具

Transformer:EASY iOS NSAttributedString![19]

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

SwiftAI - Generate Model class from JSON[20]

一个 Xcode 插件(也有独立 App),可将 JSON 转换成 Model,支持 CodableHandyJSON

代码

谷歌开源了一个 Promise 框架[21]

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

Swift Design Patterns[23]

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

内推

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

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

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

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

关注我们

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

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

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

说明

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

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

参考资料

[1]

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

[2]

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

[3]

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

[4]

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

[5]

Transporter 用户指南: https://help.apple.com/itc/transporteruserguide/

[6]

App 元数据规范: http://help.apple.com/itc/appsspec/

[7]

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

[8]

@J_Knight_: https://weibo.com/u/1929625262

[9]

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

[10]

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

[11]

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

[12]

Unsafe Swift: Using Pointers And Interacting With C: https://www.raywenderlich.com/148569/unsafe-swift

[13]

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

[14]

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

[15]

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

[16]

Result 类型: https://github.com/antitypical/Result

[17]

Model-View-Controller without the Controller: https://www.cocoawithlove.com/blog/mvc-without-the-c.html

[18]

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

[19]

Transformer:EASY iOS NSAttributedString!: https://github.com/andresinaka/transformer

[20]

SwiftAI - Generate Model class from JSON: https://github.com/hhfa008/SwiftAI

[21]

谷歌开源了一个 Promise 框架: https://github.com/google/promises

[22]

无法用 Cocoapods 集成: https://github.com/google/promises/issues/11

[23]

Swift Design Patterns: https://www.hackingwithswift.com/store/swift-design-patterns

相关文章: