UIKit vs SwiftUI:2024年开发者如何选择?
Swift开发者社区早已分为两大阵营:忠于UIKit的保守派,以及学习SwiftUI的爱好者。但在实际项目中,人们到底使用什么?一项针对iOS/macOS工程师的最新调查,覆盖了各大会议和专业聊天群,结果出人意料。
调查方法
超过850名来自俄罗斯、独联体和欧洲的工程师参与了此次调查,他们都在从事生产环境项目(App Store应用、企业解决方案、SaaS产品)。受访者被要求指出主要的UI框架,以及附加工具:Combine、Async/Await、Core Data、Realm等。
关键数据
- UIKit——58%的受访者将其作为iOS/macOS生产环境的主要框架。
- SwiftUI——32%的开发者已将其应用于实际项目,但通常是与UIKit混合使用。
- 纯SwiftUI(不含UIKit)——只有10%的受访者敢于完全迁移。
- Combine——在45%的项目中使用,通常与UIKit一起使用。
- Async/await(结构化并发)——67%的开发者已将其用于生产环境,无论选择哪个UI框架。
为什么UIKit仍然领先?
尽管Apple积极推广SwiftUI,UIKit仍然是行业的“主力军”。主要原因:
- 成熟与稳定——UIKit已存在超过10年,其行为可预测。
- 兼容性——大量遗留代码和第三方库依赖于UIKit。
- 灵活性——UIKit可以实现复杂的自定义UI元素,而在SwiftUI中则需要变通方法。
- macOS Catalyst——许多人通过UIKit将iPad应用移植到Mac。
SwiftUI:突破还是实验?
SwiftUI正在迅速增长,尤其是在初创公司和新项目中。然而,生产环境经验表明:SwiftUI仍然存在以下问题:
- 对复杂动画和自定义布局的支持有限。
- 在处理大型列表时存在性能问题(LazyVStack vs UICollectionView)。
- 不完全的向后兼容性(SwiftUI需要iOS 13+,而许多公司支持iOS 15+)。
尽管如此,32%的受访者已经在生产环境中使用SwiftUI——相比2023年增长了12%。趋势很明显:在未来2-3年内,SwiftUI在新项目数量上可能超过UIKit。
附加工具:还有哪些常用?
调查还涉及了数据处理和网络栈:
- Alamofire——34%(逐渐被URLSession + async/await取代)。
- Core Data——28%(主要用于旧项目)。
- Realm——15%(由于MongoDB停止积极支持,受欢迎程度下降)。
- SwiftData——12%(Apple的新框架,刚刚开始采用)。