Skip to content

老司机 iOS 周报 #323 | 2025-02-17

Latest
Compare
Choose a tag to compare
@ChengzhiHuang ChengzhiHuang released this 16 Feb 13:22
· 2 commits to master since this release

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

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

新闻

Updating the Visual Studio Code extension for Swift

@Cooper Chen:Swift 团队正式支持 Visual Studio Code 中的新版本 Swift 扩展,旨在提升跨平台开发体验。原有扩展已迁移至 GitHub /swiftlang 组织,确保更广泛的社区支持和持续更新。对于现有开发者,升级过程无缝衔接,旧版扩展会自动替换为新版,用户可以轻松过渡。如果你是 Swift 开发者,可以尽快更新以体验更多功能和改进。

文章

🐕 Creating a reusable action menu component in SwiftUI

@AidenRao:这篇文章详细介绍了如何通过 SwiftUI 构建一个高度复用、和 Apple Mail 中的操作菜单风格一致的动作菜单组件:

  • 视图构建器与解耦:通过 @ViewBuilder 允许动态注入菜单内容,提升组件的通用性
  • SwiftUI 风格系统:利用 LabelStyle 和 ButtonStyle 统一管理样式,确保视觉一致性
  • 封装与复用:通过视图修饰符将复杂逻辑隐藏,调用时仅需链式语法(如 .actionMenu {title: ..., isPresented: ...}),类似 SwiftUI 原生 API 的体验

作者也提供了配套的 GitHub 库(ActionMenu),支持通过 Swift Package Manager 集成。

🐎 Attaching debugger to system apps

@Kyle-Ye: 作者分享了调试 iOS 模拟器中系统 App 的一些经验:在关闭 macOS SIP 后我们即可对任何进程进行调试,然后使用 simctl 命名启动对应系统 App 并获取 PID,最后在 Xcode 中对该 process 进行 debug 即可。

🐎 Attending Apple Intelligence and App Intents workshop at Paris

@Smallfly:这是一篇苹果在巴黎举办的技术研讨会议内容,主题围绕如何通过 Apple Intelligence 和 App Intents 框架增强应用功能,提升系统集成能力。涵盖从代码实现到系统集成的关键步骤,并透露出苹果在智能化和本地化功能上的战略布局。

iOS App Intents 是苹果生态中实现「功能原子化」的核心工具,通过标准化接口打通应用与系统的边界。开发者通过定义意图和实体,即可将应用融入 Siri、搜索、自动化等场景,为用户提供无缝、智能的体验。随着 Apple Intelligence 的深化整合,其应用潜力将进一步释放,对于关注 AI 集成的开发者,有较高的参考价值。

🐢 Flutter 3.29 发布,看起来会是一个“大坑”的版本

@david-clang:本文结构和内容参考 Flutter 技术项目经理的 What ’ s new in Flutter 3.29 ,作者在官方软文报喜不报忧的基础上,给出开发者角度的担忧,例如:

  1. Dart 代码会直接在 Android 和 iOS 的主 UI 线程上运行,而不是单独的 Dart UI 线程,此时 Dart 和平台调用直接可以同步执行。
  2. 没有 Vulkan 驱动的 Android 设备将回退到在 OpenGLES 上运行的 Impeller,而不是使用 Skia。
  3. 移除了 Flutter Gradle 插件,之前没迁移的需要手动迁移适配。

而且 Flutter 创始人 Eric 也对“废弃 Dart 独立 UI 线程”发表了 comment,表怀疑态度,比如 Dart 和 Native 平台同一线程之后,那么「滚动 / 动画」是否会因此出现相互影响,特别是第三方插件处理不当的时候,反而可能更加卡顿。官方回复 Eric 这利大于弊,而 Eric 表示后面有空整理文档回复该讨论。

工具

🐢 SweetPad: Develop Swift/iOS projects using VSCode

@阿权:之前你可能听说过 VSCode 插件 Swift Programming Language,官方大力宣传可以 Swift 可以跨平台开发了,但也就仅限于开发 Swift 了(语法高亮、代码补全、错误检查、Swift Package Only),还是不能取代 Xcode 进行 iOS 开发。

SweetPad 或许能做到这一点,其也是一款 VSCode 插件,旨在使用 VSCode 开发 Swift/iOS 项目,成为 Xcode 以外的替代 IDE 方案。SweetPad 通过集成各种开源工具(swift-format、swiftlint、xcodebuild、xcrun、xcode-build-server、sourcekit-lsp 等)直接在 Xcode 生成(当然也可以用 XcodeGenTuist 生成)的项目文件进行开发、运行和调试。换句话说,SweetPad 通过各种命令行工具实现并对齐 Xcode 的各项能力。

SweetPad 目前实现能力有:

  • Xcode 项目文件编辑:通过 Tuist 工具实现。
  • 自动补全(SourceKit-LSP)、单元测试:通过 Swift 插件 + xcode-build-server 工具实现。
  • 调试:通过 CodeLLDB 实现。
  • 运行到模拟器和真机:通过 xcrun simctlxcrun devicectl 命令行实现。
  • 格式化:通过 swift-format 实现。

SweetPad 还没使用最近开源的 swift-build,还是使用 xcodebuild + sourcekit-lsp 的方案,所以还是得安装 Xcode 环境。另外,诸如 SwiftUI Preview、XIB/Stroyboard 可视化、签名证书管理等也尚未支持。

之前 #224 周报有提到 用 VSCode 基于 Bazel 打造 Apple 生态开发环境 则是实现一套 Bis + Bazel 编译系统的 VSCode 开发环境,感兴趣的同学可以对比着阅读。

Tips

一个使用 Instrument 的小技巧

@Barney:Instrument 录制结束卡顿很久或者秒退时,可用的设置。只采集最后几秒的数据,对于一些需要前置操作一段时间才能复现的问题时,会有较大帮助。在处理大量长时间数据时,Instrument 会有较大卡顿并消耗大量内存,此时就可以开启这个选项。

Instrument

内推

重新开始更新「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)