File tree 1 file changed +9
-0
lines changed
1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change 59
59
60
60
如果你是一名希望拓展技术广度的开发者,值得一度。
61
61
62
+ ### 🐕 [ Fast & Fluid: Integrating Rust egui into SwiftUI] ( https://medium.com/@djalex566/fast-fluid-integrating-rust-egui-into-swiftui-30a218c502c1 )
63
+
64
+ [ @david-clang ] ( https://github.com/david-clang ) :作者在开发实时预览 SwiftData 和 CoreData 数据库的 Mac App [ DataScout] ( https://apps.apple.com/us/app/datascout-for-sqlite-swiftdata/id6737813684 ) 时,发现 SwiftUI 的 ` Table ` 性能相当差,尝试用 AppKit 的 ` NSTableView ` 也无法满足需求,最后用 Rust 的 UI 框架 ` egui ` 去优化性能。作者把 SwiftUI 中嵌入 ` egui ` 渲染视图的 Demo 整理成文章,还用代码示例展示如何在 SwiftUI 的 ` NavigationSplitView ` 中嵌入 ` egui ` 渲染的视图。以下是` egui ` 和传统 UI 框架的对比:
65
+
66
+ - 传统 UI 框架(如 SwiftUI、UIKit)多采用** 保留模式(Retained Mode)** ,需显式管理 UI 组件状态(例如按钮状态、列表数据等),框架内部通过对比新旧状态差异来局部更新界面。
67
+ - ` egui ` 的** 即时模式(Immediate Mode)** 则相反:** 每帧完全丢弃旧 UI 状态** ,根据当前数据重新生成整个界面,通过高频重建实现“无状态化”。
68
+
69
+ 虽然 Demo 中使用 ` egui_wgpu_backend ` 作为渲染后端,但它在 Metal 上渲染单帧需要 10 毫秒,作者在开发 [ DataScout] ( https://apps.apple.com/us/app/datascout-for-sqlite-swiftdata/id6737813684 ) 时,通过自定义渲染后端,把帧渲染时间缩短到仅 1-2 毫秒,最终才实现高性能需求,可见把 “SwiftUI 中嵌入 ` egui ` 渲染视图” 封装成成熟框架会比较难,但本文优化 SwiftUI 性能的思路值得我们学习。
70
+
62
71
## 工具
63
72
64
73
> 开发过程中常用的工具,及一些新工具的介绍
You can’t perform that action at this time.
0 commit comments