阅读 3020

老司机 iOS 周报 #113 | 2020-05-18

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

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

新闻

Flutter web 最新进展: 发掘更多可能!

@老驴:Google 又来更新 Flutter Web 的进展啦。在最新的版本中,Flutter 已经提供了 PWA 的支持,也有越来越多的插件开始提供对 Web 的支持,同时 Flutter 也进一步改进了 Web 的调试与测试。

虽然 Flutter Web 支持还是处于 beta 阶段,但是,Google 正在努力一步一步提升 Flutter 的表现,也希望广大开发者也能加入进来,一起完善 Flutter Web。

新手推荐

Settings Bundles Management in Xcode

@极速男孩:Settings Bundles 支持开发者在 iOS 设置中加入一些自定义的内容。本文主要介绍了如何通过 shell 脚本来在设置中根据不同的 Configuration 或者不同的 Targets 来加入不同的内容。

文章

🌟 🐕 TrampolineHook 学习笔记

@五子棋:虽然这个库是我写的,但是没想到竟然有大神这么详细的剖析了里面的每一方面。太赞了,必须推荐。

🌟 🐕 超详解析 Flutter 渲染引擎|业务想创新,不了解底层原理怎么行?

@CrazyCoderShi:小编强烈推荐在用 Flutter 的小伙伴仔细阅读这篇文章,本文由手淘技术产出,从渲染引擎层面详细分析了一个控件是如何展示到屏幕上的,细致入微。文末简要地提了一下,手淘在 Flutter 上的一些探索,也是社区内常提到的把 Flutter 引擎作为小程序的渲染引擎👍。

🐕 What’s new in Swift 5.3?

@享耳先森:Swift 5.3 即将发布,本文给你介绍 Swift 5.3 的新特性,最显著的两个就是 多尾随闭包(Multiple trailing closures) 与 多重异常捕获(Multi-pattern catch clauses),其余特性请阅读原文。

  • 5.3 以前尾随闭包只能作于最后一个 closure 类型参数,对于有多个 closures 参数的情况,也不建议使用尾随闭包,Swift 5.3 开始将支持多 closures 参数使用尾随闭包模式。

  • 以前一条 catch 语句中只能匹配一种 error,5.3 开始将支持多个 error

    do {
        let result = try checkReactorOperational()
        print("Result: \(result)")
    } catch TemperatureError.tooHot, TemperatureError.tooCold {
        print("Shut down the reactor!")
    } catch {
        print("An unknown error occurred.")
    }
    复制代码

🐕 Flutter 在 PLUS 业务中的探索和实践

@looping:本文介绍了京东 PLUS 会员业务团队入坑 Flutter 的原因,以及当时需要探索和解决的问题调研结论,并且详尽地描述了 Flutter 在 PLUS 业务中的实践过程,这对正在研究 Flutter 的同学是一份很好的学习交流资料。

🐕 WKWebView 默认缓存策略与 HTTP 缓存协议

@含笑饮砒霜:WKWebView 默认缓存策略完全遵循 HTTP 缓存协议,苹果并没有做额外的事情。WKWebView 默认缓存策略流程总结如下:

    1. 是否有缓存,没有则直接发起请求,有则进行下一步
    1. 是否每次都得进行资源更新校验(响应头是否有 Cache-Control:no-cache 或 Pragma:no-cache 字段),不需要则进入 3,需要则进入 4)
    1. 缓存是否过期(响应头,Cache-Control:max-age、Expires、Last-Modified 启发式缓存),没过期则使用缓存,不发起请求,过期了则进入 4
    1. 客户端发起资源更新校验请求(请求头,If-Modified-Since: Last-Modified 值、If-None-Match: ETag 值),如果资源没有更新,服务器返回 304,客户端使用缓存;如果资源有更新,服务器返回 200和资源

推荐阅读: 可能是最被误用的 HTTP 响应头之一 Cache-Control: must-revalidate

🐕 The different categories of Swift protocols

@EyreFree:本文作者提供了一种新的 Protocol 分类设计思路,即根据它们所属的类别来区分它们。概括地说,作者将协议分为四个类别:

  • 动作使能器:使我们能够对每种符合类型执行统一的操作。它们通常具有以 able 结尾的名称,例如 Equatable
  • 需求定义:使我们可以将需求形式化为某种对象,例如 SequenceNumericColorProvider
  • 类型转换:协议用于让各种类型声明它们可以转换为另一种类型,或者可以通过原始值或文字进行表达(例如 CustomStringConvertibleExpressibleByStringLiteral);
  • 抽象接口:充当可以多种类型实现的统一 API,从而使我们可以按需快速替换实现代码而无需改动调用方代码,封装第三方代码或在测试中模拟某些对象。

你是否认可这种分类方式呢?或许看完本文你能够有自己的看法。

🐕 "零"学习成本:使用 Web 标准开发动态化 Flutter 应用

@邦Ben:该文介绍了阿里的一个 Kraken 项目,该项目核心是用 Web 标准进行开发,Flutter 进行解析渲染。简而言之就是,HTML -> Flutter Render,基本有也可以理解为小程序的模式,最大的特点就是使用 W3C 标准规范,Web 童鞋入坑成本低。同时也介绍了其配套工具和一些性能特性,但是还没开源,可以作为一个思路进行参考。

工具

How to add a shield on the App Icon of beta builds

@红纸:如果你还在烦恼装了太多测试包,却不能直观看出测试包版本/构建信息的话。不妨尝试下本文中的这个工具 「Badge」,其允许你在 App 的 Icon 中添加你指定的版本信息。集成也非常方便,可以通过 Xcode 中的 Run Script Phase 或者通过 Fastlane 中对应的 badge 插件进行集成。

内推

上海 - 字节跳动:TikTok iOS/Android/前端/后端工程师

TikTok是目前全球最火爆,国内出海最成功的短视频App,全球累计下载接近20亿次。

目前团队规模落后于需求增长,非常缺人,经验不限,应届生老司机专家都欢迎。

简历发送至 martin.lv@bytedance.com

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

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

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

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

关注我们

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

同时也支持了 RSS 订阅:github.com/SwiftOldDri…

说明

🚧 表示需某工具,🌟 表示编辑推荐

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

关注下面的标签,发现更多相似文章
评论