开始
上一节,了解到了如何通过 Xcode 创建出了第一个 iOS 项目,创建项目的过程中,可以发现,iOS 项目开发中,使用到了 Swift 编程语言。苹果生态链中,苹果开发出了很多开发工具,其中包括 Objective-C [简称OC] 和 Swift。 从零开始学习 iOS 开发,可以从 Swift 开始开发。这也是苹果官方推荐的入门方式。
认识 Swift
Swift 是苹果公司 2014 年推出的现代化编程语言,专为 iOS、macOS 等苹果生态开发设计,完美替代 Objective-C。它语法简洁易读、安全性高,内置内存自动管理、类型推断等特性,大幅降低崩溃风险。兼具高性能与开发效率,支持面向对象、函数式编程,是苹果平台开发的首选语言,持续迭代更新且生态成熟。
同时,Swift 也是一个图灵完备的语言,理论上,你可以使用 Swift 做任何其他编程语言的事情。 Swift 编程语言于 2015 年 12 月 3 日正式开源,开源地址为 GitHub(github.com/apple/swift… Linux 等操作系统,极大拓展了应用场景。你甚至可以找到使用 Swift 开发的后端服务框架。
入门 Swift
安装好 Xcode 之后,正常情况下也会自动安装好 Swift 环境,可以点开 MacOS 的命令行。输入 swift 命令,如果看到如下输出,说明已经安装好了 Swift 环境。
~ swift
Welcome to Swift!
Subcommands:
swift build Build Swift packages
swift package Create and work on packages
swift run Run a program from a package
swift test Run package tests
swift repl Experiment with Swift code interactively
...
Hello World
编程语言的第一课往往都是学习如何输出一句 Hello World 开始的,接下来,看看如何通过 Swift 输出 Hello World。
首先,可以新建一个文件,命名为 hello.swift,这里需要注意的是,文件后缀一定要是 swift。这样编译器能识别出代码文件。打开文件输入如下代码:
print("Hello World!")
接下来需要运行代码,运行的方式有两种:
- swiftc 命令: 这是调用 swift 的编译器,将源文件编译为可执行文件。
- swift 直接带文件: 原先是 swift run,现在逐渐被弃用,可以直接通过 swift 加代码文件的方式运行,相当于直接编译生成了临时文件并且运行了这个临时的可执行文件。
下面是示例代码:
# 通过 swift 命令直接运行
~ swift hello.swift
Hello, World!
# 通过 swiftc 命令编译运行
~ swiftc hello.swift
~ ll
total 32
-rwxr-xr-x 1 staff 9.1K 3月 16 20:06 hello
-rw-r--r-- 1 staff 26B 3月 16 20:09 hello.swift
~ ./hello
Hello, World!
这里大致解释一下 swiftc 的命令过程。
- 通过
swiftc命令,编译了 hello.swift 代码文件,编译成功无报错,就什么也没有显示。 - 通过
ll命令查看当前目录下的文件,可以看到多出了一个 hello 的文件 - 可以看出来系统对 hello 文件的描述为
-rwxr-xr-x,这是一种 UNIX 系统对文件权限的描述,其中结尾的x代表着,这个文件有执行的权限。 - 通过
./hello命令执行,其中./表示当前目录下
这样就完成 Swift 语言的 Hello World。
Hello World 语法分析
了解完编写 Hello World 之后,就可以开始入门 Swift 语言了,从刚刚输出的 Hello World! 中,我们从中可以看出来一些特点。
- Swift 语句末尾不需要带分号
- 输出函数
print()没有引入包,说明这是系统默认的引入或者本身自带输出函数。
注释
注释是代码中不可或缺的内容,上一节中,看到了新建的 iOS 项目中的代码就有很多注释。注释不会参与代码执行,也不会被编译,只是起到辅助人读取代码。
Swift 中包含两种注释,多行注释和单行注释
/* 这是一条单行注释
这个注释跨行了 */
// 这是单行注释
变量与常量
Swift 使用两个关键字来声明变量和常量
- **变量: ** 变量是声明初始化后,还可以修改的量,使用
var来声明 - **常量: ** 常量是声明初始化后,就允许修改了,如果代码中出现修改的行为,会报错。常量使用
let声明。
Swift 变量和常量,也支持先声明,后赋值。有关常量和变量的使用,可以看如下的例子:
// 声明了一个常量 numberExpA 并完成赋值
let numberExpA = 100
// 声明了一个 Int 类型的常量 numberExpB 之后再完成赋值
let numberExpB: Int
numberExpB = 101
// 如果给赋值好的常量再次赋值,相遇奥改变这个常量的值会报错
numberExpB = 102
// error: immutable value 'numberExpB' may only be initialized once
// 通过 var 声明一个变量并完成赋值
var numberExpC = 100
// 声明了变量 numberExpD 并定义为 Int 类型, 之后完成了赋值
var numberExpD: Int
numberExpD = 101
// 变量可以修改值,现在将变量 numberExpD 修改为 102,并输出
numberExpD = 102
print(numberExpD)
// 输出结果为 102
// 如果一行有多条语句的话,需要使用分号区分隔开
let a = 1; let b = 2; let c = 3
命名约定:
- 使用驼峰命名法(camelCase)
- 变量和函数名首字母小写
- 类型名首字母大写
- 常量可以使用全大写(用下划线分隔)
可以看一组例子:
let userId = 12
let username = "nick"
let isValid = false
这里分别通过 let 声明了三个常量,通过自动类型推导,Swift 编译器可以自动推导出 userId 是整型,username 是字符串,isValid 是布尔类型。同时,这几个变量名称,都符合命名规范。
关键字
在实践中学习,遇到一个了解一个就可以。不过可以了解一下基础概念。
关键字是类似于标识符的保留字符序列,除非用重音符号 ` 将其括起来,否则不能用作标识符。关键字是对编译器具有特殊意义的预定义保留标识符。常见的关键字有以下 4 种。
- 声明变量相关的,例如 let/var 等
- 类型和表达式相关的,例如 struct/class/as/true/false 等
- 分支判断流程相关的,例如 if/for/break/swich/case 等
- 其他的
数据类型
Swift 中包含很多数据类型,常用的数据类型包括
Int整型: Int/Int32/Int64, 32为系统中 Int 和 Int32 一致, 64 位系统中 Int 和 Int64 一致。Float和Double浮点数: Float为32位浮点数,Double为64位浮点数,又叫双精度,但不管使用什么浮点类型,都不能计算精确值,比如钱数等。Bool布尔类型: 布尔类型表示逻辑值,比如比较大小的结果 true 和 false 就是布尔的两个值。String字符串: 多个字符的集合。例如"hello world"Character字符: 表示一个字母或者"字"。 例如"h"
结尾
这里就了解了 Swift 的基础,通过这些基础知识,后续可以满足在开始开发中,不至于手忙脚乱。