AnyView 对 SwiftUI 性能的影响
原文中文,约3100字,阅读约需8分钟。
📝
内容提要
AnyView是一种类型擦除的视图,对于SwiftUI容器中的异构视图非常方便。然而,使用AnyView可能会导致功能损失。通过对比使用泛型和使用AnyView的修正完成,进行了一些测量。结果显示,在阅读数据时,使用AnyView会导致功能退化约10%至16.5%。因此,在异构视图的可滚动列表中,最好为容器中的不同视图使用具体类型,而不是使用AnyView。
❓
Q&A
AnyView是什么,它在SwiftUI中有什么作用?
AnyView是一种类型擦除的视图,适用于SwiftUI容器中的异构视图,能够简化代码而无需指定每个视图的详细类型。
使用AnyView会对SwiftUI的性能产生什么影响?
使用AnyView可能导致功能损失,性能退化约10%至16.5%,并且在更新视图时可能出现更多的卡顿。
在什么情况下使用AnyView对性能影响不大?
在某些情况下,例如菜单视图中,使用AnyView对性能影响不大。
Apple对在ForEach中使用AnyView有什么建议?
Apple建议在ForEach中避免使用AnyView,以防止性能问题。
在没有AnyView的情况下,SwiftUI的性能表现如何?
在没有AnyView的情况下,平均FPS约为59帧,滚动流畅且响应迅速。
使用AnyView时,FPS会降到多少?
使用AnyView时,平均FPS降至55帧,更新视图时可能降至50以下。
🏷️