老司机 iOS 周报,只为你呈现有价值的信息。
你也可认为这个项目出一份力,如果发现有价值的信息、文章、东西等能够到 Issues 里提给咱们,咱们会尽快处理。记住写上引荐的理由哦。有主张和意见也欢迎到 Issues 提出。
新闻
波报 | Pofat 的 Swift 中文电子报
@kemchenj:波报是聚集于 Swift 言语与其相关范畴的技能周报,主旨是为中文开发圈注入一些不同面向的资讯。
摘选的内容主要是国外 Swift 开发者社区的资讯,内容包含但不限于:
- Swift 和 LLVM 官方消息
- Swift 和 LLVM 论坛新鲜事
- Swift (或其它相关)的底层原理讨论
- Swift 程式言语规划的学习和考虑
iOS 16.2 Beta 投屏溃散
@Leo:iOS 16.2 Beta 系统投屏会呈现 Invalid parameter not satisfying: outputDevice 溃散,对投屏有强诉求的同学能够暂时别升级。
Developer – 规划开发加速器
Ask Apple November 14 to 18
继前次 10 月下旬的 Ask Apple 之后,苹果会再继续进行 2 轮新的 Ask Apple 活动,一轮是下周,另一轮是 12 月份。下一年 WWDC23 之前,这可能是最后的两轮 Ask Apple 活动了。活动照旧需要提前注册并下载 Slack 。 这一次仍旧会有中文集锦的频道,这个频道中除了回顾各个英文频道的精华内容之外,也鼓舞我国开发者直接中文提问,而且会比上一轮放开更多的技能话题。
新手引荐
Refactoring Swift: Best Practices to succeed
@极速男孩:重构是每个项目都会面临的问题,本文简略介绍了在代码重构时分索要留意的事项,以及怎么凭借 Xcode 中的比如 async/await ,to-do ,if let shorthand 等功能来对你的代码更简单去进行重构。
文章
探秘越来越杂乱的 ImageIO 结构
@JonyFang:本篇会介绍,自 iOS 13 年代之后,苹果在 ImageIO 上做的一系列优化(“机制改变”),以及对开发者生态带来的影响。内容结构:
- WebP/AVIF 新式图像格局支撑
- WebP
- AVIF
- IOSurface 和硬件解码优化
- 50% 内存开销的奥秘
- IOSurface 和跨进程 Buffer
- 开发者的痛,Public API
- 不再安全的 ImageIO
- 从一个溃散说起
- 溃散的背面
- Workaround 计划
早期的 ImageIO 和各种上层结构的规划,是针对 iPhone 的低内存的机型做深化优化,希望能尽量运用惰性解码,mmap 缓存,交换较低内存开消,而且对各种无硬件解码的开源格局完全不感兴趣。而最近几年,随着苹果芯片团队的努力,高内存,M1 的一致内存,以及高功能芯片的诞生,苹果已经有充足的能力能够经过软件解码,同享内存,越来越多硬件解码器技能来满足干流的多媒体图像支撑,自身这是一件功德。
不过问题在于历史遗下来的 API,仍旧坚持了之前的规划缺点,Apple 团队却一直在经过越来越 Trick 和 Hack 的办法解决问题,并没有给开发者可感知的新机制和手段来跟进优化(除开这一点吐槽,AppKit 上的 NSImage
的 NSImageRep
这种署理目标规划,比 UIImage
的私有类 UIImageContent
规划要适宜的多,也灵敏的多).
软硬件一体加之闭源,会导致开源社区的完成,永远无法及时跟上其一体的私有集成,最终会绑缚到开发者和用户(开发者越强依赖苹果 API 和 SDK,就会越逼迫用户更新 OS 版别,进而绑缚硬件换代出售),这并不是一个好的现象
手把手教你写 Dart ffi
@CrazyCoderShi: 在 Flutter 开发中与 Native 层的 lib 交互 Channel 是最为咱们所熟知的。但其功能历来饱受诟病,随后官方推出了更为高效的交互办法 ffi(foreign function interface), ffi 不光更高效,且能够直接跟 C/C++ 之类更为底层的 lib 进行交互。本文采用 step by step 的办法示例怎么运用 dart-ffi 进行编程,比较合适新手学习,小编强烈引荐。
Result builders in Swift explained with code examples
@Smallfly:Swift result builders 是一种组合构建代码的办法,在构建闭包内,多个同类型回来值的表达式,履行成果将会被隐式组合,回来一个调集类型的成果。SwiftUI 运用该特性完成了 @ViewBuilder
用于安排 View。
Result builders 特功能够用来规划 DSL,简化代码逻辑,添加可读性。本文经过自定义完成 AutoLayoutBuilder
来简化 AutoLayout 的运用,引荐感兴趣的同学阅览原文。
When does a SwiftUI Environment get retained?
@Cooper Chen:Environment 是 SwiftUI 的独特功能之一,这是咱们曾经在 UIKit 中所没有的。本文介绍了在 SwiftUI 的开发过程中应该怎么对 Environment 进行内存管理。其间中心的观点如下:
- 处理任何不再运用的 SwiftUI 视图变量
- 处理不再运用的 UIHostingController 引用
一起需要留意以下方面的内存泄漏:
- SwiftUI 中运用的 UI 视图
- UIView 和 Environment 目标之间的引用
- UIViewController 显示 UIHostingController
- Environment 目标自身
百度 APP iOS 端内存优化实践 – 内存管控计划
@AidenRao:该计划要点解决的问题是在内存水位很高的状况下,保证 APP 稳定性又兼顾用户体验,延伸 APP 运用时长一起避免 OOM。
- 针对不同机型拟定了相应的内存水位能够愈加从容地释放内存。本技能计划结合 Jetsam 机制和百度 APP 线上内存数据,拟定了 iPhone 各机型允许运用的内存水位线,给事务和结构更大的空间释放和清理内存。
- 实时内存监控和精细化页面内存猜测,在实时内存监控的基础上,开发了页面级的内存衡量计划,能够估算出用户在新开一个页面内存涨幅多少,在未来一段时刻内存会不会达到危险水位。
- 内存管控计划供给自动和被动通知两种办法获取内存水位状态,完成了各事务层依据手机内存状况实时降级,时效性更强,跟之前服务端降全量降级计划相比,愈加灵敏,功能更好。
How Xcode 14 unintentionally increases app size
@莲叔:包 Size 是现在的移动开发者都不得不面临的一个问题。近期,Xcode 14 携带了很多新特性,其间一点值得开发者留意的就是将不会默认开启 bitcode,这将会导致潜在的包 size 添加。文章的作者团队进行了些开始的剖析发现很多 APP 在切换运用 Xcode 14 打包以后都产生了 30%-60% 的 size 胀大,这仍是很惊人的。文章不只剖析了现状,还对胀大的原因做了深化的剖析。对于面临 Xcode 14 适配的开发者们不容错失。
Should we manually call @StateObject initializer
@Damien:在 Swift 2.0 中苹果推出了特点包装器 @StateObject,当 View 产生更新时,@StateObject 润饰的目标不会进行销毁,但是能否在 init 办法办法中来手动调用 @StateObject 初始化器呢?答案是肯定,本文会进行深化的研究,而且指出了手动初始化 @StateObject 时应该留意的事项,对 @StateObject 感兴趣的同学不妨一读。
代码
CSProgress
@享耳先森:CSProgress
是一个高功能且易运用的 NSProgress
替代计划。 或许你对 NSProgress
并不熟悉,因为在事务开发中比较少用到,但仍是主张你阅览下 CSProgress
项目的 READMEE,具体论述了 NSProgress 功能问题及糟糕的 API 规划,对自己也是种警觉。
摸鱼周报
@摸鱼周报 #74:第 74 期摸鱼周报来了,看下本期概要有没有你感兴趣的内容:
- 本周学习:iOS NSDateFormatter 设置问题 & iOS 16 部分 pods 库签名问题
- 内容引荐:SPM 工程实践以及功能优化好文引荐
- 摸一下鱼:本期引荐一款跨渠道的摸鱼网站、和两款坐姿监控 APP,摸鱼的时分也不要忘掉坚持正确坐姿;一个依据年历、地图、人物等生成文学图谱的网站;协助从 intel 平缓过渡到苹果自研 M 系列芯片的软件检测 App。
内推
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供咱们参考。
具体信息请移步:www.yuque.com/iosalliance… 进行查看(如有招聘需求请联络 iTDriverr)
重视咱们
咱们是「老司机技能周报」,一个持续追求精品 iOS 内容的技能大众号,欢迎重视。
重视有礼,重视【老司机技能周报】,回复「2021」,收取 2017/2018/2019/2020 内参
一起也支撑了 RSS 订阅:github.com/SwiftOldDri… 。
说明
表明需某东西, 表明修改引荐
估计阅览时刻: 很快就能读完(1 – 10 mins); 中等 (10 – 20 mins); 慢(20+ mins)