老司机 iOS 周报 #1

2,492 阅读5分钟

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

有建议或者有信息推荐可以到我们 github 下面提 issue。

新闻

致广大用户关于 iPhone 电池及性能的说明

苹果对电池老化会导致 iPhone 性能下降做的沟通说明。表示 从来没有、也永远不会通过任何手段,来有意缩短任何 Apple 产品的使用寿命,更不会降低用户体验来迫使大家升级设备。为了安抚大家的不满,苹果将更换电池的费用下调了 390 元,从 608 元降到 218 元。不过这个降价不是永久性的,只持续到 18 年 12 月。

Swift 快要可以和 Python 无缝交互了

这是 Chris Lattner 大神到 Google 之后的第一个提案,让 Swift 可以和 Python 无缝交互,Chris 每次提案基本上都会带上 Demo,这一次也不例外,只用了不到一千行代码就把交互逻辑给实现了出来🤷‍♂️,大家可以直接下载这个 playground 试一下用 Swift 写 Python 是什么感觉。

另外 Chris 还提出使用一套 DynamicMemberProtocol 去优化了 Python 交互的语法, 与 Python 的交互都是依赖于字符串,画风大概是这样的 let a = np.call(member: "arange", args: 15).call(member: "reshape", args: 3, 5),如果实现了 DynamicMemberProtocol 的话,就可以在 Swift 里像 Python 代码一样调用 Python 的方法 np.arange(15).reshape(3, 5),编译器不会给遵循了这个协议的对象做静态检查,但这本质上只是一个语法糖,编译时还是会转化为前者的格式去调用。

苹果宣布收购 Buddybuild

Buddybuild 是著名的自动化 CI 托管服务平台,苹果收购后 Buddybuild 公司将会加入 Xcode 团队。期待 Xcode 对 CI 的支持将会更进一步。

Swift Weekly Brief 宣布停更

Jesse Squires 宣布停止更新 Swift Weekly,一直以来这个 News Letter 都是我了解 Swift 开发进度最主要的途径,现在要停更了,确实很可惜。

Jesse 提到停止更新的理由,主要是因为当初开始 Swift Weekly 的时候,Swift 刚刚开源,对于功能和设计的讨论非常非常多,并且 Mailing List 这种形式让人很难找到有价值的内容,所以这样一个 News Letter 在当时是非常有意义的。但现在 Swift 已经逐渐成熟,社区里的讨论变得越来越深入,而且 Swift 最近还从 Mailing List 迁移到了论坛上,相关资讯的获取已经变得越来越方便了,Swift Weekly 的存在价值也已经大不如前了,所以才打算停止更新。

但停更只是个人意义上的停更,Jesse 欢迎社区的人接手过去继续更新,并且在原文介绍了一系列接手的注意事项。

Apple 更新 App Store Review Guidelines,增加 VPN 和 loot boxes 等条款

Apple 于 2017.12.21 更新了其 App Store Review Guidelines. 主要变化集中在以下几个方面:

  • 新上架 App 引入 pre-order 机制
  • 虚拟物品抽奖必须公布各项概率(loot boxes)
  • VPN 类应用如需在特定地区发布,必须提供相应许可信息
  • 符合特定前提下,允许通过模板生成的 App 上架发布

LiberiOS jailbreak for iOS 11 officially released, includes support for the iPhone X

LiberiOS 正式发布 iOS 11.0 - 11.1.2 的越狱工具,包括对 iPhone X 的支持。

文章

iOS 知识小集

国内知名开发者 @南峰子 把过去微博上发出来的 iOS 开发知识整理了出来,发在了 GitHub 上,据介绍这一系列的微博已经有 1000w 的阅读量了!!!

Swift Tips

跟前面 iOS Tips 小集类似的项目,不同的是这个项目里讲的是一些 Swift 的小 Tips,里面 #7,#22 等技巧我都有实际用于项目中,推荐大家看一下。

Weak Arrays

objc.io 在这篇博客里简单介绍了在 Swift 中自定义弱引用数组的一种实现方式。

When and how to use Value and Reference Types in Swift

全面介绍了 Swift 中的值类型和引用类型的使用区别。

Building an enum based analytics system in swift

使用 enum 和 protocol 构建安全、高效、灵活的 Swift 事件统计系统。

Measuring Swift compile times in Xcode 9

对 Xcode 进行一些配置看看哪些 Swift 代码拖慢了你的编译速度。

工具

App Host

一个轻量级的包托管网站,app-host 主要用于 iOS 和 Android 的包管理,作用类似于fir.im,不同之处是可以自由部署在内网,方便了公司项目保密。并且代码开源也可以方便根据各自需求进行定制化开发。

XcodeGen

XcodeGen 是一个根据已有的代码文件 / 目录和简单的配置文件来生成 Xcode project 的开源工具,快速生成模板工程、将 .xcodeproj 从 Git 追踪中忽略、方便地和他人分享自己的工程配置等,无限可能,等你尝试。

代码

WCDB Swift

WCDB 是微信团队开源的 SQLite 数据库,近日放出 WCDB Swift 的 1.0 正式版,WCDB Swift 使用纯 Swift 编写,几乎不包含 Cocoa 的代码,且与 ObjC 版保持完全一致的功能。其基于 Swift 4.0 的 Codable 协议实现模型绑定,通过建立 Swift 类型与数据库表之间的映射关系,使得开发者可以通过类对象直接操作数据库。

虽然项目没有实际使用于微信中,但这只是第一步嘛,并且文章最后还表示测试用例的代码覆盖率已经达到了 91.34% 了🤑,所以大家真的可以考虑在项目中使用。

Task automation in Swift with Sake

iOS 还没有使用 Swift 语言编写的自动化工具,目前流行的都是采用 bash、ruby 编写的。于是作者尝试利用 Swift 写了 Sake。这个项目目前还处于早期。

Fluid Slider

Ramotion 出品的滑动控件。

微信跳一跳可以直接更改分数,POST 请求没有校验

v2ex 上也有获得微信小游戏跳一跳源码的讨论。

Swift 进阶

Swift 经典书籍《Swift 进阶》更新了 Swift 4 的相关内容。

本期编辑

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