Skip to content

Releases: SwiftOldDriver/iOS-Weekly

# 老司机 iOS 周报 #320 | 2025-01-13

12 Jan 14:28
9de9ed1
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

🐎 Algorithm changes to server connections for Apple Pay on the Web

@Damien:从 2025 年 2 月 4 日开始,苹果将改变支持 Apple Pay 在 Web 上的服务器连接的安全算法。为了保持服务不间断,你需要确保你的生产服务器在这个日期之前支持指定的六种密码之一

文章

🐕 Xcode Library customization with SPM plugin

@Kyle-Ye: 本文探讨了如何通过 Swift Package Manager 插件自动将自定义 SwiftUI 视图和修饰符集成到 Xcode Library 中。

通过实现 LibraryContentProvider 协议,开发者可以将自定义组件引入库中,提升可重用性和发现性。然而,手动维护这些集成可能会很繁琐。作者通过利用 SwiftSyntax,开发了一份插件来自动化此过程,这种方法简化了将自定义组件集成到 Xcode 库中的过程,减少了手动操作和潜在错误。

🐕 数据编织在AB实验自动化中的应用 | 京东零售技术实践

@Barney:本文讨论了数据编织在 AB 实验中的应用,强调其重要性以及面临的数据科学性、一致性和时效性挑战,并提出相应的自动化解决方案。内容涵盖数据编织的管理理念、逻辑数据平台构建、标准语义建立及自动编排等关键技术。最后,展示了 AB 实验链路的自动化实施进展及未来规划,强调提升交付效率和数据治理的必要性。

🐢 使用火山引擎 APMPlus 优化 iOS 内存性能的全套指南

@阿权:文章本是 APMPlus 的软文,一套全面的性能监控的解决方案,但偏偏还为大家罗列了 21 条内存管理的最佳实践,并介绍了 OOM 监控的基本原理与手段。干货满满,都是我们日常开发中高频遇到的场景,或许它能成为内存问题踩坑时的自查小册。

🐕 What happens when you move a file in git?

@JonyFang: 文章主要介绍了在 Git 中移动或重命名文件及文件夹时的内部工作原理,包括文件以快照形式存储、文件夹与提交的关联、重命名或移动操作对存储的影响及优化方法,还提及了大文件的特殊处理情况。文中对 Git 文件的操作机制的介绍,对日常开发中文件结构调整会有帮助,降低因操作不当引发的仓库性能问题风险。

代码

🚧 Now we’re all Forked!

@Cooper Chen:Forked 是一个简化共享数据管理的 Swift 工具,专为多设备数据同步和冲突解决设计。借鉴 Git 的分支和合并机制,Forked 能轻松实现三方合并(3-way merge),并自动处理并发冲突。该工具支持与 iCloud 等云服务同步,确保跨设备的数据一致性,并通过简洁的 API 帮助开发者快速实现数据合并和冲突解决。无论是离线编辑还是实时协作,Forked 都能提供高效、可靠的数据管理方案。如果你需要在应用中实现智能数据同步和冲突解决,Forked 是一个理想选择。了解更多并开始使用 Forked,查看官方文档:Forked GitHub 仓库

🐢 解密小红书与美团的合作案例

@EyreFree:播客主要探讨了小红书与美团两大平台的战略合作,美团正在寻求从单纯的效果营销转向更注重品牌价值和用户心智的增长方式,而小红书则凭借其独特的内容生态和用户群体特征,成为流行生活趋势的策源地。双方合作的核心在于优势互补:美团有流量但缺乏优质内容,小红书拥有丰富的 UGC 内容但需要商业变现出口。这次合作反映了内容平台与交易平台的融合趋势,也展示了"反漏斗模型"在实际商业场景中的应用。虽然可能离具体的技术开发较远,但对互联网商业逻辑感兴趣的朋友可以听一下。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #319 | 2025-01-06

06 Jan 02:15
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🐎 聊聊 Flutter & Dart 里的内存泄漏和优化,也许没你想的那么复杂

@Crazy:本篇文章简单的聊了一下有关 Flutter 的内存泄漏问题,主要从持续引用和全局引用两个方面为大家讲解了一下 Flutter 最容易引起内存泄漏的几个地方。全文很短,作者集中测试了 Timer 与 AnimationController 两个类在引用上的区别,以及如何处理这两个类造成的内存泄漏问题。在 Android 与 iOS 原生应用的开发中,已经有成熟的框架来减少 context 导致的内存泄漏的问题了。同时也期待 Flutter 有一天可以开发出类似的框架,来解决关于 context 引用的问题。

🐕 百度 APP iOS 端磁盘优化实践(上)

@含笑饮砒霜:在 APP 开发中,磁盘管理已成为不可忽视的部分。随着功能的复杂化和数据量的快速增长,高效管理磁盘空间直接关系到用户体验和 APP 性能。本文围绕百度 APP 的磁盘清理问题,从 iOS 沙盒文件存储机制出发,系统性地阐述了磁盘管理的重要性和技术实现。通过自动清理与手动清理的结合策略,以及多维度触发机制和灵活的用户交互设计,平衡了系统性能与用户体验。

🐎 Preventing Accidental API Breaks: A Swift Developer's Guide to API Diffing

@DylanYang:在 SDK 的维护过程中,检测是否有 API 破坏性变更的发生是非常重要的一件事。作者提供了三种方式用于这类检测。一是通过 swift package 自带的工具,但是对 iOS target 使用会有异常,第二种方式是结合 xcodebuild 和 swift-api-digester,第三种则是作者开源的一个工具 Swift Public API Diff,它的优点是输出结果的可读性更好。同时作者也给出了一些维护 API 稳定性的建议。感兴趣的读者可以阅读本文了解更多。

🐢 Compile Metal shader Bitcode to x86 and ARM assembly

@ChengzhiHuang:作者通过逆向的手段研究了从 metal 代码到 air 文件(LLVM Bitcode),最后到 metalib 文件(产物)的过程,期间根据经验进行合理猜测验证,通过寻找原始函数字符串、magic number 、长度偏移量 等还原了文件的结构,并最终提供了将 metalib 文件重新 disassemble 为 air 文件的脚本。

最后作者还尝试直接使用 LLVM 将 air 文件重新 compile 成最终的 ARM/x86 的机器码,尽管这些最终产物并不适合直接提交给 GPU 运行,但是也证明了 LLVM 是可以处理来自 metal 的 Bitcode 的。

内容与过程非常翔实,推荐工作中需要与 Metal 打交道的同学阅读。

前置知识:LLVM 是三段式的设计,而 LLVM 会将 IR 转为 Bitcode ,Bitcode 依旧是可以兼容多平台的中间代码,因此可以最终翻译为各个平台的代码。

🐢 什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap

@CrazyCoderShi: 如标题所言,Flutter 的 UI 组件编码方式一直被开发者们所诟病,本文通过对与 SwiftUI 和 ArkUI 以及参考 Flutter 新一年的 roadmap 做出了一些简单类比。在小编看来这不失为是一个代码结构的优化,毕竟末尾的 '括号山' 还是很高的。

代码

🐢 Home Assistant iOS

Home Assistant iOS 客户端,代码全部开源。Home Assistant 是一款开源的智能家居自动化平台,允许用户控制所有连接到同一网络的智能家居设备。项目文档详实,甚至面向零基础用户,了解该项目是入门智能家居的最佳实践。了解各平台能力对比可阅读 Home Assistant Feature overview

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #318 | 2024-12-30

30 Dec 02:07
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

周报编辑组又来新人啦~

欢迎 阿权 加入老司机技术,就职于字节剪映团队,喜欢音视频和图像处理,做过许多翻译和 WWDC 内参,热爱摇滚与爵士。喜欢文艺喜欢电影,曾经幻想诗与远方,却囿于昼夜、厨房与爱。

希望 阿权 的加入也能为大家带来更多元化的内容输出!

文章

🐕 Calling Hidden Swift Functions

@AidenRao:这篇博文介绍了在 Swift 中调用隐藏函数的方法。Swift 中有 6 种访问级别,从 open 到 private。但是,用 Swift 编写的 Apple 框架(尤其是 SwiftUI)包含供其他 Apple 框架使用但不供第三方应用程序使用的 API。文章探讨了如何在自己的代码中调用这些函数以使用隐藏功能。

🐕 Be careful wrapping a throwing function in a Task

@Barney:本文讨论了在 Swift 中将抛出函数包装在 Task 中时需要注意的事项。直接在 Task 中调用抛出函数可能导致不如预期的行为,因为 Task 默认会捕获并处理错误。作者举例说明了如何正确使用 Task 来执行抛出函数,并提供了实现的最佳实践,以确保错误被适当地处理。同时,文章还强调了在并发编程中理解错误处理的重要性,帮助开发者避免引入难以调试的问题。适合希望深入了解 Swift 并发特性与错误处理的开发者。

🐎 Enhance Xcode Previews with Unit Test Coverage

@DylanYang:本文介绍了如何利用单元测试加强 Xcode Previews 能力的可靠性。Xcode Previews 是一个非常方便的开发工具,但是它在有些时候也非常脆弱,如果有人在一个 view 上添加了 @EnvironmentObject 标志,所有调用到这个 view 的 preview 场景如果没有注入这个变量就会发生 crash。在代码量较少时还能及时发现,但是在一个庞大的项目中,view 的层级很深的话很难完全覆盖到所有需要修复的 preview 场景。而借助一个三方的 SnapshotPreviews 框架,它能够自动帮助我们在运行时查找所有实现了 PreviewProvider 的 preview 并添加到单元测试中进行执行。这样可以非常轻松的确保我们的 preview 都能成功运行了。

代码

MetalLibraryArchive

MetalLibraryArchive 是一个 Apple 的 metallib 的逆向库,可以解析出 metallib 的 library 类型,目标平台和包含的所有函数。

函数的信息包含了:

  • 函数名
  • 函数类型 - 例如 vertex/fragment/kernel 等等
  • Metal Shading Language 的版本
  • 函数的 bitcode 等效表达式(底层使用 llvm-dis)
  • 函数源码(如果 metallib 包含了源码的话)

另外也提供了一个在线的 demo,对于想要逆向 Metal 的朋友来说是非常有用的工具。

音视频

🐎 为什么 C 口数据线越来越乱?

@极速男孩:苹果在 2023 的 iPhone15 中首次才用了 USB-C 作为数据线,不少用户会发现在有些 Android 的充电线在 iPhone 上无法实现快充或者无法充电。这个视频主要介绍了 USB-C 协议这些年来的混乱的标准和不同公司使用的各种快充协议。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #317 | 2024-12-23

23 Dec 01:56
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

 Developer - 设计开发加速器

展望未来:打造出色的 visionOS App(线下)

参加在上海 Apple 开发者中心举办的为期一天活动,了解如何打造出色的 visionOS App。

你将通过三个讲座学习如何开始使用 SwiftUI,探索一流的 App,并深入了解 RealityKit 和 Reality Composer Pro。随后,你还将听取开发者社区成员的分享,并有机会体验一系列 visionOS App 示例。

文章

🐕 得物 iOS 函数调用栈及符号化调优实践|得物技术

@Smallfly:这篇文章介绍了得物技术团队如何解决 iOS 隐私合规检测的性能难题。文章详细解析了 +[NSThread callStackSymbols] 的内部机制,并通过逆向工程优化了调用栈的获取与符号化过程。实现包括自定义 callStackSymbols 方法、缩短堆栈长度以及智能缓存策略,显著降低了 CPU 占用,提升了检测效率。为 iOS 开发者提供了优秀的性能优化实践案例。

🐕 Exploring Apple Intelligence: Image Generation

@Cooper Chen:Apple 推出了几款创新的图像生成工具,推动个性化创作和数字交流。Image Playground 允许用户通过文本和视觉提示生成图像,并与 PencilKit 集成,带来 Image Wand 功能,让用户将手绘草图转化为精美图像。同时,Genmoji 让用户根据文本描述生成个性化表情符号,增强了数字沟通的表现力。这两款工具不仅注重创意自由,还在包容性和版权合规性上做出了努力。此外,开发者可以将这些功能集成到应用中,扩展数字创作的可能性。而这篇文章为数字创作和个性化互动提供了不错的参考,展示了 Apple 工具如何为用户和开发者带来创意支持。

🐕 Apple' s use of Swift and SwiftUI in iOS 18

@ZengyiMa:这篇文章分析了苹果在 iOS 18 中 Swift 和 SwiftUI 的使用情况。iOS 18 中使用 Swift 和 SwiftUI 的应用数量持续增长,甚至在安全固件的低级别部分开始使用 Swift。此外,新开发的技术,如 Apple Intelligence,也依赖于 Swift。截止目前,iOS 18 现在包含 592 个使用 SwiftUI 的二进制文件,Swift 代码的二进制文件数量相比较 iOS 17 增加了 50%。

🐎 JDImage - 京东自研鸿蒙图片库

@Crazy:JDImage 是京东使用 C++ 打造的一款跨平台的图片加载框架,主要解决系统和其他第三方加载组件的问题,比如加载速度较慢,格式支持不全等。JDImage 在架构上借鉴了 SDWebImage 与 Glide 等图片加载框架,将整体图片库分解为:图片缓存、解码器、图片源拉取、性能监控、图片组件五个部分,使用流水线设计灵活调整执行流程,满足各类的图片加载需求。最后关于 C++ 的跨端代码要根据自己项目的实际情况进行选择,使用之前对错误的捕捉与升降级一定要事先准备好。

工具

🐕 HuggingChat macOS

@EyreFree:HuggingChat macOS 是一款原生 macOS 聊天应用,由知名 AI 开源社区 Hugging Face 开发。该项目将先进的开源语言模型能力集成到桌面端,为用户提供流畅的 AI 对话体验,可以简单理解为 ChatGPT 客户端的本地大模型版。

  • 原生体验:专为 macOS 设计,支持全局快捷键(⌘ + Shift + Return)快速唤起;
  • 语音支持:支持实时同声传译(OpenAI Whisper);
  • 易于安装:提供直接下载和 Homebrew 安装两种方式;
  • IDE 集成:通过 VSCode 扩展支持代码上下文理解,提供更准确的编程建议;
  • 开源透明:基于 Swift 开发,代码完全开源,支持社区贡献;
  • 使用门槛低:仅需 macOS 14.0 以上系统即可运行,安装即用。对于开发者,项目提供完整的开发文档和贡献指南。

作为 Hugging Face 出品的官方客户端,该项目让优质开源 AI 模型触手可及,为想要摆脱商业 AI 服务的用户提供了绝佳选择。项目活跃度高,安装简单,值得一试。

🐢 Skip: Build native apps for iPhone and Android with Skip

@bq:通过 Skip 项目,你可以使用 Swift 同时编写 Android 和 iOS 原生应用。没看错,Swift 也有反客为主的一天了。Skip 项目的基本原理是:当你在编写 Swift 和 SwiftUI 源代码时,Skip Xcode 插件会不断构建用于 Android 的等效代码,因此最终 App 产物都能获取原生的性能和原生的交互体验。

  • 真正原生:与其他跨平台方案相比,Skip 项目是真正的原生代码。当编写 SwiftUI 代码时,将生成 Android 的 Jetpack Compose。

  • 完全透明:使用 Skip 时,不会在调试器中隐藏任何信息。Skip 库是开源的,也没有复杂的运行时需要调试。

  • 轻量:使用 SkipZero,iOS App 不依赖任何 Skip 框架;Android 也仅需几个 Skip 开源库。

  • 内存效率:无额外的托管运行时,Skip App 在两个平台都可能地高效。

  • 熟悉的 IDE:Skip 使用 Xcode IDE 进行编写,是 Swift 的首要开发环境。当需要高度自定义的 Android 能力时,则需在 Android Studio 中编写 Kotiln。

  • 完美整合:Skip 与 Kotlin 和 Compose 无缝衔接,因此也很轻松集成 Android 三方库。

  • 框架开放:Swift-on-Android 只是开始,Skip 的开发框架都是免费开源的。

  • CI 友好:支持跨平台的单元测试,确保逻辑在跨平台中保持一致。也支持在本地或远程执行测试。

  • 容易迁移:代码都是你自己的,包括 Swift 输入和 Android 输出,因此不会持续依赖 Skip 工具。

值得注意的是,虽然框架源码是开源的,但 Xcode 转译器插件针对大型商用还是需要收费的。

代码

SwiftUI-experiments

@DylanYang:作者是一个爱好自己通过代码实现创意的设计师,他通过 SwiftUI 实现了不少有创意的交互设计,并且都提供了原型 Demo。独立开发者们如果希望尝试一些有特色的交互的话可以参考参考。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #316 | 2024-12-16

16 Dec 02:04
a0c9cc9
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

🐢 Flutter 3.27 发布

@CrazyCoderShi: Flutter 3.27 悄悄的就来了,该版本包含了大量更新,包括:

  • Cupertino 相关组件的大量优化
  • Material 下的一些主题和控件调整,包括之前我们聊过的 Row and Column spacing
  • Android Impeller 默认开启和 iOS 性能优化
  • P3 色域的 UI 支持
  • Web 下的大量改进
  • Swift Package Manager 的支持
  • 之前聊过的 Edge to Edge 和 Android Freeform 支持
  • pub 下载数
  • DevTool 工具大改进和优化,包括设备断线数据保持
  • 对老 Dart SDK 插件不再维护适配,弃用 OC

文章

🐕 Prevent screenshot capture of sensitive SwiftUI views

@BluesJiang:这篇文章使用了一个比较巧妙的方法来实现截屏隐藏隐私信息。核心是使用 UITextFieldisSecureTextEntry 属性,然后将被包装的 View 作为其子 View 即可。然后使用了 preference 来实现父容器大小与子容器大小匹配。可以通过这个文章整体了解 SwiftUI 的 View 的包装和 Modifier 的写法,是一个很好的参考。

🐕 Why Can't You Loop Over Ranges of Characters in Swift

@bq:当你对 "a"..."z" 执行 for 循环遍历时,你会惊讶地发现 Swift 并不支持的,虽然这有点违反常理。这篇文章你将了解到 Swift 字符并不是简单的 ASCII 字符,而是可变长的 Unicode 字符,其在不同的语言环境有不同的排序,不断迭代的 Unicode 也在不断地扩充字符范围,甚至有些字符是集群的时候,遍历、计数将变得不太可能。文章也介绍了 Unicode 这么设计背后的意图,以及当你硬要遍历一个字符范围时候,作者也给出了一个比较安全的解决方案。

🐕 WebKit GPU Profiling

@莲叔:WebGL 的 debug 一直以来都是一个令人头痛的问题,通过浏览器内置的调试能力能够满足一部分需求,但如果需要更进一步的分析往往都缺乏足够好用的工具。这篇文章针对 WebGL 和 WebGPU 两种应用在不同平台的调试技巧做了汇总,包括 Mac、Window 和 Quest。其中对于在 Mac 上通过 Xcode 来做分析给出了 step by step 的步骤,非常友好。

🐕 Concurrency Step-by-Step: Reading from Storage

@Barney:本文提供了关于如何在 Swift 应用中逐步从本地存储读取数据的详细指南。文章重点介绍了如何使用 Codable 协议来序列化和反序列化对象,并通过 FileManager 管理文件的读取和写入。作者逐步解析了实现这个过程的关键步骤,包括如何设置数据模型、保存数据以及从文件中加载数据的示例代码。此外,文章还提供了常见问题的解决方案,以帮助开发者更有效地处理数据存储。适合想要深入理解 iOS 数据存储机制的开发者阅读。

代码

rmtrash

@Kyle-Ye: Swift 实现的 macOS 命令行工具 rm 的替代方案,用于将文件移动到废纸篓。此外 rmtrash 提供了与 Linux 和 macOS 版本 rm 命令完全兼容的标志位支持方案。

ml-cross-entropy

@Leo:由 Apple 开源的 CCE(Cut Cross-Entrop) 是一种优化小模型(SLM)训练过程中内存消耗的代码库,以 Gemma 2 (2B) 为例,能够将内存从 24GB 优化到 1MB,显著提高小模型的训练速度。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

[北京] 支付宝-终端业务研发专家(支付碰一下) - iOS/Android - P7

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #315 | 2024-12-09

09 Dec 02:32
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

CocoaPods Trunk Read-only Plan

Cocoapods 为将 Specs 仓库转为只读状态制定了时间表,预计在 2026 年 12 月 2 日正式不再接受新的提交。

文章

🐕 有意为之还是技术缺陷?SwiftUI 多层导航中的 onChange 异常 | 肘子的 Swift 记事本

@Barney:本文探讨了 SwiftUI 中 onChange 的异常行为,特别是在多层导航的情况下。文章分析了在使用 NavigationViewNavigationLink 时,onChange 修饰符可能会出现的问题,尤其是当视图层级嵌套较多时。作者提供了几个实际示例,演示如何管理状态变化和确保 onChange 正常响应。同时,提供了一些最佳实践,以帮助开发者避免常见陷阱并提升应用性能和用户体验。

🐕 Improving the approachability of data-race safety

@Smallfly:这篇文章提出了 Swift 并发特性面临的易用性挑战,包括过多的显式注释、数据竞争误报和异步代码编写困难。文中提出了解决方案包括减少并发注释、调整异步函数语义以减少误报、提供同步和异步代码之间的桥接工具,以及自动迁移代码等。目的是为了让 Swift 并发更易学易用,同时保持高性能。推荐给对 Swift 并发特性演进感兴趣的同学阅读。

🐎 深入探讨 C++ 多线程性能优化

@老驴:这篇来自腾讯技术工程的文章从实际案例出发,深入探讨了 C++ 多线程编程中的性能优化问题,包括锁竞争、缓存一致性等难点,并通过详细的 benchmark 数据对比锁与原子操作的性能差异。此外,文章还介绍了如 Epoch Based Reclamation 等高级优化方法。无论是提升性能还是理解底层机制,这篇文章都值得一读。

工具

Xcode + ChatGPT: Official Support is Available Now

@EyreFree:这篇文章介绍了 OpenAI 最新宣布的 ChatGPT for macOS 可以直接与 Xcode 集成的功能,除了 Xcode,该功能还支持 VS Code、TextEdit 和 Terminal 等开发工具。使用该功能需要按以下步骤:

  • 目前该功能仅向 ChatGPT Plus 和 Team 用户开放请先确保条件符合,Enterprise 和 Edu 用户将在近期获得访问权限
  • 确保 ChatGPT for macOS 应用已更新到最新版本
  • 在 ChatGPT 设置中启用 Enable Work with Apps 选项以获取辅助功能权限
  • 使用快捷键 Option + Space 打开 ChatGPT 聊天栏
  • 点击 Work With Apps 按钮并选择 Xcode

通过这种集成,ChatGPT 可以直接查看和理解开发者的代码库(Codebase),从而提供更准确的回答和建议。作者以开发 SwiftUI 动画的卡片翻转游戏为例,展示了这个新功能的应用。AI 辅助编程近来发展迅速,这次与 Xcode 的原生集成让开发体验更加流畅,标志着 AI 编程助手进入新阶段。

Easydict: 一个简洁优雅的词典翻译 macOS App

@Cooper Chen:Easydict 是一个开源的词典翻译 macOS App,能够轻松优雅地查找单词或翻译文本。Easydict 开箱即用,能自动识别输入文本语言,支持输入翻译,划词翻译和 OCR 截图翻译,可同时查询多个翻译服务结果,目前支持市面上绝多数主流的翻译 App,使用者可以通过 Homrebrew 快速安装使用,Easydict 支持鼠标滑词、OCR 识别等功能,是 Mac 平台上非常高效的翻译软件,值得推荐。

代码

swift-sharing

@bq:如其名,sharing,你能想到的状态共享,跨模块间的状态共享、持久化、观察监听,它都做了,无论是实现业务逻辑、Combine、SwiftUI、UIKit 都能无痛接入。关键人家实现还非常优雅,宏、属性包装器、清晰的职责实现,都是很优秀的实践,单单接入就能让你的代码耳目一新了。还是那句话,Point-Free 出品,必属精品。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

[北京] 比图科技 - 高级 iOS 工程师

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #314 | 2024-12-02

02 Dec 01:57
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🐎 AutoConsis:UI 内容一致性智能检测

@Damien:这篇文章介绍了美团技术团队与复旦大学计算机学院合作开发的 AutoConsis 系统,这是一个自动化智能检测流程,用于检测移动 App 中 UI 界面内容的一致性。该系统通过目标区域识别、目标信息提取和一致性校验三个关键步骤,实现了低成本、高泛化性和高置信度的 UI 内容一致性检测。AutoConsis 在美团 App 的多类营销业务场景中得到应用,有效提升了 UI 质量保障,并在 ICSE 2024 会议上发表了相关论文。

🐎 Lazy vars in @Observable classes in Swift

@zoeGuo:从 ObservableObject 协议迁移到 @observable 宏时,如果之前使用 lazy 修饰了该类型的变量,那么迁移后将会遇到报错的情况。文中解释了这种情况并提出可以使用 @ObservationIgnored 来解决。

🐎 Exploring Apple Intelligence: Writing Tools

@EyreFree:本文介绍了 Apple Intelligence 新推出的 Writing Tools 写作工具功能。该功能集成于 Apple 生态系统中,可在 iOS 和 macOS 设备上使用,主要提供以下功能:

  • 智能校对:自动识别并修正语法和拼写错误
  • 文本重写:支持改写文本,可选择友好、专业或简洁的语气
  • 文本转换:将文本转换为要点、列表或表格(测试版暂未提供)
  • 文本摘要:生成长文本的简明摘要(测试版暂未提供)
  • AI 集成:支持 AI 辅助写作(测试版暂未提供)

对开发者而言,Writing Tools 已自动集成到 SwiftUI 的 Text、TextField 和 TextEditor 等原生组件中。开发者可以通过 writingToolsBehavior 修饰符来自定义写作工具的行为,还可以在 UIKit 中实现更灵活的控制。这套工具已无缝集成到 Mail、Messages、Notes 和 Safari 等 Apple 生态系统应用中,显著提升了在这些应用中的写作体验。

🐕 货拉拉 iOS 疑难 Crash 治理-系统键盘语音

@xiaofei86:本文主要介绍了货拉拉解决系统键盘语音转文字崩溃的整个排查过程。通过崩溃类型、崩溃堆栈和偏移指令等信息,结合汇编指令调试,最终确定崩溃根本原因,并进行有效治理。感兴趣的同学可以阅读原文学习更多疑难崩溃的分析思路。

🐢 Google Deepmind LLM 研究员解读 OpenAI o1 及 LLM+ 强化学习新范式 | 3 小时播客全文精华

@含笑饮砒霜:这篇文章是对一个长达 162 分钟播客内容的深入解读,该播客深入探讨了 OpenAI 的 o1 模型及其与 LLM(大型语言模型)和强化学习(RL)结合的新范式。以下是播客内容的主要总结:

    1. Agent 系统
    • 基础:推理能力是构建 agent 的基础,需解决 AI 间协作、竞争及任务分工。
    • 工具使用:关键在于提升模型对工具功能的理解和调用能力。
    • 构建要素:强大基础模型、高质量工具、优质 prompt 及学习使用工具的数据集。
    • 数据收集:理想方式是将数据标注嵌入用户日常工作流程。
    1. 思维链(CoT)与强化学习(RL)
    • 思维链:详细步骤提升模型表现,分显式(明确 token)和隐式(直觉思考)流派。
    • 强化学习:通过 agent 与 environment 交互和 reward 指引学习。
    • 模型反思:允许模型反思修正错误,显著提升 reasoning 任务表现。
    1. AI 反馈系统与 Human in the Loop
    • AI 优势:快速处理文本并总结,处理复杂评估任务有优势。
    • Human in the Loop:AI 简化复杂问题,人类做最终判断,提升可扩展性。
    1. Multi-Agent 与角色分类
    • Multi-Agent:更像 multi-task,需角色分离,如 generator 和 critic。
    • 角色分离:通过不同 persona 实现,提升 multi-agent 系统效率。
    1. Single-Agent 与 Multi-Agent
    • Single-Agent:在达到超人类水平前,Multi-Agent 表现更优。
    • 过渡阶段:Multi-Agent 可能是过渡产物,未来趋向单一全能模型。
    1. 数据与方法
    • 数据获取:高质量数据是训练关键,特别是在 reasoning 领域。
    • 合成数据:MCTS 等方法生成高质量合成数据。
    1. 未来展望
    • 一年内:期待 coding 技能商品化,多模态 reasoning 突破。
    • 三年内:希望看到接近 AGI 水平的模型,解决所有问题。
  • 嘉宾与主持人介绍

    • Kimi Kong:Google DeepMind 研究工程师,专注于强化学习。
    • Eric Li:Google Cloud 研究科学家,专注于 LLM 和 MCTS 结合的研究。
    • 苏辉:前微信 AI 研究员,现负责国内一线互联网公司的大模型训练。
    • Cage:原字节数据科学家,现拾象科技研究员。
    • Monica:美元 VC 投资人,前 AWS 硅谷团队和 AI 创业公司员工。

🐎 Syntax Highlighting SwiftUI Code with Swift Syntax

@Kyle-Ye: 作者总结了一些在使用 swift-syntax 时的经验和技巧 , 并最终在 DetailsPro 应用中实现了对 SwiftUI 代码实时更新的语法高亮显示功能。

代码

SwiftUIFX

@bq:SwiftUIFX 是一个 Final Cut Pro 插件,用于直接将 SwiftUI 视图渲染到视频中。该插件提供了一个容器,打通了从 SwiftUI 到 Final Cut Pro 上屏渲染的链路。项目创造性地解决了几个问题:

  1. 如何实现一个 Final Cut Pro 插件。
  2. 如何将 UI 绘制成支持输出到 Final Cut Pro 的数据帧(实现比我们想象的要简单😜)。
  3. 如何在外部使用 dylib 将我们编写的 SwiftUI 视图跑起来。

思路很有趣,逻辑较简单,是个很好的入门制作 Final Cut Pro 插件的契机。了解更多插件制作可浏览 Apple 官方文档

NSDockTilePlugIn

@Cooper ChenNSDockTilePlugIn 是一个用于在 Mac 开发中用于应用未运行时自定义 Dock 图标的插件。通过实现这个插件,开发者可以在应用程序未启动的情况下修改其 Dock 图标,并提供自定义的 Dock 菜单。插件的名称通过应用的 Info.plist 文件进行指定,并在登录时或图标被添加到 Dock 时加载。插件可以通过实现 setDockTile(_:) 来定制图标,并通过 dockMenu() 提供自定义菜单选项。当图标不再有效时(例如应用被移除出 Dock),插件会接收到 nil 参数进行销毁操作,这个插件对于部分 Mac 开发用不错的借鉴价值。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #313 | 2024-11-25

25 Nov 02:09
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

Can't install any apps on my new iPhone 16 Pro with iOS 18 from Xcode

苹果的开发工程师对于从 Xcode 16 Beta/rc 升级到 Xcode 16 正式版用户会遇到无法安装 app 到 iPhone 16 系列手机的问题给出了解决方案:手动通过指令安装 XcodeSystemResources 。该问题在 Xcode 16.1 Beta 2 中修复。

sudo installer -pkg /Applications/Xcode.app/Contents/Resources/Packages/XcodeSystemResources.pkg -target /

文章

🐎 编译器,靠你了!使用类型改善状态设计

@Kyle-Ye: 作者通过一个实际工作中碰到的端到端消息发送的例子,讲述了如何利用 Swift 的类型系统 , 将状态逻辑编码到类型中 , 由编译器来保证程序执行正确性,从而减少使用和维护的心智负担。

🐕 MainActor usage in Swift explained to dispatch to the main thread

@AidenRao:在构建应用程序时,在主线程上执行 UI 更新任务是至关重要的,而使用多个后台线程时可能会遇到点麻烦。使用 @mainactor 属性将有助于确保您的 UI 总是在主线程上更新。文章详细解释了什么是 MainActor,全局 actor 的概念,以及如何在 Swift 中使用 MainActor。

🐎 Flutter vs. Kotlin Multiplatform: Which Should You Choose for Cross-Platform Development?

@Crazy:从 React Native 开始,移动端的开发就发起了跨平台的改革,如今 Flutter,KMP,C++,都进入了跨平台的研发序列。本文主要对 Flutter 与 Kotlin 两个现今比较火的跨平台框架进行了对比。

Flutter 平台的优点主要为:

  1. 统一代码库
  2. 富有表现力和灵活的用户界面
  3. 快速的开发周期
  4. 强大的社区支持

KMP 平台的优点:

  1. 原生一般的性能
  2. 高互用性
  3. 高代码共享能力
  4. Google 的支持

总结一下:Flutter 主要用于项目启动、 MVP 功能、项目原型、有 UI 统一化的需求开发。KMP 主要用于大项目和已有代码库、需要高性能、需要多平台逻辑分享的功能开发。

🐢 Flutter 小技巧之 OverlayPortal 实现自限性和可共享的页面图层

@CrazyCoderShi: 本文从原理层讲解了 Overlay 和 OverlayPortal 之间的差异,并且对如何使用 OverlayPortal 做了更深一步的阐述,对于 Flutter 开发的小伙伴来说是一个不错的科普文!

🐕 Integrating Live Activity and Dynamic Island in iOS: A Complete Guide

@Barney:本文介绍了关于在 iOS 中集成 Live Activities 和 Dynamic Island 的完整指南。它涵盖了如何创建和管理 Live Activities,以便在锁屏和应用程序上显示实时信息。此外,指南还介绍了如何利用 Dynamic Island 来增强用户体验,让用户能够方便地访问和交互实时通知和活动。可供开发者参考,实现更具动态交互的应用程序。

🐎 Swift Format in Xcode

@DylanYang:本文介绍了在 Xcode 16 中首次集成的 swift-format 工具,swift-format 是和 swint-lint 类似的用于规范代码格式的工具。作者写了一段有问题的示例代码,并同时使用 swift-lint、Prettier 和 swift-format 进行代码自动矫正。从表现上来看 swift-format 并不如 swint-lint 一般全能,但是使用十分方便,也支持规则的自定义配置,在配置妥当后已经适用于大部分场景。同时作者也提到目前并没有官方的 Swift code style guidelines, swift-format 目前仅仅只指向了一个方向,具体的规则后面还有改动的可能。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #312 | 2024-11-18

18 Nov 02:09
0fd90e7
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

🐎 We're forking Flutter. This is why.

@极速男孩: Flutter 社区在 Flutter 基金会的支持下,启动了名为 "Flock" 的 Flutter 新分支。此举是由于 Google 在处理桌面应用支持等方面的政策使一部分开发者感到不满,认为其发展速度和开放性不足。"Flock" 分支希望通过更加民主和包容的社区驱动模式,更好地响应开发者的需求。

A memory leak in Apple's Network Extension framework

macOS 15.0 Sequoia 被发现会存在大量的内存泄漏(14.0 也存在,但是量级很小),你可以通过 sudo leaks at.obdev.littlesnitch.networkextension | grep "total leaked bytes" 来查询自己是否受到影响。如果确实有大量内存泄漏,可以通过杀死 at.obdev.littlesnitch.networkextension 进程来强制释放。

 Developer - 设计开发加速器

案例研究:设计出色的 visionOS App

与我们一起探索出色的 visionOS App,了解设计师是如何针对无边画布进行创作的。在为期半天的讲座中,你将了解如何采用沉浸式功能、为眼睛和手设计交互体验,并充分利用深度、比例和空间。

另外还有 Apple Vision Pro 开发者实验室 的线下实验室,感兴趣的同学们可以积极报名。

文章

🐎 Xcode stops fetching Swift packages

@Smallfly:在 Xcode 16.1 中,Swift 包依赖突然无法获取,并出现 “ Fatal: cannot use bare repository ” 错误。经过排查,作者发现问题与 SourceTree 添加的全局 Git 配置 safe.bareRepository = explicit 有关。删除或注释掉该配置后,Xcode 恢复正常。

此配置的作用是提高安全性,建议不删除全局配置,而是通过命令手动标记相关仓库为安全:

git config --global --add safe.directory /path/to/repo

更详细的讨论可见 SPM 的 issue 8068,以及对应的 PR

🐕 逆流而上的设计 - Swift 所有权和 ~Copyable

@zoeGuo:Swift 5.9 中引入了不可复制类型的标记 ~Copyable(non-copyable),在今年的 Swift 6 中,之前类型扩展(extension)和泛型(generic)不支持 ~Copyable 的不足也得到了解决,~Copyable 的可用性得到了提升。文章用 ~Copyable 的工作方式、所有权转移关键字、在泛型或扩展中使用 ~Copyable,三个部分详细讲解了 ~Copyable 的概念、工作原理以及具体如何使用。作者在对 ~Copyable 的概念阐述中提到:“以往的协议是‘为类型增加功能’,而 ~Copyable 则是‘为类型解除限制’”,相信能帮助你更快理解 ~Copyable 协议。在文末:“只在确实需要独占资源或严格控制生命周期时才使用 ~Copyable,可能会是更加平滑和正确的方式”,也很好的总结了 ~Copyable 的使用场景。文中有大量代码例举以及内存管理的详细示意,强烈推荐阅读原文。

🐕 THREADS IOS PERFORMANCE

@DylanYang:本文是 Threads 开发讲述了 Threads 是如何优化 App 性能的。Threads 主要关注的性能指标包含了图片加载速度、网络内容的返回速度、发布成功率、页面加载耗时、发布可靠性等。本文对页面加载耗时和发布可靠性方面做了更深入的讲解,包括通过劣化实验推断页面加载耗时对业务数据的影响、提供 debug 工具帮助业务研发判断自己业务的性能水平以及发文草稿的磁盘占用对用户的体验影响等。本文对 Threads 各方面的性能监控、优化等都有涉及,想要优化自己 App 的读者可以细致阅读一下。

工具

screenshot-to-code

@EyreFree:screenshot-to-code 是一个开源 AI 代码生成工具,能将设计稿截图、Figma 设计稿或网页模型快速转换为干净、可用的代码。该工具支持多种技术栈,包括 HTML+Tailwind、React+Tailwind、Vue+Tailwind、Bootstrap 等。它支持 Claude Sonnet 3.5 和 GPT-4o 等模型。且近期加入了实验性功能,可以将网页交互的视频 / 屏幕录制转换为功能性原型。用户可以通过 Docker 快速部署。对于需要快速将设计转换为代码的开发者来说,这是一个非常实用的工具,感兴趣可以尝试。

音视频

🐕 SwiftConnection Videos, Material and Transcript

@Barney:该网站提供了关于 Swift 编程语言的会议资源,包括视频、材料和演讲稿。会议内容覆盖 Swift 性能优化、AI 集成、嵌入式 Swift 应用、可访问性构建等多个技术领域。这个平台为 Swift 开发者提供了丰富的学习材料和交流机会。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #311 | 2024-11-11

11 Nov 02:05
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🐕 Migrating Combine to AsyncAlgorithms

@zoeGuo:Swift Concurrency 发布以来,其设计在许多简单用例上大大超越了 Combine,而在 AsyncAlgorithms 发布之后,Combine 中的许多功能在 Swift Concurrency 中都可以使用。本文以一个示例项目为例,逐步演示了将 Combine 代码迁移到 AsyncAlgorithms 的过程,涵盖了数据源合并、流和节流、以及 CurrentValueSubject 到 AsyncChannel 的转换等常见场景。迁移后代码更简洁易读,易于维护;与 Swift Concurrency 无缝集成,享受异步编程的便利。

🐕 Expanding SwiftUI capabilities in Nutrient: Customizable main toolbar

@Barney:这篇文章主要探讨了在 SwiftUI 中使用主工具栏的实现方法。作者介绍了 SwiftUI 的 ToolBar 视图及其在 iOS 16 及以上版本中的应用,强调工具栏在提升用户体验和界面整洁性方面的重要性。文章通过示例代码展示了如何创建和自定义工具栏,包括添加按钮、分隔符以及响应用户交互的功能。此外,作者还讨论了工具栏的布局和风格设置,以及如何在不同设备上保持一致的用户体验。

🐕 Faster iOS Networking with Shared Dictionary Compression

@JonyFang: 共享字典压缩是一种有效加速 iOS 应用的网络性能的技术,通过在客户端和服务器之间共享数据字典来减少传输数据量。

工具

GitHub Copilot 官方发布 Xcode 插件

@kemchenj:Xcode 在 AI 补齐的功能上一直落后其它 IDE/Editor,虽然今年 Xcode 也发布了 Code Completion Prediction 功能,但只有国外能用。终于终于,GitHub Copilot 官方在近日发布了 Xcode 插件,让我们也可以用上 AI 补齐的功能:

  • 代码补齐
  • 多语言支持,包含 Swift/Objective-C/C/C++/Metal
  • 多行代码补齐
  • ...

周报之前其实也介绍过一款国内工程师开发的 Copilot Xcode 插件,经过了解之后发现 GitHub 这次发布的插件其实是 fork 出来的,并且是已经跟原版作者达成了协议,GitHub 也给了一点赞助金给作者

原版后续也会继续维护,而且就目前来说原版的功能甚至比 GitHub 版本更多更丰富。最后想说这大概是我入行以来看到最和谐的一次项目分叉了。

代码

🐕 Metal-Puzzles

@BluesJiang:这个代码库提供了一些简单的习题,用来联系编写 Metal 的 Custom Kernel,可以利用在 MLX、Metal Shader 等场景下。对于想学习使用 Metal 加速计算、自己写 Shader 的可以下载下来跟着教程周走一遍。仓库提供了一个测试框架,需要写的代码注意是在 source 变量字符串里。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)