老司机 iOS 周报 #223 | 2022-11-14 #3704
ChengzhiHuang
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
波报 | Pofat 的 Swift 中文电子报
@kemchenj:波报是聚焦于 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 上做的一系列优化(“机制变化”),以及对开发者生态带来的影响。内容结构:
早期的 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 进行内存管理。其中核心的观点如下:
同时需要注意以下方面的内存泄漏:
🐕 百度 APP iOS 端内存优化实践 - 内存管控方案
@AidenRao:该方案重点解决的问题是在内存水位很高的情况下,保证 APP 稳定性又兼顾用户体验,延长 APP 使用时长同时避免 OOM。
🐕 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 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考。
具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)
关注我们
我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
说明
🚧 表示需某工具,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
This discussion was created from the release 老司机 iOS 周报 #223 | 2022-11-14.
Beta Was this translation helpful? Give feedback.
All reactions