![](https://img-blog.csdnimg.cn/direct/61205fde179d4caba3926771b0714f04.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Swift 教程V5.5
文章平均质量分 92
Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。
xiaoxiaobukuang
欢迎大家提意见
展开
-
Swift 泛型
泛型代码让你能根据自定义的需求,编写出适用于任意类型的、灵活可复用的函数及类型。你可避免编写重复的代码,而是用一种清晰抽象的方式来表达代码的意图。泛型是 Swift 最强大的特性之一,很多 Swift 标准库是基于泛型代码构建的。实际上,即使你没有意识到,你也一直在语言指南中使用泛型。例如,Swift 的Array和Dictionary都是泛型集合。你可以创建一个Int类型数组,也可创建一个String类型数组,甚至可以是任意其他 Swift 类型的数组。原创 2024-06-12 15:16:12 · 900 阅读 · 0 评论 -
Swift 协议
协议定义了一个蓝图,规定了用来实现某一个特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以遵循协议,并为协议定义的这些要求提供具体实现。某个类型能够满足某个协议的要求,就可以说该类型遵循这个协议。除了遵循协议的类型必须实现的要求外,还可以对协议进行扩展,通过扩展来实现一部分要求或者实现一些附加功能,这样遵循协议的类型就能够使用这些功能。原创 2024-06-04 16:14:17 · 809 阅读 · 0 评论 -
Swift 扩展
拓展可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有不需要访问被扩展类型源代码就能完成扩展的哪里(即逆向建模)。扩展和 Objective-C 的分类很相似。(与 Objective-C 分类不同的是,Swift 扩展是没有名字的。在 Swift 中,你甚至可以扩展协议以提供其需要的实现,或者添加额外功能给遵循的类型所使用。你可以从 协议扩展 获取更多细节。注意扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。原创 2024-06-03 15:31:40 · 375 阅读 · 0 评论 -
Swift 嵌套类型
枚举常被用于为特定类或结构体实现某些功能。类似地,枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义多级嵌套。原创 2024-06-03 10:19:34 · 328 阅读 · 0 评论 -
Swift 类型转换
你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组,作为类型转换的例子。第一个代码片段定义了一个新的基类MediaItem。这个类为任何出现在数字媒体库的媒体项提供基础功能。特别的,它声明了一个String类型的name属性,和一个初始化器。(假定所有的媒体项都有个名称。下一个代码段定义了MediaItem的两个子类。第一个子类Movie。原创 2024-05-31 17:28:33 · 946 阅读 · 0 评论 -
Swift 并发
异步函数或异步方法是一种能在运行中被挂起的特殊函数或方法。对于普通的同步函数或方法来说,它们只能运行到完成闭包、抛出错误或者永远不返回。异步函数或方法也能做到这三件事,但同时也可以在等待其他资源的时候挂起。在异步函数或者方法的函数体中,你可以标记其中的任意位置是可以被挂起的。为了标记某个函数或者方法是异步的,你可以在它的声明中的参数列表后边加上async关键字,和使用throws关键字来标记throwing函数是类似的。如果一个函数或方法有返回值,可以在返回箭头(->)前添加async关键字。原创 2024-05-31 16:21:15 · 1125 阅读 · 0 评论 -
Swift 错误处理
错误处理(Error handing)是响应错误以及从错误中恢复的过程。Swift 在运行时提供了抛出、捕获、传递和操作可恢复错误(recoverable errors)的一等支持(first-class support)。某些操作无法保证总是执行完所有代码或生成有用的结果。可选类型用来表示值缺失,但是当某个操作失败时,理解造成失败的原因有助于你的代码做出相应的应对。原创 2024-05-30 10:45:51 · 816 阅读 · 0 评论 -
Swift 可选链式调用
通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法和下标。下面这段代码定义了四个模型类,这些例子包括多层可选链式调用。为了方便说明,在Person和Residence的基础上增加了Room类和Address类,以及相关的属性、方法以及下标。PersonResidence类比之前复杂些,增加了一个名为rooms的变量属性,该属性被初始化为[Room]get {set {现在Residence有了一个存储Room实例的数组,原创 2024-05-30 09:29:24 · 536 阅读 · 0 评论 -
Swift 析构过程
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来表示,类似于构造器要用init来表示。原创 2024-05-29 15:26:42 · 424 阅读 · 0 评论 -
Swift 构造过程
你可以通过输入形参和可选属性类型来自定义构造过程,也可以在构造过程中分配常量属性。这些都将在后面章节中提到。原创 2024-05-29 14:26:20 · 1817 阅读 · 1 评论 -
Swift 继承
不继承于其它类的类,称之为基类。注意Swift 中的类并不是从一个通用的基类继承而来的。如果你不为自己定义的类指定一个超类的话,这个类就会自动成为基类。下面的例子定义了一个叫Vehicle的基类。这个基类声明了一个名为,默认值是0.0的存储型属性(属性类型推断为Double属性的值被一个String类型的只读计算型属性使用,用来创建对于车辆的描述。Vehicle基类还定义了一个名为makeNoise的方法。这个方法实际上不为Vehicle实例做任何事,但之后将会被Vehicle。原创 2024-05-28 13:43:34 · 872 阅读 · 0 评论 -
Swift 下标
下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。举例来说,用下标访问一个Array实例中的元素可以写作,访问Dictionary实例中的元素可以写作。一个类型可以定义多个下标,通过不同索引类型进行对应的重载。下标不限于一维,你可以定义具有多个入参的下标满足自定义类型的需求。原创 2024-05-28 11:26:23 · 1110 阅读 · 0 评论 -
Swift 方法
方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实力封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods) 相似。结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一。在 Objective-C 中,类是唯一能定义方法的类型。原创 2024-05-27 17:20:06 · 733 阅读 · 0 评论 -
Swift 属性
属性将值与特定的类、结构体或枚举关联。存储属性会将常量和变量存储为实例的一部分,而计算属性则是直接计算(而不是存储)值。计算属性可以用于类、结构体和枚举,而存储属性只能用于类和结构体。存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接与类型本身关联,这种属性称为类型属性。另外,还可以定义属性观察器来监控属性值的变化,以此来触发自定义的操作。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。你也可以利用属性包装器来复用多个属性的getter和setter。原创 2024-05-27 15:18:45 · 1112 阅读 · 0 评论 -
Swift 类和结构体
结构体和类有着相似的定义方式。你通过struct关键字引入结构体,通过class// 在这里定义结构体// 在这里定义类注意每当你定义一个新的结构体或者类时,你都是定义了一个新的 Swift 类型。请使用这种方式来命名类型(如这里的SomeClass和),以便符合标准 Swift 类型的大写命名风格(如StringInt和Bool请使用这种方式来命名属性和方法(如frameRate和),以便和类型名区分。在上面的示例中定义了一个名为Resolution的结构体,用来描述基于像素的分辨率。原创 2024-05-24 14:09:27 · 883 阅读 · 0 评论 -
Swift 枚举
枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。如果你熟悉 C 语言,你会知道在 C 语言中,枚举会为一组整型值分配相关联的名称。Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为原始值),则该值的类型可以是字符串、字符,或是一个整型值或浮点数。此外,枚举成员可以指定任意类型的关联值存储到枚举成员中,就像其他语言中的联合体(unions)和变体(variants)。原创 2024-05-24 11:10:22 · 741 阅读 · 0 评论 -
Swift 闭包
必报是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)一级其他一些编程语言中的匿名函数(Lambdas)比较相似。闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。Swift 会为你管理在捕获过程中涉及到的所有内存操作。在Swift 的闭包表达式拥有简洁的风格,并鼓励在常见场景中进行语法优化,主要优化如下return。原创 2024-05-10 16:47:29 · 507 阅读 · 0 评论 -
Swift 函数
当你定义一个函数时,你可以定义一个或多个有名字的类型的值,作为函数的输入,称为参数,也可以定义某种类型的值作为函数执行结束时的输出,称为返回类型。每个函数有个函数名,用来描述函数执行的任务。要使用一个函数时,用函数名来“调用”这个函数,并传给它匹配的输入值(称作实参)。函数的实参必须与函数参数表里参数的顺序一致。下面例子中的函数的名字是,之所以叫这个名字,是因为这个函数用一个人的名字当做输入,并返回向这个人问候的语句。为了完成这个任务,你需要定义一个输入参数——一个叫做person的String。原创 2024-05-10 10:33:15 · 790 阅读 · 0 评论 -
Swift 控制流
Swift 提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不同代码分支的ifguard和Switch语句,还有控制流程跳转到其他代码位置的break和continue语句。Swift 还提供了for-in循环,用来更简单地遍历数组(Array),字典(Dictionary),区间(Range),字符串(String)和其他序列类型。Swift 的Switch语句比许多类C语言要更加强大。case还可以匹配很多不同的模式,包括范围匹配,元组(tuple。原创 2024-05-09 16:25:41 · 889 阅读 · 0 评论 -
Swift 集合类型
Swift 语言提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型用来存储集合数据。数组是有序数据的集。集合是无序无重复数据的集。字典是无序的键值对的集。Swift 中的数组、集合和字典必须明确其中保存的键和值类型,这样就可以避免插入一个错误数据类型的值。同理,对于获取到的值你也可以放心,其数据类型是确定的。注意:Swift 的数组、集合和字典类型被实现为泛型集合。原创 2024-05-09 14:34:08 · 784 阅读 · 2 评论 -
Swift 字符串和字符
字符串是一系列字符的集合,例如。Swift 的字符串通过String类型来表示。而String内容的访问方式有多种,例如以Character值的集合。Swift 的String和Character类型提供了一种快速且兼容Unicode的方式来处理代码中的文本内容。创建和操作字符串的语法与C语言中字符串操作相似,轻量并且易读。通过符号就可以非常简单的实现两个字符串的拼接操作。与 Swift 中其他值一样,能否更改字符串的值,取决于其被定义为常量还是变量。原创 2024-05-08 13:58:33 · 1100 阅读 · 0 评论 -
Swift 基本运算符
运算符是检查、改变、合并值的特殊符号或短语。例如,加号(+)将两个数相加(如 let i = 1 + 2)。更复杂的运算例子包括逻辑与运算符 &&(如 if enteredDoorCode && passedRetinaScan)。Swift 所支持运算符你可能在别的语言比如 C 语言里已经认识了,同时为了减少常见编码错误对它们做了部分改进。如:赋值符(=)不再有返回值,这样就消除了手误将判等运算符(==)写成赋值符导致代码错误的缺陷。原创 2024-05-08 10:38:46 · 1017 阅读 · 0 评论 -
Swift 基础部分
Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。Swift 包含了 C 和 Objective-C 上所有基础数据类型,Int 表示整型值;Double 和 Float 表示浮点型值;Bool 是布尔型值;String 是文本型数据。Swift 还提供了三个基本的集合类型,Array、Set 和 Dictionary ,详见 集合类型。原创 2024-05-07 16:28:14 · 942 阅读 · 0 评论