首页
/ SwiftOldDriver/iOS-Weekly 技术周报第324期解读

SwiftOldDriver/iOS-Weekly 技术周报第324期解读

2025-06-12 22:47:39作者:庞眉杨Will

项目介绍

SwiftOldDriver/iOS-Weekly 是一个专注于 iOS 开发领域的技术周报项目,由国内资深 iOS 开发者维护。该项目每周精选 iOS 开发相关的新闻、文章、工具和技巧,为开发者提供高质量的技术资讯。第324期周报发布于2025年2月24日,涵盖了iOS 18.4 Beta 1新特性、SwiftUI Preferences机制、Swift 6同步框架等多个技术主题。

iOS 18.4 Beta 1新特性解析

苹果最新发布的iOS 18.4 Beta 1版本为中国用户带来了期待已久的中文版Apple Intelligence功能。根据官方发布说明,开发者需要注意以下两点:

  1. 对于非英语的中文用户,使用Apple Intelligence功能需要预先启用Siri,并允许通过任何方式唤醒Siri。
  2. 设备还原后可能会出现Apple Intelligence显示"Downloading support..."的错误提示,此时重启设备可能解决问题。

SwiftUI Preferences机制深度解析

SwiftUI中的Preferences机制是视图间通信的重要方式,特别是在父子视图间传递数据时非常有用。Preferences允许子视图向上传递信息到父视图,而不需要显式地通过绑定或环境对象。

开发者可以利用Preferences构建各种自定义视图功能,如表单验证等。在Swift 6中,Preferences机制可能会有一些变化,开发者需要关注这些潜在的兼容性问题。

Preferences的工作流程通常包括:

  1. 定义自定义PreferenceKey类型
  2. 在子视图中设置preference值
  3. 在父视图中使用onPreferenceChange接收更新

Swift 6同步框架详解

Swift 6引入了全新的同步框架,主要包含两个底层结构:Mutex和Atomics。

Mutex(互斥锁)

Mutex能够自动为被它包裹的数据访问加锁,其性能与手动代码加锁相当,但相比使用Actor有显著性能优势。不过需要注意的是,Mutex会阻塞当前线程,这是它与Actor的主要区别。

Atomics(原子操作)

Atomic可以确保被它包裹的操作成为原子操作,不会被并发打断。从性能角度看,Atomic与Actor相比没有明显优势,因此在大多数情况下使用Actor已经足够满足需求。

开发者应根据具体场景选择合适的同步机制:

  • 需要高性能且可以接受线程阻塞时,考虑使用Mutex
  • 需要简单易用的并发控制时,Actor是更好的选择
  • 需要确保单个操作的原子性时,可以使用Atomic

VisionOS开发与TabletopKit框架

在VisionOS应用开发中,TabletopKit框架为桌面游戏类应用提供了强大支持。这个框架特别适合开发密室逃脱等交互式场景,主要特性包括:

  1. 多人互动支持
  2. 智能的桌面Persona布局
  3. 丰富的交互能力
  4. 针对Vision Pro设备的优化

对于想要开发Vision Pro桌面游戏的开发者,TabletopKit提供了完整的解决方案和API支持。

Xcode 16开发问题解决方案

升级到Xcode 16后,开发者可能会遇到"Waiting to reconnect to..."的问题,特别是在Apple TV(tvOS 17.7)上构建应用时。这个问题通常是由于DDI(Developer Disk Image)内容过时导致的。

解决方案是运行以下命令更新DDI:

xcrun devicectl manage ddis update

这个方法不仅适用于tvOS开发,也可以解决iOS开发中的类似连接问题。Xcode 16引入了新的DDI管理方式,开发者需要适应这一变化。

FFmpeg汇编课程简介

FFmpeg团队推出的汇编课程对于视频编解码开发人员非常有价值。FFmpeg作为业界最重要的开源视频编解码库,使用了大量汇编代码来优化性能。

目前课程主要基于x86架构的汇编语言,但团队表示未来会添加ARM架构的内容。学习这些汇编优化技术可以帮助开发者:

  1. 理解高性能视频处理的底层原理
  2. 学习关键的优化技巧
  3. 掌握现代多媒体开发的底层技术

iOS设备离线运行LLM模型

现在可以在iPhone上离线运行大型语言模型(LLM)了。通过fullmoon应用,用户可以直接在设备上运行mlx-community/DeepSeek-R1-Distill-Qwen-1.5B-4bit模型。

技术实现基于苹果的MLX Swift框架,iOS开发者可以通过修改LLMEval示例来运行DeepSeek模型。根据测试:

  • iPhone 16 Pro可以流畅运行1.5B和7B规模的模型
  • 无需网络连接,完全离线运行
  • 响应速度快,适合隐私敏感场景

DispatchConcurrentQueue使用注意事项

开发者在使用DispatchConcurrentQueue时需要注意,这个API实际上从iOS 17才开始可用。Xcode 15存在标注错误,虽然能通过编译检查,但在运行时会导致崩溃。

关键点:

  • Xcode 15错误地标记了API可用性
  • Xcode 16已修正这个问题
  • 实际最低支持版本是iOS 17
  • 使用时务必进行版本检查

总结

本期SwiftOldDriver/iOS-Weekly技术周报涵盖了从系统更新到底层优化的多个技术主题。对于iOS开发者来说,这些内容既有即时的实用价值,也有长期的技术参考意义。特别是Swift 6的同步框架和VisionOS开发工具,代表了苹果平台开发的未来方向。开发者可以根据自己的项目需求,选择性地深入研究相关技术点。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
docsdocs
暂无描述
Markdown
827
5.48 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
494
515
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
783
1.57 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
800
1.14 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
970
2.28 K
kernelkernel
deepin linux kernel
C
32
16
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
480
312
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.01 K
766
cannbot-skillscannbot-skills
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Markdown
1.26 K
808
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
647
284