老司机 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,支持 Codable 和 HandyJSON。
代码
谷歌开源了一个 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)会推送消息,欢迎关注。
同时也支持了 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