老司机 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
Uh oh!
There was an error while loading. Please reload this page.
-
老司机 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