老司机 iOS 周报 #230 | 2023-01-16

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

你也能够为这个项目出一份力,如果发现有价值的信息、文章、东西等能够到 Issues 里提给咱们,咱们会赶快处理。记住写上引荐的理由哦。有建议和定见也欢迎到 Issues 提出。

新闻

Design Priorities for the Swift 6 Language Mode

@kemchenj:Swift 5 发布到现在已经快要五年了,Swift 6 估计最快下一年就会发布,此前关于 Swift 6 的开发计划也曾在周报里收录过,这次 Swift 团队又发布了另一份关于功用开发优先级的声明,包含:

  • Data-race safety by default。Sendable 和 actor-isolated 检查将会默许以最严格的等级履行。
  • Performance predictability。大概率会有 source-break 的修正,以便进步运转速度和编译速度,别的也有一部分编译器 bug 需求调整语义才能够修复。
  • Package ecosystem scalability

虽然 Swift 6 会有 source-break,但这个版别也会供给源码兼容模式,能够用 Swift 5 的模式进行编译,所以咱们也不用过多担心。

新手引荐

iPad大屏&Flutter多引擎适配之路

@极速男孩: 本文介绍了在大屏中怎么适配分屏的几种办法,并简略介绍了在 Flutter 中怎么经过修正 c++ 层的代码,完成一个多引擎的计划既能一起显示两个视图,也能让 isolate 以及图片字体等资源完成共享。

文章

Swift Native method swizzling

@Cooper Chen:本文对 Swift 原生的办法交流的原理进行了剖析。其间 Swift 的运转时将动态函数分配的责任从调用者转移到被调用者。Swift 在进行办法交流时,运用大局数据结构取代了对中间 objc_msgSend 函数的需求,这种设计确保了动态函数更好的运转时功用,而且对没有运用此功用的代码没有功用影响。跟着新的动态特性的加入,Swift 和 Objective-C 之间的距离变得更小。

iOS APP添加桌面快捷办法

@JonyFang: 诉求:APP 内的某些功用,能够把进口添加到桌面,点击桌面的进口能够直接跳转至 APP 对应界面。其实很多APP目前都已经完成了相似的功用,比方支付宝、云闪付等等,其间的每一个独立功用都能够独自添加到桌面,本篇做的是计划调研、整理及试错,有相似诉求的读者能够参阅下。

Rive GitHub

@Barney: Rive 是一款全渠道轻量级动画库,官网描述比 Lottie 体积小 10 倍,运转更快。这又小又快的 Rive 还不快来试一试~

Limit Swift Concurrency’s cooperative pool

@EyreFree: 本文介绍了怎么经过设置和修正环境变量 LIBDISPATCH_COOPERATIVE_POOL_STRICT 来调整并发线程数,能够强制 Swift 运转时将协作池限制为特定数量个线程,关于某些调试情况和学习目的很有用,有需求的朋友能够看看。

Swift Concurrency – Things They Don’t Tell You

@zvving:Swift Concurrency 宣称为并发编程带来安全性的一起,也带来功用提升和更易读易维护的代码表达,避免数据竞赛/线程爆破/代码难以维护等一系列问题。在理想情况下(比方躲避如下一切问题的情况下),确实能够达到『卖家秀』的效果:

  • 主线程调用 async / Task 不能假定履行是在特定(主)线程,包含同一函数的挂起/恢复,前后线程也不一定一致
  • Swift 并发模型应避免与经典同步办法(锁、信号量等)混合运用
  • Actor 不意味着不存在数据竞赛
  • Task 需求办理优先级比避免 UI 使命堵塞
  • 模拟器与真机并发行为不一致

作者整理了 Swift Concurrency 运用的典型问题,经过这些问题的理解&躲避,能够帮助你更好的运用苹果供给的并发编程模型。

How to build a Chrome extension with Flutter Web

@Crazy:本文是一篇关于 Flutter Web 在 Chrome 插件范畴的一种运用,这是对 Flutter 运用场景的一种新的拓宽。本文详细的论述了从配置 manifest.json 到最后构建 pipeline 发布到 Chrome Web Store 的悉数流程。咱们能够根据文章中的图文解说自己进行实践,创立一个属于自己的 Chrome 插件。

东西

Managing multiple versions of Swift locally

@zoeGuo:咱们的本地的或许会有多个 Swift 版别:或许有 Swift 发布的正式版别、 Swift Development Snapshots,还有或许有为其他架构而下载版别(比方 WebAssembly)。那么当本地有多个 Swift 版别时用什么东西办理呢?文章介绍了两种东西和他们简略的用法:

  1. 运用 Xcode ToolChains 功用能够切换或许删去相应 Swift 版别;
  2. 运用命令行东西 swiftenv 能够装置、删去还能够指定 Swift 版别的效果域为大局或许某个目录下。

关于这两种办法的更多解释和用法能够到对应官网进行深化了解。

代码

swift-dependencies

@含笑饮砒霜:这是一个灵感来自于 SwiftUI 环境启发的依靠办理库。依靠项是运用程序中与不受操控的外部体系交互的类型和功用,这或许会在你的代码库和开发周期中导致许多问题:

  • 不受操控的依靠性使得编写快速、确认性的测验变得困难
  • 许多依靠项在 SwiftUI 预览中无法正常工作
  • 与第三方、非 Apple 库(如 Firebase、web socket 库、网络库等)交互的依靠项往往是重量级的,需求很长时间才能编译

由于这些以及更多原因,咱们应该操控依靠项,但是操控依靠项仅仅是个开始,一旦操控了依靠关系,就会面临一整套新问题:

  • 怎么才能以一种比在任何地方显式传递它们更符合人体工程学但又比拥有大局依靠性更安全的办法在整个运用程序中传播依靠性
  • 怎么只掩盖运用程序的一部分的依靠项
  • 怎么能确认掩盖了一个功用在测验中运用的一切依靠项

这个库解决了上述一切问题,能够经过检查文档来探索这个库附带的一切东西。

摸鱼周报

@摸鱼周报 #81:第 81 期摸鱼周报来了,一起来看下本期概要:

  • 本期论题: Developer 设计开发加速器|探索 iPad 最新技能,Apple 推出 Apple Business Connect
  • 本周学习:基础知识回顾:iOS 中的 const 修饰符
  • 内容引荐:本期将引荐近期的一些优秀博文,包括怎么维护剪切板内容、SwiftUI 的视图风格、iOS 运用启动优化等方面的内容
  • 摸一下鱼:基于 MarkDown 的写作东西以及一文多发的东西 openwrite;从 TimeMachine 中移除开发依靠包的东西 Asimov;检查个人 Github 全年运用趋势的 Github Trends;一份开源软件运用指南;AI 辅佐 Code reivew 的东西。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近清晰在招人的岗位,供咱们参阅

详细信息请移步:www.yuque.com/iosalliance… 进行检查(如有招聘需求请联络 iTDriverr)

重视咱们

咱们是「老司机技能周报」,一个继续寻求精品 iOS 内容的技能大众号,欢迎重视。

重视有礼,重视【老司机技能周报】,回复「2021」,领取 2017/2018/2019/2020 内参

一起也支撑了 RSS 订阅:github.com/SwiftOldDri… 。

说明

表明需某东西, 表明编辑引荐

估计阅览时间: 很快就能读完(1 – 10 mins); 中等 (10 – 20 mins); 慢(20+ mins)