swift 是苹果公司推出的现代编程语言,主要用来开发苹果生态的应用,覆盖 ios macos watchos tvos 平台,它替代原来的 objective c,语法更加简洁安全,同时支持面向对象和函数式编程,swift 和 objective c 可以在同一个项目混合编写,新手入门 swift 不需要一开始就完全抛弃老代码,swift 从发布之后持续迭代更新,现在已经开源,不仅可以开发苹果原生应用,也能做服务端 swift 项目,学习 swift 是想做 iphone ipad mac 应用开发的必备基础,相比 objective c,swift 去掉了很多繁琐分号指针写法,增加可选类型值类型闭包这些现代特性,编译速度更快,内存安全更强,但是 swift 版本更新比较频繁,不同版本语法和 api 会有变动,学习的时候要确认对应的 xcode 版本,教程配套版本保持一致,不然代码很容易报错。
swift 基础信息
| 项目 | 内容 |
|---|---|
| 名称 | swift |
| 开发方 | 苹果公司 |
| 运行平台 | ios macos watchos tvos 服务端 |
| 前身 | objective c |
| 开发工具 | xcode |
| 编程范式 | 面向对象 函数式编程 |
| 开源状态 | 已经开源 |
swift 核心特性
可选类型 optional,用来处理值可能为空的情况,减少空指针崩溃,这是 swift 最重要的特色之一。
类型推断,写代码的时候很多地方不需要手动标注类型,编译器可以自动识别。
值类型和引用类型区分,struct 属于值类型,class 属于引用类型。
闭包,类似其他语言的匿名函数,可以作为参数传递。
安全语法,强制解包有严格规则,降低运行时崩溃概率。
和 objective c 互通,老项目可以逐步迁移 swift,不用一次性全部重写。
入门学习步骤
第一步 准备开发环境
在苹果电脑上安装 xcode,xcode 里面自带 swift 编译器和模拟器,windows 系统原生不能直接开发 swift 苹果应用,这点是新手最容易踩坑的地方。
第二步 掌握基础语法
依次学习常量 let 变量 var 基本数据类型 数组字典 条件判断 if switch 循环 for while 函数定义。
let 代表常量,定义之后不能修改,var 代表变量,可以重新赋值,这是 swift 最基础的关键字。
第三步 学习可选类型
重点吃透 optional 问号 感叹号强制解包 可选绑定 if let guard let,这部分是 swift 学习难点,也是后续写项目最常用内容。
第四步 学习面向对象
掌握 class struct 协议 protocol 继承 扩展 extension,swift 里面协议是非常核心的设计思想,很多框架都是基于协议搭建。
第五步 界面开发
学习 uikit 或者 swiftui,swiftui 是苹果新一代声明式界面框架,现代 swift 教程大多优先推荐 swiftui,uikit 属于传统框架,老项目使用非常多。
第六步 实战小项目
完成计算器 待办列表 简单列表页面这类小 demo,熟悉 xcode 调试断点,模拟器运行,理解视图控制器生命周期。
第七步 进阶内容
学习内存管理 arc 自动引用计数 多线程 网络请求 持久化存储,之后可以尝试上架 app 相关流程。
swift 和 objective c 对比
| 对比项 | swift | objective c |
|---|---|---|
| 语法 | 简洁现代 | 写法繁琐 |
| 空安全 | 原生可选类型 | 空指针风险高 |
| 学习难度 | 新手友好 | 语法老旧入门偏难 |
| 生态 | 新项目首选 | 大量历史老项目 |
学习总结
swift 是苹果生态原生开发主力语言,新手学习 swift 优先安装 xcode,先吃透基础语法和可选类型,再选择 swiftui 或者 uikit 做界面开发,注意 swift 版本迭代快,教程代码一定要和 xcode 版本匹配,如果是老教程代码报错,优先检查版本差异,想做 ios 应用开发,swift 是现在主流选择,老 objective c 项目可以了解但是新项目基本都使用 swift 编写。
【常见问题】
问题 1 swift 一定要苹果电脑才能学习吗
回答 1 开发苹果平台应用的 swift,正常需要苹果电脑安装 xcode,windows 不能原生运行完整 swift 苹果开发环境,学习 swift 纯语法虽然有在线编辑器,但是做界面项目还是需要 mac。
问题 2 swift 和 swiftui 是什么关系
回答 1 swift 是编程语言,swiftui 是基于 swift 语言的界面开发框架,swiftui 使用 swift 语法来写界面,学习 swift 之后才可以学习 swiftui。
问题 3 swift 里面 let 和 var 有什么区别
回答 1 swift 里面 let 定义常量,赋值之后不能修改,var 定义变量,后续可以重新赋值,是 swift 基础语法最核心知识点。
问题 4 swift 可以开发安卓应用吗
回答 1 swift 原生设计是苹果生态,不能直接开发安卓原生应用,虽然有第三方方案可以移植,但是不是官方推荐方式,swift 主要用途还是苹果平台开发。
【免责申明】
本内容仅作为 swift 教程 swift 介绍学习参考,swift 版本持续更新,不同版本语法 api 存在差异,学习请以苹果官方文档为准,本内容不作为开发项目的官方标准规范。


