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