老司机 iOS 周报 #243 | 2023-05-08 #4001
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 提出。
新闻
Foundation Package 预览版发布
@kemchenj:去年周报曾经提到 Foundation 将使用 Swift 重新实现,近日 Swift 开发团队发布了预览版,日期相关的功能性能对比当前版本的 Foundation 提升 20%-150%,而 JSONDecoder/JSONEncoder 的性能提升甚至达到 200%-500%。
2023 年上半年会继续集中在核心 API 的实现和测试的补齐,下半年则会集中在导入现有的 Foundation API,例如 URL/Bundle 等,并且过程中也允许通过提案加入小部份全新的 API。
一句话总结,Swift is the new Foundation。
文章
🐕 心遇 iOS 端会话页性能优化 — ReactiveObjC 实践篇
@享耳先森:
ReactiveObjC
是Objective-C
下的响应式编程框架,可以将各种通知、代理等转换成事件流进行分发,Swift
下有RxSwift
及Combine
。本文介绍了「心遇」团队如何使用ReactiveObjC
解决项目中逻辑分散的问题。🐕 Notifications: why less is more — how Facebook has been increasing both user satisfaction and app usage by sending only a few notifications:
@含笑饮砒霜:Facebook 的通知数据科学团队的成员,针对用户对通知的感受进行了调查。最终的结论我相信 Facebook 以外的其他数据科学团队也可以从中受益。他们发现,在更少的通知体验中,用户会更多的使用 Facebook,用户行为的转变需要很长时间,更少的干扰会导致更高的自然使用率,从高提高用户满意度和程序使用率。需要注意的是,长期试验可能会显示出与短期实验不同的结果,甚至结果截然相反,因为人们需要时间来适应变化。
🐕 十年“屎山”终重构,但 QQ 选用了微软 Teams 放弃的 Electron:
@Damien:本文不是技术文章,主要介绍了 QQ 全新的 NT 技术架构,QQ 凭借 NT 架构实现了 QQ 多平台架构的统一,而 QQ NT 技术的一个重点就是使用 Electron 作为新版 QQ 桌面端 UI 跨平台解决方案。有意思的是,在同一时刻,微软 Teams 正在放弃的 Electron,对跨平台开发感兴趣的同学不妨一读。
🐎 MainActor usage in Swift explained to dispatch to the main thread
@J_Knight_:本文介绍了 MainActor 的概念和使用方法。首先介绍了它的概念:它是 Swift 5.5 中引入的一个新属性,它提供一个在主线程上执行任务的执行器,使用
@MainActor
属性将帮助你确保你的 UI 总是在主线程上更新。MainActor 是一个全局唯一的 Actor,他在主线程上执行他的任务。它应该被用于属性、方法、实例和闭包,以在主线程上执行任务。然后结合代码示例介绍了它在不同场景下的使用方法。🐕 开源图像模型 Stable Diffusion 入门手册
@老驴:最近大热的除了 ChatGPT 这样的大语言模型之外,Stable Diffusion 这样的图像模型也受到了广泛关注。而且因为图像模型相对来说比较容易在自己的机器上跑,所以很多同学都跃跃欲试,想要部署在自己的机器上来体验效果。 这篇来自腾讯技术的文章是个很不错的给初学者的入门文章,从零开始带你一步一步部署图像模型。有兴趣的同学可以来学习一下。
🐎 veImageX 演进之路:iOS 高性能图片加载 SDK
@Smallfly:本文主要介绍了 veImageX iOS 客户端图片加载 SDK,它的核心功能包括:
除了基础的功能模块,该 SDK 还进行了一系列的性能和体验优化,提升图片加载体验,优雅控制内存,以及动图播放优化。目前该 SDK 以开放平台的方式提供收费服务。
🐕 快手 Swift 历险记之 Clang Module 带来的“坑”
@老峰:本文主要介绍了快手接入 Swift 后开启 Clang Module 后所遇到的问题如编译错误、Module 编译慢、PCH 编译优化失效、Module 复用率低 & 过期导致编译失败等,以及对应的解决方案 Clang 关闭 Clang Module ,原理非常简单,主要是打破了接入 Swift 过程中的一些经验“误区”。
🐕 Debug iOS app in Visual Studio Code
@JonyFang: 本篇主要介绍了在 VSCode 中调试 iOS app 的过程。主要内容结构:
通过本文,可以了解到 VSCode 如何自定义 tasks 和 launch configurations,跟着实践,也可以深入了解到 lldb 调试程序的原理。
🐕 Yielding accessors in Swift
@zoeGuo:多任务协同在开发中会经常遇到,当多任务处理中遇到 copy-on-write types 和 dynamic properties 时,协同生成器就能起到很大的作用了。在 Swift 中协同生成器 _modify 和 _read 方法配合 yield 关键字,在多任务协同工作时体现出的显著性能优势,包括数据处理速度以及内存使用大小。文章详细举例验证了使用协同生成器后的性能提升,但 _modify 和 _read 两个方法还有 _ 标识,意味着还在 work-in-progress 的阶段,而 yield 关键字目前也只能在 nightly toolchains 中使用 , 期待尽快在 Swift 新版本中看到更新。
🐕 链接器优化 : 相同代码折叠 ICF
@AidenRao:ICF 是链接器的一项优化技术,在链接阶段把有相同实现的 C++ 方法合并链接到同一个地址。由于 C++ 模版会生成大量相同实现的方法,所以这个技术在 C++ 代码中有很好的安装包优化效果。
相关阅读链接:
工具
ETTrace
@Leo:ETTrace 是 emergeTools 开源的用来分析代码耗时的工具。实现原理是在 App 内启动一个子线程定时获取主线程的函数堆栈,然后把这些堆栈生成 json 上传到网站以火焰图的方式供开发者分析。逻辑上这种方式比 Instrument 更精确,因为 iOS16 开始,dyld4 会进行预计算 protocol conformances 来优化启动耗时,但 Instrument 的实现方式是用 DYLD_INSERT_LIBRARIES,导致这个优化被禁用了。
代码
Compose Multiplatform
@极速男孩:Compose Multiplatform 是一个基于 Kotlin Multiplatform 的跨平台 UI 开发框架,旨在简化和统一 Android、iOS、桌面和 Web 应用程序的用户界面开发。它的核心概念源于 Jetpack Compose,这是 Google 推出的现代 Android UI 工具包,支持使用 Kotlin 编写声明式 UI 代码。在最近的 Alpha 版本中迎来了 iOS 的支持。
摸鱼周报
@摸鱼周报 #92:第 92 期摸鱼周报来了,一起来看下本期概要:
内推
重新开始更新「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 周报 #243 | 2023-05-08.
Beta Was this translation helpful? Give feedback.
All reactions