Releases: SwiftOldDriver/iOS-Weekly
老司机 iOS 周报 #10 | 2018-03-12
老司机 iOS 周报,只为你呈现有价值的信息。
新闻
3 月 7 日这一夜,黑客耍了所有人
币圈本周最佳!虽然只是币安 Binance 交易所被黑,并不是 BTC 本身的缺陷,但是比较讽刺的是:币圈和链圈都在一边吹捧去中心化,一边又通过中心化的交易所炒币。真可以说是嘴上笑嘻嘻,心里 MMP...
文章
Quick Guide To Property Animators
现在至少有三种方式来实现视图动画。从最早的 begin/commit,到 iOS 4 的 block API,以及从 iOS 10 开始的 property animators。如果你了解基于 block 的视图动画 API 但不熟悉更复杂的 property animators,这篇指南会为你介绍它们之间的异同。
🚧 Designing iOS architecture: Motivation
非常特别的一篇文章,文章在谈架构,但是文章里并不介绍具体架构。非常简洁的介绍了为什么需要设计架构,以及一个架构的设计过程应该是怎么样。
稀土掘金翻译计划 TensorFlow Docs 中文版
TensorFlow Docs 是由掘金翻译计划实时维护的 TensorFlow 官方文档中文版,维护者为全球各大公司开发人员和各著名高校研究者及学生。现已完成 TensorFlow V1.4 官方中文文档,译者团队正在向 TensorFlow V1.6 官方中文文档更新,掘金翻译计划欢迎大家的加入。
iOS 性能优化的探索
文章整理了常见的 UI 性能优化的方法。但是每一点都没有深入的展开略遗憾。
技术面试需要掌握的基础知识整理
这个项目对技术面试常会涉及到的基础知识进行了搜集整理。与网上零散的文章资料相比,它更系统与全面,每部分都是作者根据自己所得所思细心整理。相信在这个招聘热季大家都能从这里得到帮助。
The power of sets in Swift
本文对 Swift 中 Set 的一些鲜为人知但非常强大的特性进行了举例介绍,我们可以利用这些特性在某些情况下获得性能更好或可读性更高的代码。
代码
Repeat - Modern alternative to NSTimer in Swift
Swift 中的 Timer 需要提供 @objc 修饰的方法,这让人并不愉快,更别提 Timer 本身的诸多问题, 如 强引用 target,依赖 Runloop,不支持闭包等。
你需要一个更为优雅的计时器,Repeat 基于 GCD 的 DispatchSource,实现一个 Swift 风格的轻量级计时器。
原理:DispatchSource 用于监听系统底层事件的发生,DispatchSourceTimer 会创建 Timer 事件对应的 dispatch source,然后给这个 source 指定一个闭包,指定一个 Dispatch Queue。当 source 监听到 Timer 事件时,就会将该闭包自动加到 queue 中执行。
Resumable Assert
写代码的过程中或多或少都会遇到一些地方 assert
或者 fatalError
了,但我们却无法在当下马上修复它,这个时候可能我们只能先注释掉这些防御代码,重新编译运行,恢复到一个能继续当前任务的状态。
但我们真的无能为力吗?Google 团队给我们带来了这么一个工具,就像它的名字 Resumable Assert —— 可被恢复的断言,中断在断言的时候,我们可以在 debugger 里恢复运行,不需要修改任何代码。并且如果你是使用 Swift 的话,可以借助 Swift 的 Module 设计,直接在 module 内重写掉标准库里的 assert
方法,无需改动一行代码就可以把项目里的 assert
都变成可恢复的 😈。
书
Continuous Delivery for Mobile with Fastlane
你还在手动打包、上传 App 吗?是时候试试 Fastlane
了。本书将带你了解 Fastlane
的方方面面:如证书管理、TestFlight 管理、如何与现有的 CI
系统结合。另外,Fastlane
的 官方文档 也是非常好的快速上手资源。
本期编辑
@没故事的卓同学,@四娘,@mmoaay,@享耳先森,@EyreFree,@Damonwong,@折腾范儿_味精,@张嘉夫,@AidenRao,@Parsifal
说明
🚧 表示需翻墙,🌟 表示店长推荐
老司机 iOS 周报 #1 | 2018-01-01
老司机 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 的相关内容。