iOS 学习笔记 - Swift 编程基础

23 阅读6分钟

开始

上一节,了解到了如何通过 Xcode 创建出了第一个 iOS 项目,创建项目的过程中,可以发现,iOS 项目开发中,使用到了 Swift 编程语言。苹果生态链中,苹果开发出了很多开发工具,其中包括 Objective-C [简称OC]Swift。 从零开始学习 iOS 开发,可以从 Swift 开始开发。这也是苹果官方推荐的入门方式。

认识 Swift

Swift 是苹果公司 2014 年推出的现代化编程语言,专为 iOSmacOS 等苹果生态开发设计,完美替代 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 的命令过程。

  1. 通过 swiftc 命令,编译了 hello.swift 代码文件,编译成功无报错,就什么也没有显示。
  2. 通过 ll 命令查看当前目录下的文件,可以看到多出了一个 hello 的文件
  3. 可以看出来系统对 hello 文件的描述为 -rwxr-xr-x,这是一种 UNIX 系统对文件权限的描述,其中结尾的 x 代表着,这个文件有执行的权限
  4. 通过 ./hello 命令执行,其中 ./ 表示当前目录下

这样就完成 Swift 语言的 Hello World

Hello World 语法分析

了解完编写 Hello World 之后,就可以开始入门 Swift 语言了,从刚刚输出的 Hello World! 中,我们从中可以看出来一些特点。

  1. Swift 语句末尾不需要带分号
  2. 输出函数 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 一致。
  • FloatDouble 浮点数: Float为32位浮点数,Double为64位浮点数,又叫双精度,但不管使用什么浮点类型,都不能计算精确值,比如钱数等。
  • Bool布尔类型: 布尔类型表示逻辑值,比如比较大小的结果 true 和 false 就是布尔的两个值。
  • String 字符串: 多个字符的集合。例如 "hello world"
  • Character 字符: 表示一个字母或者"字"。 例如 "h"

结尾

这里就了解了 Swift 的基础,通过这些基础知识,后续可以满足在开始开发中,不至于手忙脚乱。