你的角色不再是工程师,是产品负责人

"我能不能不会写代码就做一个 iPhone app?"——三年前问这个问题会被劝退,一年前说"试试看",现在的答案是确定的:能。这个系列要带你从零做一个叫实图小记的 app——拍张图,本地的 Apple Vision 做 OCR 与物体识别、Core ML 模型给标签、云端的 Claude Vision 用一段自然语言描述这张图,三条结果一起留进历史记录里随时可搜,最后打包上 TestFlight 装进自己手机。整个过程你不需要写一行 Swift

这件事过去为什么做不到

苹果生态对外行的门槛从来不是单点的,而是堆叠的。Swift 和 SwiftUI 的语法不算最难,但闭包、@State@Binding、Combine 这些概念串起来足够把没受过训练的人挡在门外。Xcode 本身又是一个有自己脾气的庞大 IDE,签名、Bundle ID、Provisioning ProfileInfo.plist 每一个名词背后都站着一个能让你卡半天的具体问题。再往上还有审核:PrivacyInfo.xcprivacy 缺了字段会被打回,相机权限文案写得太敷衍会被打回,描述里出现"AI"两个字处理不当也会被打回。

老一代 AI 工具——Copilot、ChatGPT 那种——并不能真正帮你跨过这堵墙,它们是补全式的:你在写代码它在旁边递东西,前提是"你在写代码"。一个完全不会 Swift 的人面对 Copilot 弹出的灰色建议,连按 Tab 还是 Esc 都判断不了。它能写代码,但它写不了"一个 app"。

现在为什么能做到

转折点是 agent 形态的工具成熟。Claude Code 这类东西的工作方式和 Copilot 根本不是一回事:你交给它的是目标——"给这个 app 加一个从相册选图的页面,选完显示在主屏,跑一下确认能编译"——它自己用 GlobGrep 摸清你的项目结构、自己用 Read 读相关文件、自己改一组文件、自己跑 xcodebuild 看是否通过、看到红色报错自己继续往下修。整个工作单位从"下一行代码"变成了"这个任务做没做完"。

这件事一旦成立,"会不会写 Swift"就不再是必须项。Xcode 的命令行工具(xcodebuildxcrun simctl)足够稳定,模拟器可以从命令行启动、装 app、灌图片进相册、抓崩溃日志,这些都是 AI 能自己做的动作。苹果的隐私清单、权限文案、审核要点都被详尽文档化,描述一句"这个 app 会拍照识别物体"就足够 AI 给你生成合格的 Info.plistPrivacyInfo.xcprivacy。剩下那些必须由人在网页上点的环节——App Store Connect 注册、TestFlight 邀请、审核员的英文回复——也都是有限步骤、有标准答案的事。

也就是说,原本横在外行面前的那堵墙没消失,只是被搬到了 AI 这一边。

你的角色变了

这个变化最容易被低估的部分是:你的工作内容也跟着变了。你不再是工程师,你是这个 app 的产品负责人加 QA。你的输出物不再是代码,而是三件别的东西——清晰可执行的需求描述、对成品的验收判断、出错时把信号准确回灌给 AI 的能力。

需求颗粒度是这里第一个要练的肌肉。"做一个图片识别 app"太大,AI 会拍脑袋;"在 ContentView.swift 第 24 行的 VStack 里加一个 Button"又太小,把你的精力浪费在你本来不需要管的事上。合适的颗粒大概是"加一个首页 Tab,里面一个大按钮叫开始识别,点了之后弹出系统相册选图,选完先把图显示在中间,下方留三个空白卡片占位识别结果"——目标完整、约束具体、不规定怎么实现。

验收的肌肉也得练。每做完一步至少看三件事:能不能编译过、模拟器跑起来长不长得对、点上去行不行得通。看不懂代码没关系,但模拟器是骗不了人的——按钮点了没反应你立刻看得见,权限弹窗文案不对你也立刻看得见。出错时把模拟器截图、Xcode 报错日志、崩溃栈完整贴回 Claude Code 的对话里,让它自己定位,比你硬猜要快得多。

但有两种代码你不能"全信"

整个系列会反复强调一句话:95% 的代码可以不读,5% 的代码必须慢下来。

第一种是隐私敏感代码——API Key 怎么存、网络请求怎么发、Keychain 怎么读写。这些地方写错了泄露的是你或你用户的钱包,AI 会写出能跑的版本但未必是最稳的版本,必须让它逐行解释给你听到你能复述为止。

第二种是审核相关配置——Info.plist 里相机权限的用途说明、PrivacyInfo.xcprivacy 的数据采集声明、Bundle ID 和签名的对应关系。这些地方写错了 app 上不了架,浪费的是你提交后两到三天的等待。

这两类内容会出现在第 09 篇(API Key 与安全)和第 12 篇(上架准备),到时候节奏会明显慢下来。其余的 UI、状态管理、数据库 schema、模型集成代码,你看模拟器跑得对就够了。

你需要会什么、不需要会什么

需要会的就三件:装软件不慌(Xcode、Claude Code、Apple Developer 账号)、看英文报错能看懂大概意思(看不懂可以让 AI 翻译再解释)、知道自己想要什么(这是最关键的,AI 救不了不知道自己想做什么的人)。

不需要会的则是一长串:Swift 语法、SwiftUI 的声明式范式、@State@Binding 的差别、async/await 的工作原理、Combine、Core Data 与 SwiftData 的取舍、@MainActor 的含义。这些东西在过去是开发者必须啃下来才能动工的前置知识,现在是 AI 在你看不到的地方自己处理掉的实现细节。

如果你对这个分工感觉不太自在——"我用了它做的东西却不懂它在做什么"——这是正常反应,但不是你应该退回去自学 Swift 的信号。会写代码的人改用 agent 之后也是大量代码不读的。区别在于他们读得懂随时能掀开看;而你掀开也看不懂。好消息是 Claude Code 永远在你旁边——任何一段代码你想知道它在干嘛,只需要让它解释给你听,它能把"这一段代码做什么、为什么这么写、改坏了会怎么样"讲到你听明白为止。这种"按需 demand"的理解方式,比从头啃一本《Swift 入门》要高效得多。

这个系列和 claude-code 系列的关系

如果你看过这个博客的 claude-code 系列,那个系列讲的是工具本身怎么用——CLAUDE.md、Plan Mode、上下文管理、子 agent。这个系列是那个系列的实战延伸:把工具的能力用到极限,去做一件原本需要专业技能的事。两个系列可以独立读,但合起来更有意思——一个讲剑法,一个讲怎么用剑做出一道菜。

下一篇

下一篇装 Xcode、配 Apple Developer 账号、把 Claude Code 接到一个空的 SwiftUI 项目上,并给苹果项目写一份合身的 CLAUDE.md——这一份说明书会跟着你贯穿整个系列。

参考资料

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:不写一行代码做 iOS app,凭什么是 2026 年的事

本文链接:https://www.sshipanoo.com/blog/ai/vibe-ios/01-为什么现在能做/

本文最后一次更新为 天前,文章中的某些内容可能已过时!