![](https://img-blog.csdnimg.cn/20190712160731931.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Swift5.1基础知识
该栏目主要记录了本人根据官方文档自学Swift的学习笔记及心得,它既可以为初学者提供入门帮助,又方便自己后期查询知识点,本人才疏学浅,如有错误或不准确之处,希望诸位大神多多指教。
JaryPan
keep coding...
展开
-
Swift learning part 1 - 基础部分
基础部分常量和变量声名常量和变量类型标注常量和变量的命名输出常量和变量注释功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导...原创 2019-07-15 11:45:46 · 261 阅读 · 0 评论 -
Swift learning part 2 - 基本运算符
基本运算符术语赋值运算符算术运算符求余运算符一元运算符组合赋值运算符比较运算符三元运算符空合运算符区间运算符闭区间运算符半开区间运算符单侧区间逻辑运算符逻辑非运算符逻辑与运算符逻辑或运算符逻辑运算符组合计算使用括号来明确优先级运算符是检查、改变、合并值的特殊符号或短语,Swift 支持大部分标准 C 语言的运算符,且改进了许多特性来减少常规编码错误。如:赋值符 (=) 不返回值,以防止想要把判断...原创 2019-07-15 15:07:38 · 1492 阅读 · 0 评论 -
Swift learning part 3 - 字符串和字符
字符串和字符字符串字面量多行字符串字面量字符串字面量的特殊字符扩展字符串分隔符初始化空字符串字符串可变性字符串是值类型使用字符连接字符串和字符字符串插值计算字符数量访问和修改字符串字符串索引插入和删除子字符串比较字符串字符串/字符相等前缀/后缀相等字符串是诸如 “hello, world”,“abcdefg” 这样有序的字符(Character)类型的值的集合,通过 String 类型来表示。...原创 2019-07-15 17:08:37 · 1520 阅读 · 0 评论 -
Swift learning part 4 - 集合类型
集合类型集合的可变性数组(Arrays)数组的简单语法创建一个空数组创建一个带有默认值的数组通过两个数组相加创建一个数组用数组字面量构造数组访问和修改数组数组的遍历集合(Sets)集合类型的哈希值集合类型语法创建和构造一个空的集合用数组字面量创建集合访问和修改一个集合遍历一个集合集合操作基本集合操作集合成员关系和相等字典字典类型简化语法创建一个空字典用字典字面量创建字典访问和修改字典字典遍历Sw...原创 2019-07-15 23:22:58 · 1459 阅读 · 0 评论 -
Swift learning part 5 - 控制流
控制流For-In 循环While 循环WhileRepeat-While条件语句IfSwitch不存在隐式的贯穿区间匹配元组值绑定(Value Bindings)Where复合匹配控制转移语句ContinueBreak循环语句中的 breakSwitch 语句中的 break贯穿(Fallthrough)带标签的语句提前退出检测 API 可用性Swift 提供了多种流程控制结构,包括可以多次执...原创 2019-07-16 09:40:30 · 1525 阅读 · 0 评论 -
Swift learning part 6 - 函数
文章目录函数的定义与调用函数参数与返回值无参数函数多参数函数无返回值函数多重返回值函数可选元组返回类型隐式返回的函数函数参数标签和参数名称指定参数标签忽略参数标签默认参数值可变参数输入输出参数函数类型使用函数类型函数类型作为参数类型函数类型作为返回类型嵌套函数函数是一段完成特定任务的独立代码片段。你可以通过给函数命名来标识某个函数的功能,这个名字可以被用来在需要的时候"调用"这个函数来完成它的任...原创 2019-07-16 16:30:14 · 1647 阅读 · 0 评论 -
Swift learning part 7 - 闭包
文章目录闭包表达式排序方法闭包表达式语法根据上下文推断类型单表达式闭包的隐式返回参数名称缩写运算符方法尾随闭包值捕获闭包是引用类型逃逸闭包自动闭包闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数比较相似。闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量...原创 2019-07-17 00:10:34 · 1442 阅读 · 0 评论 -
Swift learning part 8 - 枚举
文章目录枚举语法使用 Switch 语句匹配枚举值枚举成员的遍历关联值原始值原始值的隐式赋值使用原始值初始化枚举实例递归枚举枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。C 语言中,枚举会为一组整型值分配相关联的名称。Swift 中的枚举更加灵活,不必给每一个枚举成员提供值,若提供则该值的类型可以是字符串、字符、整型或浮点数。此外,枚举成员可以指定任...原创 2019-07-17 11:47:19 · 1474 阅读 · 0 评论 -
Swift learning part 9 - 类和结构体
文章目录结构体和类对比类型定义的语法结构体和类的实例属性访问结构体类型的成员逐一构造器结构体和枚举是值类型类是引用类型恒等运算符指针类和结构体的选择字符串、数组、和字典类型的赋值与复制行为类和结构体是构建代码所用的一种通用且灵活的构造体。可以使用完全相同的语法规则来为类和结构体定义属性(常量、变量)和添加方法。通常一个类的实例被称为对象,在 Swift 中,类和结构体的关系比在其他语言中更加密切...原创 2019-07-17 14:20:29 · 1507 阅读 · 0 评论 -
Swift learning part 10 - 属性
文章目录存储属性常量结构体实例的存储属性延时加载存储属性存储属性和实例变量计算属性简化 Setter 声明简化 Getter 声明只读计算属性属性观察器全局变量和局部变量类型属性类型属性语法获取和设置类型属性的值属性将值和特定的类、结构体或枚举关联。存储属性存储常量或变量作为实例的一部分,计算属性计算(不是存储)一个值。计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。存储属性和计...原创 2019-07-17 17:01:27 · 1539 阅读 · 0 评论 -
Swift learning part 11 - 方法
文章目录实例方法(Instance Methods)self 属性在实例方法中修改值类型在可变方法中给 self 赋值类型方法方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似。结构体和...原创 2019-07-18 08:33:10 · 1416 阅读 · 0 评论 -
Swift learning part 12 - 下标
文章目录下标语法下标用法下标选项类型下标下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引设置和获取值,而不需要再调用对应的存取方法。一个类型可以定义多个下标,通过不同索引类型进行重载,下标不限于一维,可以定义具有多个入参的下标。下标语法下标允许通过在实例名称后面的方括号中传入一个或多个索引值来对实例进行存取。定义下标使用 subscript 关键...原创 2019-07-18 16:58:57 · 1492 阅读 · 0 评论 -
Swift learning part 13 - 继承
文章目录定义一个基类子类生成重写访问超类的方法、属性及下标重写方法重写属性重写属性的 Getters 和 Setters重写属性观察器防止重写一个类可以继承另一个类的方法、属性和其它特性。当一个类继承其它类时,继承类叫子类,被继承类叫超类(或父类)。在 Swift 中,继承是区分 类 与其它类型的一个基本特征。在 Swift 中,类可以调用和访问超类的方法、属性和下标,并且可以重写这些方法、属...原创 2019-07-18 23:53:12 · 1442 阅读 · 0 评论 -
Swift learning part 14 - 构造过程
文章目录存储属性的初始赋值构造器默认属性值自定义构造过程构造参数参数标签和参数名称不带参数标签的构造器参数可选属性类型构造过程中常量属性的赋值默认构造器结构体的逐一成员构造器值类型的构造器代理类的继承和构造过程指定构造器和便利构造器指定构造器和便利构造器的语法类的构造器代理两段式构造过程构造器的继承和重写构造器的自动继承指定构造器和便利构造器实践可失败构造器枚举类型的可失败构造器带原始值的枚举类型...原创 2019-07-19 16:22:04 · 1517 阅读 · 0 评论 -
Swift learning part 15 - 析构过程
文章目录析构过程原理析构器实践析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字 deinit 来标示,类似于构造器要用 init 来标示。析构过程原理Swift 通过自动引用计数(ARC)处理实例的内存管理,并且会自动释放不再需要的实例以释放资源。通常当你的实例被释放时你不需要手动地去清理,但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创...原创 2019-07-23 10:10:22 · 1412 阅读 · 0 评论 -
Swift learning part 16 - 可选链
文章目录使用可选链式调用代替强制展开为可选链式调用定义模型类通过可选链式调用访问属性通过可选链式调用来调用方法通过可选链式调用访问下标访问可选类型的下标连接多层可选链式调用在方法的可选返回值上进行可选链式调用可选链式调用是一种可以在当前值可能为 nil 的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是 nil,那么调用将返回 nil。多个调用可以连接在一...原创 2019-07-23 13:34:26 · 1430 阅读 · 0 评论 -
Swift learning part 17 -错误处理
文章目录表示与抛出错误处理错误用 throwing 函数传递错误用 Do-Catch 处理错误将错误转换成可选值禁用错误传递指定清理操作错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 在运行时提供了对可恢复错误进行抛出、捕获、传递和操作等支持。某些操作无法保证总是执行完所有代码或总是生成有用的结果。可选类型可用来表示值缺失,但是当某个操作失败时,理解造成失...原创 2019-07-23 16:17:34 · 1431 阅读 · 0 评论 -
Swift learning part 18 - 类型转换
文章目录为类型转换定义类层次检查类型向下转型Any 和 AnyObject 的类型转换类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。类型转换在 Swift 中使用 is 和 as 操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。也可以用它来检查一个类型是否实现了某个协议。为类型转换定义类层次可以将类型转换用在类和子类的层次结构上,检查特...原创 2019-07-24 10:07:14 · 1819 阅读 · 0 评论 -
Swift learning part 19 - 嵌套类型
文章目录嵌套类型实践引用嵌套类型枚举常被用于为特定类或结构体实现某些功能。类似地,枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的 {} 内,而且可以根据需要定义多级嵌套。嵌套类型实践下面例子定义一个结构体 Blackj...原创 2019-07-24 14:56:44 · 1476 阅读 · 0 评论 -
Swift learning part 20 - 扩展
文章目录扩展的语法计算型属性构造器方法可变实例方法下标嵌套类型扩展可以为一个已有的类、结构体、枚举或者协议添加新功能。它还具有在不访问被扩展类型的原始源代码的情况下完成扩展的能力(即 逆向建模 )。扩展和 Objective-C 中的分类类似。但是,与 Objective-C 不同的是,Swift 的扩展没有名字。Swift 中的扩展可以:添加计算型实例属性和计算型类型属性定义实例方法和类...原创 2019-07-24 16:43:15 · 1450 阅读 · 0 评论 -
Swift learning part 21 - 协议
文章目录协议语法属性要求方法要求Mutating 方法要求构造器要求协议构造器要求的类实现可失败构造器要求协议作为类型委托(代理)模式在扩展里添加协议遵循有条件地遵循协议在扩展里声明采纳协议协议类型的集合协议的继承类类型专属协议协议合成检查协议一致性可选的协议要求协议扩展提供默认实现为协议扩展添加限制条件协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、...原创 2019-08-01 14:14:14 · 1482 阅读 · 0 评论 -
Swift learning part 22 - 泛型
文章目录泛型解决的问题泛型函数类型参数命名类型参数泛型类型泛型扩展类型约束类型约束语法类型约束实践关联类型关联类型实践扩展现有类型来指定关联类型约束关联类型在关联类型约束里使用协议泛型 Where 语句具有泛型 Where 子句的扩展具有泛型 Where 子句的关联类型泛型下标泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象...原创 2019-08-03 23:53:56 · 1488 阅读 · 0 评论 -
Swift learning part 23 - 自动引用计数
文章目录自动引用计数的工作机制自动引用计数实践类实例之间的循环强引用解决实例之间的循环强引用弱引用无主引用无主引用和隐式解包可选值属性闭包的循环强引用解决闭包的循环强引用定义捕获列表弱引用和无主引用Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。通常情况下,Swift 内存管理机制会一直起作用,你无须自己来考虑内存的管理。然而在少数情况下,为了能帮助你管理内存,ARC ...原创 2019-08-06 08:47:40 · 1442 阅读 · 0 评论 -
Swift learning part 24 - 内存安全
文章目录理解内存访问冲突内存访问性质In-Out 参数的访问冲突方法里 self 的访问冲突属性的访问冲突默认情况下,Swift 会阻止你代码里不安全的行为。例如,Swift 会保证变量在使用之前就完成初始化,在内存被回收之后就无法被访问,并且数组的索引会做越界检查。Swift 也保证同时访问同一块内存时不会冲突,通过约束 代码里对于存储地址的写操作,获取那块内存的访问独占权。因为 Swift...原创 2019-08-06 15:33:55 · 1488 阅读 · 0 评论 -
Swift learning part 25 - 访问控制
文章目录模块和源文件访问级别访问级别基本原则默认访问级别单 target 应用程序的访问级别框架的访问级别单元测试 target 的访问级别访问控制语法自定义类型元组类型函数类型枚举类型嵌套类型子类常量、变量、属性、下标Getter 和 Setter构造器默认构造器结构体默认的成员逐一构造器协议协议继承协议遵循ExtensionExtension 的私有成员泛型类型别名访问控制可以限定其它源文件...原创 2019-08-07 15:52:11 · 1446 阅读 · 0 评论 -
Swift learning part 26 - 高级运算符
文章目录位运算符按位取反运算符按位与运算符按位或运算符按位异或运算符按位左移、右移运算符无符号整数的移位运算有符号整型的移位运算溢出运算符值溢出优先级和结合性运算符函数前缀和后缀运算符复合赋值运算符等价运算符自定义运算符自定义中缀运算符的优先级和结合性作为基本运算符的补充,Swift 提供了一些对数值进行复杂运算的高级运算符。它们包含了在 C 和 Objective-C 中已经被大家所熟知的位运...原创 2019-08-08 13:40:30 · 1588 阅读 · 0 评论