Swift入门教程:iOS开发第一步 —— 一个前端仔的硬核转型手记

深夜构建者
2025-12-18 21:07
阅读 1814

上周五晚上十点半,我瘫在工位上盯着屏幕上那行红色报错 Missing required module 'SwiftShims',手里捏着半凉的瑞幸,心里默念:“这破玩意儿要是再编不过,我就把MacBook扔进朝阳门地铁站的垃圾桶。”

别误会,我不是被产品经理逼着写原生App(虽然他也提过好几次“你们前端能不能顺手搞个iOS版?”),而是——简历焦虑了。作为一个在北京通勤一小时、每天挤10号线像沙丁鱼罐头一样的前端工程师,我发现自己投出去的简历要么石沉大海,要么 HR 回一句:“我们更倾向全栈或懂移动端的同学。”

行吧,那就学 Swift 吧。反正我平时就爱翻 GitHub 上的开源项目源码,命令行比 GUI 用得还溜,说不定还能给公司省点外包预算?(老板:你想多了)


为啥是 Swift?不是 Flutter、React Native,也不是 Objective-C?

我知道你在想什么:“都 2024 年了,还写原生 iOS?有病吧?”

先说结论:如果你想真正理解 Apple 生态、做出符合 HIG(Human Interface Guidelines)的 App,或者准备跳槽去字节/美团这类大厂(他们很多核心 App 还是原生),Swift 是绕不开的门槛。

当然,我也试过其他方案:

技术栈 优点 缺点 适合谁
Swift (原生) 性能最强、API 最新、审核最稳 学习曲线陡、Xcode 偶尔抽风 想深耕 iOS / 跳槽大厂
Flutter 跨平台、热重载快、UI 自由 包体积大、原生交互需桥接、审核有玄学风险 初创公司 / MVP 快速验证
React Native 前端友好、社区大 性能一般、iOS/Android 行为不一致 已有 React 经验的团队
Objective-C 老项目维护必备 语法反人类、ARC 内存管理劝退新人 遗留系统维护者

作为一个喜欢研究源码的人,我其实对 Flutter 的渲染机制挺感兴趣,但当我看到某同事的 App 因为“使用私有 API”被拒审三次后,我果断放弃了跨平台幻想。Apple 的生态,就得用 Apple 的语言来玩。


第一步:环境搭建 —— Xcode 的“初次见面,请多指教”

打开 Mac App Store,下载 Xcode。友情提示:别在周五下班前开始下! 我上次在双11大促前夜下 Xcode,结果 12GB 的安装包卡到凌晨两点,第二天晨会直接睡死在 Zoom 里(别问,问就是 P0 故障复盘会)。

装完之后,打开终端,输入:

swift --version

如果输出类似:

Swift version 5.9 (swiftlang-5.9.0.124.1 clang-1500.0.40.1)
Target: arm64-apple-macosx14.0

恭喜,你已经迈出了第一步!比我还强——我第一次输的是 swift -v,然后被无情嘲讽:“Bro, that’s not a git command.”


Hello World 不是重点,重点是理解 Swift 的“性格”

Swift 其实是个很“傲娇”的语言:它既想保持 C 系语言的性能,又想拥有 Python/Ruby 的简洁。比如这段代码:

let names = ["Alice", "Bob", "Charlie"]
let greetings = names.map { "Hello, \($0)!" }
print(greetings)
// 输出: ["Hello, Alice!", "Hello, Bob!", "Hello, Charlie!"]

是不是有点像 JS 的 map?但注意:let 是不可变的,var 才是可变的。这点和 JS 反着来,刚上手时我老是写成 var name = "Claude",结果被同事吐槽:“你这是怕内存不够用吗?”

关于书籍:别信“7天精通”,老老实实看官方文档

我一开始买了本《Swift 编程权威指南》,结果前三章讲类型推断讲得我直打哈欠。后来发现 Apple 官方的 Swift Programming Language Guide 才是真·圣经——免费、更新快、例子全是 Playgrounds 实时运行的。

另外推荐一本实战书:《iOS Programming: The Big Nerd Ranch Guide》。虽然名字中二,但它的项目驱动式教学特别适合我这种“不动手就学不会”的人。上周我照着它写了个体感控制的小球动画,发到朋友圈后,产品经理居然问我:“这个能加到我们 App 的引导页吗?”(内心 OS:你上周还说要做极简风呢!)


SwiftUI vs UIKit:新时代 vs 老江湖

这里必须聊个灵魂问题:新手到底该学 SwiftUI 还是 UIKit?

我的建议是:如果你从零开始,且目标是 iOS 15+,直接上 SwiftUI。

为什么?因为:

  1. 声明式语法:UI 和逻辑高度耦合,改个颜色不用翻 3 个文件;
  2. Preview 实时预览:再也不用每次改个按钮都 Build 3 分钟;
  3. Apple 力推:WWDC 每年都在加新特性,未来肯定是主流。

当然,现实很骨感。我们公司的老项目还是 UIKit + Storyboard,每次 merge 代码都要祈祷没冲突——Storyboard 的 XML 冲突简直比 Git 冲突还难解。

但作为新人,你没必要背历史包袱。试试这个 SwiftUI 的 “Hello World”:

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello, iOS!")
                .font(.largeTitle)
                .foregroundColor(.blue)
            Button("Click me") {
                print("Button tapped!")
            }
        }
        .padding()
    }
}

保存后,右边的 Canvas 自动渲染出界面。点击按钮,控制台立刻打印日志。这种即时反馈,真的会上瘾。


踩坑实录:那些让我想砸键盘的瞬间

坑 1:@State@Binding 到底啥区别?

刚开始写状态管理,我总搞混这两个属性包装器。后来我悟了:

  • @State我是这个值的爹(Owner)
  • @Binding我只是个传话的(Proxy)

比如:

struct ParentView: View {
    @State private var isActive = false
    
    var body: some View {
        ChildView(isActive: $isActive) // 注意 $ 符号!
    }
}

struct ChildView: View {
    @Binding var isActive: Bool // 不是 @State!
    
    var body: some View {
        Toggle("Active", isOn: $isActive)
    }
}

漏掉 $?恭喜,你将收获一段长达两小时的 Debug 之旅。

坑 2:App Store 审核的“潜规则”

我第一个小工具 App(一个命令行快捷启动器)被拒了两次,理由是:

“Your app provides limited functionality and does not offer sufficient value to the user.”

翻译成人话:“你这玩意儿连个登录都没有,也敢上架?”

后来我硬加了个“每日 Swift 小技巧”页面(数据来自 GitHub Gist),第三次才过审。所以提醒各位:别做纯工具类小应用,至少包装点内容。


简历怎么写?别只写“熟悉 Swift”

现在回到最初的问题:学 Swift 对简历有帮助吗?

有,但前提是你得做出东西来。

别写“掌握 Swift 基础语法”——HR 看了只会划走。要写:

  • “使用 SwiftUI 开发个人效率工具 App,集成 Core Data 实现离线缓存,上架 App Store”
  • “通过阅读 Alamofire 源码,实现自定义网络拦截器,减少 30% 冗余请求”
  • “优化启动时间:将 didFinishLaunching 时间从 1.2s 降至 0.4s”

数字 + 场景 + 结果,才是简历王道。

顺便安利:GitHub 上有个 Open Source iOS Apps 列表,随便挑一个 Star 高的项目 clone 下来跑一跑,比刷 LeetCode 实用多了。


最后几句掏心窝子的话

学 Swift 的这两个月,我最大的感受是:Apple 的生态壁垒是真的高,但一旦进去,体验是真的爽。

动画丝滑到让你怀疑人生(UIViewPropertyAnimator 真香),内存管理自动到几乎不用管(ARC yyds),甚至连崩溃日志都格式清晰(对比 Android 的 stack trace… 哎)。

当然,Xcode 卡顿、Simulator 抽风、证书配置像解谜游戏……这些痛我也都经历过。但每次看到自己写的 App 在真机上流畅运行,那种成就感,比修复一个线上 P0 Bug 还爽。

所以,如果你也在北京挤地铁、刷 BOSS 直聘、焦虑简历没亮点——
不如今晚回家,打开终端,敲下 swift --version

你的 iOS 开发第一步,可能就从这一行命令开始。

(P.S. 我那个命令行启动器 App 已经上架了,叫 “QuickRun”,搜不到别怪我,毕竟它现在只有 3 个用户——我和我俩朋友 😅)

评论 0

最热最新
暂无评论
深夜构建者Lv.1
0
影响力
0
文章
0
粉丝