老司机 iOS 周报 #4

3,655 阅读8分钟

进行了四期的周报编辑后,目前参与编辑稳定在 7 个人。看到挺多人表示希望我们能够坚持下去,现在我们每人平均花几个小时就足够维护周报的内容,继续做下去应该问题不大。

欢迎来自百度的@折腾范儿_味精加入我们的编辑团队。

感谢来自饿了么的@mmoaay为老司机画的 logo,真是 666。

新闻

库克:将允许 iPhone 6 / 6s / 7 手动解除降速

持续发酵的苹果电池降频门,苹果再退一步。库克接受采访时表示会在系统中增加一项设置,用户可以禁用苹果为了保护电池而设的降频策略。最新的 11.2.5 测试版中已经可以查看电池状况。

微信打赏功能将在 iOS 上回归

在「微信公开课 Pro」的主题演讲中,张小龙表示打赏功能将回归,并将修改打赏机制,打赏金额将直接支付给内容创作者。

Apple 更新 App Store 网页预览界面

Apple 在 iOS 11 中对 App Store 进行重新设计,现在终于对网页版动刀,跟上 iOS 上的简洁和卡片式风格。

苹果预计下周修正文字讯息漏洞「ChaiOS」

跟之前的 iMessage 漏洞类似,收到一个特殊链接的短信之后,设备就会重启,主要是因为 iMessage 会自动加载网页信息生成预览界面,在这一个网页里嵌入几十万个不必要的字符就可以系统崩溃,据悉这个 bug 已经在 iOS 11.2.5 beta 6 里修复了。

文章

蜂鸟商家版 iOS 组件化 / 模块化实践总结

文章详实介绍了饿了么物流移动 iOS 开发组的 Swift / OC 混编项目「蜂鸟商家版」进行组件化 / 模块化改造的实践历程,有类似需要的同学可以参考一下。

iPhone X home button

iPhone X 用来替换物理 home 键的虚拟 home indicator,可能展示在任何一个 view 上,也展示在锁屏界面上,home indicator 背景颜色会根据背后展示的 view 而改变。这是怎么实现的呢?Sash Zats 深入底层来揭示秘密。

从 Aspects 源码中我学到了什么

作者分享了自己阅读 Aspects 代码之后的收获,另外博客里还有几篇 YYKit 的源码阅读分享,质量都很高。

iOS 如何进行网络测速

@Joy_xx 大佬的文章,主要分享了两种常见的网络测速方案。文章内容简短,只谈思路,不涉及技术细节。想做网络测速又没有思路的童鞋可以看看。

Useful Optional Extensions

文章分享了各种 Optional 的实用扩展。通过这些扩展,可以用更少的代码来实现判断非空、设置默认值、设置默认行为、处理异常、定义多个可选值之间的关系、判断执行以及条件过滤等功能。文章末尾还给了一个例子,通过代码对比的方式,鼓励大家使用扩展 Optional 的方式来实现业务逻辑。

WebAssembly 的那些事

文章介绍了 WebAssembly 这门在浏览器里跑编译后的字节码的神奇技术,可以把 C++ / Rust 编译成字节码下发给浏览器,进行高效的字节码运行,而非传统 JS 解释执行。文章还手把手教你亲自写一个 C,先编译成 asm.js,在生成 wasm 文件执行,也教你把Rust,编译成 wasm 执行。

objc - 编译 Runtime 源码 objc4-680 objc - 编译 Runtime 源码 objc4-706

从苹果开源网站上,我们可以找到很多有意思的开源项目。objc4 是其中一个,也即我们通常说的 Runtime 源码,我们遇到的 libobjc.A.dylib 就是用它编译出来的。

这两篇文章就是介绍如何将从苹果网站上下载的 Runtime 源码,创建工程进行编译,运行,调试,从而更深刻的学习和理解 Runtime 源代码的,并且文章中留有作者的 GitHub 可以直接下载可编译版的 2 套源码。

WKWebView 强大的新特性

越来越多的项目逐渐开始使用 WKWebView 进行网页展示,是否苦恼于 WKWebView 对于操作 Cookie 的天坑以及不支持 NSURLProtocol 的弊端?这篇文章介绍了 iOS11 的新 API 为你解决了这些问题,不仅包括操作 Cookie 的 WKHTTPCookieStore,处理自定义协议的 WKURLSchemeHandler,还有用于广告屏蔽的新 API WKContentRuleList

Building for the Blockchain(面向区块链开发)

在区块链上,你不需要部署任何中心化的服务器,这就意味着单点失败的风险为零。如果你的整个技术栈都是去中心化的,那么就不需要引入“可信”的第三方,而没有第三方则意味着可以 100% 对抗审查。区块链技术带来了数据开放的新机会,基于区块链的去中心化数据库未来可期。

YC 是著名的科技企业孵化机构。发布在 YC 官博上的这篇文章介绍了区块链技术对开发者的意义。

给 Bool 扩展一个 Toggle 方法

objc.io 介绍的小技巧,给 Bool 扩展一个 toggle 方法之后就可以避免 myVar.prop1.prop2.enabled = !myVar.prop1.prop2.enabled 这种丑陋的写法了,可以直接写为 myVar.prop1.prop2.enabled.toggle()

并且已经起草提案给 Swift Evolution 了,这个方法有可能在以后会加入标准库。

今日头条算法原理(全)

今日头条公开了他们推荐算法的原理。介绍了如何做到内容、用户、环境(工作场合、通勤、旅游等不同的场景)的匹配预估。

工具

CocoaPods 发布 1.4.0

CocoaPods 发布了 1.4.0,带来了很多强大的功能。如下:

  • Test specs 支持配置 App host
  • 脚本配置 支持 Podfile 和 Podspec 配置脚本,CocoaPods 会根据你在Podfile 和 Podspec 的关联脚本描述,自动添加相关脚本到不同的Target;
  • 支持静态库 使用 use_frameworks! 同时支持 static framework 和 dynamic framework。只要开源库的作者在 podspec 文件中添加 s.static_framework = true,CocoaPods 就会把这个库配置成static framework。同时支持 Swift 和 Objective-C;
  • Podspec 文件可以配置 Swift 的版本号
  • 过渡到https 当你发布一个 Pod 不支持 https 的时候,会有一个警告。在未来的某个版本,将不再支持不支持 https 的 Pod。

Design+Code

Design+Code 是一个教你从零开始设计、开发一款 App 直到在 App Store 上架的 iOS App,不需要任何编程基础。其中包括 iOS 11 的设计理论例如颜色、动画以及为 iPhone X 进行适配等,少见的设计和开发兼具的交互式教学工具,值得一试。

cocoapods-packager

CocoaPods 官方工具,可以根据现有的 podspec 生成 framework 或 static library,给我们的 Pods 库发布工作带来了更多选择和想象空间。

代码

SwiftyUserDefaults

利用 NSUserDefaults 存储一些数据在开发中是常用的事。但是每次存取都依赖于字符串类型的 key、类型也不校验,在实际开发中也带来了不小困扰。这个库利用 Swift 的枚举和泛型优化了 NSUserDefaults 的使用体验,思路值得借鉴。

Turi Create

「Turi Create」是 Apple 的机器学习框架,目前已经开源在 Github 上。它简化了定制机器学习模型的开发。就算你不是一个机器学习专家,也可以在你的应用中添加建议、对象检测、图像分类、图像相似性或活动分类。让开发者更容易的构建机器学习模型。

objc.io 新书「App Architecture」

本书预计四月完成,但提供「早鸟」版购买,每周可以收到新内容。

音视频

Swift Unwrapped #42 Conditional Conformance

这期很简短,只是简单地聊了一下,之前 Ole 大神发过一篇文章讲了如何查看 Swift 源码,里面讲到了一个代码生成工具 gyb,主要是为了解决 Swift 泛型能力不足的问题,现在实现了 Conditional Conformance 之后就可以重构掉之前很大一部分 gyb 代码。并且单单只是重构掉 Slice 类型,就已经让 Swift 标准库的二进制文件缩小了 5% 😱,真是越来越期待 Swift 4.1 的发布了!!!

另外 Swift 的博客还发布了一篇文章专门讲解这个功能,有兴趣的人可以去看看。

内推

淘宝 - Weex 内核研发技术专家 - 基础平台部

Weex 的价值在阿里集团已经得到高度认可。weex 下一步计划是利用 C++ 重写内核。

简历可发送至 zifan.zx@alibaba-inc.com

阿里巴巴 - 国际技术事业部 - ICBU 技术部 - iOS 高级开发工程

国际事业部在杭州滨江,发展迅速非常缺人。

感兴趣的可以简历发送到曾宪华的邮箱:xianhua.zxh@alibaba-inc.com。

CSDN 亟需前端开发和后端好手加盟,一起打造程序员新社区

@蒋涛: 老社区的技术债负担不轻,亟需技术开发前端和后端好手加盟 CSDN,一起打造程序员新社区。

本期编辑

@没故事的卓同学@四娘@mmoaay@享耳先森@EyreFree@Damonwong@折腾范儿_味精

说明

🚧 表示需翻墙