SwiftUI 劝退实录:AI 都无能为力,你敢用吗?

我完全不理解为什么 SwiftUI 要支持这种写法:让一个 view 去调用自己根本不存在的属性,还能"生效"。比如 .navigationTitle ------本来应该是页面级别的东西,结果你随便在一个 TextButton 上写,它都能改导航栏标题。 但哪个生效?完全不确定。

我写了段hello world 级别的代码,任何子 view 都能 .navigationTitle("xxx"),你猜猜最终会显示什么?

我问了好几个 AI,全军覆没,一个都没答对。

css 复制代码
struct AddView: View {
    var body: some View {
        ScrollView{
            VStack{
                Button(action: {}, label: {
                    Text("button")
                        .foregroundColor(.white)
                        .frame(height: 30)
                        .frame(maxWidth: .infinity)
                        .background(Color.accentColor)
                        .cornerRadius(10)
                        .navigationTitle("title1")
                })
                .navigationTitle("title2")
                
                Text("text")
                    .navigationTitle("title3")
            }.padding(15)
            .navigationTitle("title4")
        }.navigationTitle("title5")
    }
}
#Preview {
    NavigationStack{
        AddView()
    }
}

好了,揭示结果

最终的 title 如图所示,显示的是 title1

更离谱的是,这还不是个例。不光是 .navigationTitle,很多 SwiftUI 的 写法 都存在类似问题:表面上修饰局部,其实是全局冒泡,导致歧义、结果不直观,维护起来还埋坑。

这种设计到底是为了所谓的"灵活",还是偷懒的语法糖?无论如何,带来的体验只有一个词能形容:迷惑。

或许有人会说:"你别这样写不就行了?" 但问题是 ------ SwiftUI 本来就允许这样写。项目一旦复杂起来,或者多人合作,甚至是接手别人代码的时候,你根本无法确保没人这么用。一旦遇到问题,调试起来极其困难。

而且最最最大的问题是:AI 根本帮不了你。 都 2025 年了,这么一小段 SwiftUI 代码,AI 仍然无法稳定分析对错。你敢想?别人写其他代码的遇到问题 AI 一补全,分分钟下班。你写 SwiftUI,遇到个小 bug,谁都帮不了你 ------ AI 不行,群里的老哥大多数也不懂 SwiftUI,最后只能自己一个人摸黑查,个人小项目无所谓,公司项目 你不完全摸清你能下班?

你以为的 SwiftUI 是「比 UIKit 少写 30%-50% 代码,开发效率高很多」,实际体验却是:2 小时飞机 vs 4 小时高铁。 飞机看似快,但你得提前很久到机场,机场又远在郊区,安检、候机、延误......加起来,可能还不如稳稳当当坐高铁四小时。2 小时飞机 只有对比 8 小时以上高铁 才算是有优势。 SwiftUI 就是这样 ------看似优雅省事,实际暗坑重重,会更折腾。

我也真不懂,为什么会有人劝新人入坑就直接学 SwiftUI,还能一脸轻松地说"SwiftUI 简单"。说简单的,大概率都是已经熟悉过 UIKit、或者其他端老程序员吧。 你确定一个新人能看懂 SwiftUI 这一堆花里胡哨的语法糖?

更现实的是,只学 SwiftUI 能找到工作的概率基本为 0。就算运气好进了公司,接手的项目十有八九还是 UIKit 的。所以如果是以找工作为目的入坑 iOS,优先建议学 UIKit,SwiftUI 顶多是锦上添花。

别的不说,光是游戏开发,ios 端的工程几乎和 swiftui 无关,甚至还是 Objective-C 的老代码,这个绕不过去。

下面是 ai 阵亡案发现场

GPT5

Gemini

QWEN

Deepseek

相关推荐
zhyongrui2 天前
SnipTrip 菜单 Liquid Glass 实现方案:结构、材质、交互与深浅色策略
ios·性能优化·swiftui·交互·开源软件·材质
zhyongrui2 天前
SnipTrip 不发烫的实现路径:局部刷新 + 合成缓存 + 峰值削减
ios·swiftui
初级代码游戏3 天前
iOS开发 SwiftUI 14:ScrollView 滚动视图
ios·swiftui·swift
初级代码游戏3 天前
iOS开发 SwitftUI 13:提示、弹窗、上下文菜单
ios·swiftui·swift·弹窗·消息框
zhyongrui3 天前
托盘删除手势与引导体验修复:滚动冲突、画布消失动画、气泡边框
ios·性能优化·swiftui·swift
zhyongrui4 天前
SnipTrip 发热优化实战:从 60Hz 到 30Hz 的性能之旅
ios·swiftui·swift
大熊猫侯佩5 天前
赛博深渊(上):用 Apple Foundation Models 提炼“禁忌知识”的求生指南
llm·swiftui·大语言模型·foundationmodel·apple ai·apple 人工智能·summarize
zhyongrui6 天前
SwiftUI 光晕动画性能优化:消除托盘缩放卡顿的实战方案
ios·性能优化·swiftui
大熊猫侯佩7 天前
星际穿越:SwiftUI 如何让 ForEach 遍历异构数据(Heterogeneous)集合
swiftui·swift·遍历·foreach·any·异构集合·heterogeneous
符哥20087 天前
对比ArkTsUI和Flutter和 SwiftUI 和Jetpack Compose四个框架语法及使用场景。
flutter·ios·swiftui